I've started to work on Piston v2.0
Piston v2.0 will make some breaking changes to v1.0.
- pistoncore-input will use a Cargo feature "serde" for serialization (#1412)
- pistoncore-event_loop will use a Cargo feature "spin_loop" for the spin_loop crate (#1409)
This will reduce number of dependencies, improve compile times and CPU usage in many applications.
Also, I've started to think about what we can learn from the Bonsai fork of Piston-AI-Behavior. Not only learn, but take these lessons and apply them to the broader Piston ecosystem. I got an idea about a new concept in the Piston core about Actions, which is also compatible with button events. It will also improve ergonomics for button configuration, for controllers and widgets. You will no longer need to pass in settings manually, but can configure the maps at application code level.
This will simplify the overall architecture, but also, we can get rid of the pistoncore-input dependency in Piston-AI-Behavior. With actions, we might not need the generic A parameter to Behavior as much as before and this can default to (). There are other libraries that might also drop the pistoncore-input dependency, e.g. the camera controller library.
Actions will make bigger parts of the Piston ecosystem decouple from the core, so that these libraries can be used in other game engines.
I am currently looking into SDL3 keyboard compatibility and some edge cases in Piston v1.0 that I'm not satisfied with. This does not impact many applications, but still, if it can be improved, I want to improve it.
I also got some ideas about async and the piston command tool in Piston-Window, but this does not require new features in the core. This is just a heads up that I'm thinking about further improvements after the v2.0 core has been released.