KivEnt 2.2 introduces SVG and Tiled support, better sound handling features, and built in support for animations. The camera system has also been improved to handle more common camera cases including rotation support. This update represents a year worth of bug fixes, feature extensions, some API improvements. We had our first GSoC student project, and the first commercial funding of development occured this year. KivEnt should see even more improvements in 2017 and has a much stronger foundation to build on than it did at the start of 2016.
A huge thank you to everyone involved in the last year of KivEnt development. A few users and organizations deserve a special mention here: Github users @mahomahomaho has been instrumental in tracking down several hairy bugs that have been fixed, and is constantly engaged in documenting and finding more, @udiboy1209 worked on KivEnt for GSoC 2016 and built the Tiled module, and @dummerbd for getting TravisCI setup. In addition, a huge thanks to Google for running GSoC, the Kivy Organization for everything they do, and to The Trebella Company who funded our OSX and SVG support.
Following his exemplary work during GSoC, @udiboy1209 has joined the KivEnt development team. This is the first expansion of the team beyond myself, and another great sign for the future development of the framework!
SVG Support: We have near complete SVG support now, you can read more details in this blog post
Tiled Support: The new kivent_maps module provides support for the Tiled map editor format, including hex, isometric, and normal 2d map formats. You can read about @udiboy1209's experiences building this module at his blog: First post, Second post, Third Post (and tutorial).
Animation Support: @udiboy1209 also built an animation system to achieve support for all of Tiled's stuff but you can use this in your game as well. Check out the new version of example 9: twinkling stars to see how to work with the new animation manager and system.
Extensible Managers: It is now possible for kivent extensions to introduce new GameManager classes to expand upon the built in support for textures, sounds, animations, and models. See the GameWorld.register_manager and GameWorld.unregister_manager functions for the basics. For an example of a extension that makes use of this feature, take a look at the new kivent_maps module.
Sound Manager: There is now built in support for handling sounds, including loading multiple copies of a sound so that you can the sound play more than once simultaneously, and functionality for saving references to sounds easily in optimized C struct based components.
Camera Improvements: The camera should now handle rotation and scaling, as well as better support for cameras that are smaller than Window size. See example 15_camera_rotate for a demo.
Build Script Improvements: The build scripts have been improved greatly by the KivEnt and Kivy community, and should now handle several previously unhandled cases that might come up depending on platform; particularly on mobile.
This release also includes the experimental kivent_projectiles module. This module is an example of how you can build complex kivent modules that make use of the existing modules (particles and cymunk in this case) to build the optimized, and interdependent types of systems that are the fate of any game development project. To take a look at all these modules in use at once you can check out the YACS Game which serves as my integration testing point for all the various systems adding to KivEnt so far. I highly encourage reading the code to kivent_projectiles if you are interested in building your own game systems that rely on other kivent modules.
Coming up in 2017, KivEnt should see better packaging across platforms, some performance optimizations, and the addition of full support for the iOS platform. A variety of new modules may come along as well depending on the needs of myself and the other users. At the very least a quadtree spatial indexing module will be released sometime once the approach has been proven.
One of my personal interests is in making use of the C++ STL objects that are available in Cython to simplify some of the existing code with more standard data structures. This is being tested in the aforementioned quadtree module and is going very well. Cymunk is also sorely in need of an update as we are now based on an old version of Chipmunk2d, the latest version has had some significant changes.
I hope we will have a chance to participate in GSoC 2017, but this will depend on the competitiveness of this years applications to the Kivy Organization. If you're interested in working on Python Game Development for GSoC it is never too early to start engaging, stop by #kivy-dev or #kivy on freenode!
Happy New Year everyone and good luck building games!