KivEnt is a framework for building performant, dynamic real-time scenes in
Kivy for Python 2 and Python 3. At the moment it is 2d
oriented. The only dependency for the kivent_core module is Kivy itself.
Additional modules may have other requirements, such as kivent_cymunk module
being based on Chipmunk2d and its
cymunk wrapper.
An entity-component architecture is used to control game object state and the
logic of processing the game objects. This means that your game objects will be
made up of collections of independent components that stricly hold data; each
component corresponds to a GameSystem that will perform all data processing
on the components, in the update loop each frame, and as a result of user
interaction or other programmaticaly generated events. All memory for the
built-in components is allocated statically: if you would like learn more about
memory management, read here.
KivEnt is built with a modular architecture and designed to have both a Python
API and a C-level Cython API that allows more performant access to your game
data. This makes it suitable for quickly prototyping a mechanic completely in
Python, and relatively trivial to then deeply cythonize that GameSystem if
you find it to be performance sensitive. This process has already been done for
the built-in components meaning they are ready for you to build new, performant
game systems on top of them.
https://groups.google.com/forum/#!forum/kivent
Read the introduction on the github wiki.
KivEnt is split into modules, the core module, 'kivent_core', is dependent only on Kivy.
Other modules may have other dependecies, listed here:
- kivy
- kivent_core
- also Tiled based deps, udiboy1209 we need to add the deps here
First, install all dependencies then:
On Windows you can use the Python wheels generated for all KivEnt modules and for Cymunk:
- Cymunk, Python 2.7, 32bit
- Cymunk, Python 2.7, 64bit
- Cymunk, Python 3.4, 32bit
- Cymunk, Python 3.4, 64bit
- KivEnt Core, Python 2.7, 32bit
- KivEnt Core, Python 2.7, 64bit
- KivEnt Core, Python 3.4, 32bit
- KivEnt Core, Python 3.4, 64bit
- KivEnt Cymunk, Python 2.7, 32bit
- KivEnt Cymunk, Python 2.7, 64bit
- KivEnt Cymunk, Python 3.4, 32bit
- KivEnt Cymunk, Python 3.4, 64bit
- KivEnt Maps, Python 2.7, 32bit
- KivEnt Maps, Python 2.7, 64bit
- KivEnt Maps, Python 3.4, 32bit
- KivEnt Maps, Python 3.4, 64bit
- KivEnt Particles, Python 2.7, 32bit
- KivEnt Particles, Python 2.7, 64bit
- KivEnt Particles, Python 3.4, 32bit
- KivEnt Particles, Python 3.4, 64bit
- KivEnt Projectiles, Python 2.7, 32bit
- KivEnt Projectiles, Python 2.7, 64bit
- KivEnt Projectiles, Python 3.4, 32bit
- KivEnt Projectiles, Python 3.4, 64bit
cd .../KivEnt/modules/core
python setup.py build_ext install
or:
cd .../KivEnt/modules/cymunk
python setup.py build_ext install
If you want to install into a system python on something like Ubuntu you may need to:
sudo python setup.py build_ext install
If you would like to instead build the modules in place and use PYTHONPATH to find them:
cd .../KivEnt/modules/core
python setup.py build_ext --inplace
export PYTHONPATH=/path/to/KivEnt/modules/core:$PYTHONPATH
or:
cd .../KivEnt/modules/cymunk
python setup.py build_ext --inplace
export PYTHONPATH=/path/to/KivEnt/modules/cymunk:$PYTHONPATH
Open the kivy-2.7.bat (kivy-3.4.bat if using the py3 portable package) command console and type:
pip install https://github.com/tito/cymunk/archive/master.zip
Now either download and extract or git clone the KivEnt source:
git clone https://github.com/Kovak/KivEnt.git
Assuming you have KivEnt in the root folder for the portable package, in the kivy-2.7.bat console:
cd KivEnt/modules/core
python setup.py build_ext install
#check core install
cd ../../examples/2_basic_app
python main.py
cd ../../modules/cymunk
python setup.py build_ext install
#check that cymunk install
cd ../../examples/6_controlling_the_viewing_area
python main.py
Tested with master branch. Python 2.7 and Python 3.4.
Tested on Android, Ubuntu, Windows, OSX; iOS coming soon!
If you need assistance, you can ask for help on our mailing list:
- User Group : https://groups.google.com/group/kivent
- Email : kivent@googlegroups.com
We also have an IRC channel:
- Server : irc.freenode.net
- Port : 6667, 6697 (SSL only)
- Channel : #kivy
We love pull requests and discussing novel ideas. Check out our contribution guide and feel free to improve KivEnt.
The following mailing list and IRC channel are used exclusively for discussions about developing the Kivy framework and its sister projects:
- Dev Group : https://groups.google.com/group/kivy-dev
- Email : kivy-dev@googlegroups.com
IRC channel:
- Server : irc.freenode.net
- Port : 6667, 6697 (SSL only)
- Channel : #kivy-dev
KivEnt aims to be a full MIT licensed project. At the moment every module is MIT, however this could change in the future. To be sure of the licensing for a module refer to the LICENSE file inside that module.