Amethyst 0.9 has been released!
Published on 2018-10-22

The Amethyst team is proud to announce our latest release, filled with new features and with massive improvements to the 2D workflow.

It has been 2 months since the last release, and we are proud to announce that version 0.9 of the Amethyst game engine is now available on crates.io! We would like to thank the numerous contributors involved in this release; the full list is available below.

Now, onto the features!

DrawSprite Pass

With 0.9 we are introducing a new way to draw sprites on the screen. Drawing a sprite is now as simple as just attaching a SpriteRender component to the entity you want to draw. This change also allowed sprite batching to be implemented meaning that you should now see a massive boost in performance when displaying a lot of sprites on the screen.

100 000 sprites at 60 fps was even confirmed possible!

We are also introducing new usability features for drawing in a 2D world. One of them is the ability to load spritesheets directly from files. This is done using the serde-compatible RON data format, making it very easy to load big spritesheets and convert them from other sprite sheet formats.

Networking

With 0.9, we have started building a new networking system. The initial work was to implement some basic features on top of UDP. You can see that work here. With this as our solid foundation, our focus for 0.10 will be on higher-level abstractions, such as automatically syncing entities across clients. The current amethyst_network crate is expected to change a great deal in 0.10. The current contents should be viewed as a proof-of-concept only.

In short, we're not quite production-ready yet, but we're getting there!

Experimental Editor Support

Alongside continued development of the engine, members of the community have been building out an experimental editor for building Amethyst games. The first part of this work is the amethyst-editor-sync crate, which provides a way for Amethyst games to connect to the editor. This is being built in a way that makes it possible to experiment with multiple different editors without committing to one technology. Doing so allows us to get practical experience with a variety of GUI technologies so that we can eventually make an informed decision on which one to adopt for the official editor.

The first editor being built by the community is randomPoison/amethyst-editor, and it is being built with Electron. It currently has support for displaying any Component or Resource that implements Serialize, and the upcoming 0.3 release will bring support for tweaking values in the editor and having them update within the game.

The Electron editor

Edit support

New Convenience Features

This release brings with it a bunch of new convenience features. Here are some of the highlights:

Some Fixes

There has been a lot of bug fixing and tweaking going on for this release. Here is a highlight of some of them:

For a full list of changes, see this changelog file.

Documentation

This release, we continued with the trend launched by the 0.8 release: We kept a heavy focus on keeping the documentation up to date and to explain more of the internals of the engine.

The beginner tutorial has been made more beginner-friendly too, with easier to follow instructions.

Previous and new Goals

In the previous release post we made a list for planned features that would have landed in this version. While not all of them made it in this time you can be sure that we are still working on making them a reality as soon as possible. The major new features of 0.10 are going to be the new renderer and migrating to a new math library called nalgebra. If you want to help us make 0.10 even more awesome than this release, feel free to join our Discord and say hi; we are always happy to help new contributors!

People we <3

We would like to thank all our contributors who were involved in making this release possible:

As well as everyone who reviewed pull requests, opened issues, participated in the design discussions, and requested features!