Amethyst 0.9 was just released. Amethyst is a Rust powered data driven open source game engine built for highly parallel and performant code and implements an Entity Component System. The 0.9 release included a new way to draw sprites, a new networking system, an experimental runtime editor support and more.
Complete details of the release from the release notes:
Added
- Added base networking implementation and the
amethyst_network
crate. (#969)- Support for debug lines using
DebugLines
pass, andDebugLines
component or resource. (#917, #957)- Added JsonFormat (#950).
SpriteRender
pass to draw sprites without usingMaterial
andMesh
. (#829, #830)- Sprite animation uses the
SpriteRenderChannel
. (#829, #830)- State::handle_event can now handle multiple types of events. (#887)
- Added Named Component. (#879)(#896)
- Support for progressive jpeg loading. (#877)
- New
application_root_dir()
function inamethyst_utils
. (#831)- Load node names for glTF prefabs. (#905)
- Added automatic camera matrix resizing to allow clean screen resizes. (#920)
- Added the Removal component to facilitate manual entity removal and scene cleaning. (#920)
- Added DestroyAtTime and DestroyInTime components to easily destroy entities. (#920)
- Support for loading TGA images. (#934)
- GltfPrefab adds MeshData as a component on loaded entities. This is not configurable until the Prefab rework. (#946)
- Added implementation of From<Vector3> for Transform which creates a Transform using Vector3 as the translation vector. (#946)
- New vertices() method on MeshCreator trait. (#946)
- Support for text alignment (align left, center, right). (#965)
- Support for multiline text. (#965)
- Added custom aspect ratio to OrthoCamera. (#983)
- Added AntiStorage documentation to the book. (#997)
- You can now stop the rotation of the FreeRotationSystem by setting HideCursor.hide value to false. (#997)
- Support for logging to file, toggle for logging to stdout. (#976, #994)
- Added a
Hidden
Component, that hides a single entity, and a HideHierarchySystem that togglesHidden
on all children when used. (#1001)- Documentation for drawing sprites. (#971)
- Added
shadow_update()
andshadow_fixed_update()
to theState
trait. (#1006)- Added configurable width for debug lines. (#1016)
- Added
TextureMetadata::srgb_scale()
for default texture metadata with nearest filter. (#1023)- Added motivation to use Amethyst over gluing the building blocks yourself in the book. (#1057)
Changed
- Sprites contain their dimensions and offsets to render them with the right size and desired position. (#829, #830)
- Texture coordinates for sprites are 1.0 at the top of the texture and 0.0 at the bottom. (#829, #830)
- Made get_camera public. ([#878)]
- Simplified creating states with SimpleState and EmptyState. (#887)
- Updated ProgressCounter to show loading errors. (#892)
- Replaced the
imagefmt
crate withimage
. (#877)- Optimize Sprite rendering via batching. (#902)
- Derive
Debug
andPartialEq
foramethyst_input::Axis
. (#903, #904)- Updated
winit
to0.17
(see Winit’s changelog). (#906)- Updated
glutin
to0.18
(see Glutin’s changelog). (#906)- Updated
gfx_window_glutin
to0.26
. (#906)- Updated
hetseq
to0.2
. (#906)- Removed unwraps from StateMachine (#940)
- Renamed ArcBallMovementSystem to ArcBallRotationSystem. (#946)
- Moved the ArcBallMovementSystem::get_axis method to amethyst_input/src/utils: get_input_axis_simple (#946)
- Ui Y axis is now from bottom to top. (#946)
- Fixed issue with global anchors not actually aligning ui elements and containers properly. (#946)
- Fixed issue with ui events not triggering at times. (#946)
- Reduced the complexity of the UiPass and associated shaders. (#946)
- Added comments to UiPass and shaders explaining what is going on. (#946)
- The z in UiTransformBuilder now defaults to 1 instead of 0, allowing to skip defining the z in the ui prefabs. (#946)
- Added comments to ui prefab. (#946)
- Summarized all
use amethyst::
statements to allow collapsing in IDE’s. (#974)Application
now usesEventReader
s to determine what events to send to theState
s, more information in theState
book chapter (#996)- Breaking: Refactor
TextureMetadata
so filter method and clamping can be configured more easily (#981)- Renamed
PrefabData
functions to be easier to understand (#1008)Removed
LMenu
andRMenu
key codes, following thewinit
update. (#906)Fixed
- Material ids in GLTF loader caused multiple GLTF files to get incorrect materials applied. (#915)
- Fix render gamma for most textures. (#868)
- Joint entities can only be part of a single skin: Materials are not swapped anymore. (#933)
- Fixed regression in sprite positioning after batching. (#929)
- Now loading default fonts from the system for UiButton (#964)
- Fixed single frame animation (#1015)
- Improved compatibility with older drivers (#1012)
- Forgotten
channel
field onexamples/ui
prefab (#1024)AssetPrefab
loaded files at an incorrect time (#1020)- Removed unreachable code in
TexturePrefab
(#1020)- Fix OpenGL not rendering on window creation due to
glutin
bug (#972)- Fix debug lines panic when no lines are rendered (#1049)
More information about Amethyst is available here. The game engine is available under the MIT and Apache licenses on GitHub.