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:
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
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
Happy New Year everyone and good luck building games!