Listen to past episodes and find out more about the show at our website pythonpodcast.com
Synopsis
In this episode we talked to Jacob Kovac, creator of the KivEnt game engine and one of the Kivy core developers. He told us about what inspired him to create the KivEnt project, some of the ways that he has managed to optimize rendering time and some of the problems that he has encountered as part of his work on the project. We also discussed what the use cases and limitations of the KivEnt engine are and he shared some of the projects that have been made with it.
Brief Introduction
Date of recording – June 17th, 2015
Hosts – Tobias Macey and Chris Patti
Follow us on iTunes, Stitcher or TuneIn
Give us feedback! (iTunes, Twitter, email, Disqus comments)
We don’t have any corporate sponsorship or advertisements in the show because we are making it for the community and we respect our listeners and value your time. If you would like to help support the show and keep it ad-free you can find out how by visiting our website
Overview – Interview with Jacob Kovac about the KivEnt Game Engine, based off of Kivy
Interview with Jacob Kovac
Introductions
How did you get introduced to Python? – Chris
Could you please give us a high level overview of KivEnt and how it differs from other game builder frameworks like Unity or Unreal?
Manages memory for game objects and stores them contiguously in memory for greater efficiency
Real-time focused rendering engine for Kivy
Cython interface to provide performant game objects with Python API
Increased speed of main render loop by 38X by removing a single Python list lookup
Kivent is mainly 2D focused, vs 3D for Unity/Unreal
Python all the way down
Cython and pointer magic for optimization purposes
Made to be familiar to Pythonistas
Aiming for “A” level games
Bringing modern advancements in making games to Python – GPU awareness
Built with constraints in mind
The Pacman Dossier
What inspired you to create the KivEnt engine?
Tried to create an Android infinite runner in Kivy, performance was unacceptable
Looking for how to build games in Python with large amounts of data
Is there a particular kind of game KivEnt is particularly suited for versus any of the other popular frameworks?
Focuses mainly on 2D, agnostic as to ‘type’ of game
Jacob’s interests largely focused on procedurally generated environments
Could KivEnt be used to create networked multiplayer games and what challenges might that bring to the table for the aspiring KivEnt game developer?
Multiplayer thought to be largely out of scope
This doesn’t mean KivEnt is bad for multiplayer games, but that KivEnt in and of itself doesn’t wholly solve this problem.
Plenty of other frameworks to draw on for handling the multi-player server or pulling data from it, KivEnt solves the client side problems germane to making a game in Python
Does the fact that KivEnt games need to run on so many platforms present any unique difficulties in KivEnt’s development?
Kivy has solved most of the cross-platform problems
Difference in GPU vendors has proved the most difficult
I hear game developers talk a lot about assets and asset formats. What kinds of assets can be used with KivEnt?
2D assets are simple – especially as compared to 3D
KivEnt supports any image format that Kivvy does for your platform
Coming next release – you can specify the vertex format for your model
https://youtu.be/qe9fWC-2e3M?utm_source=rss&utm_medium=rss
I have heard that unit testing games is difficult and rarely done for reasons of time pressure, as well as lack of determinism in the interactions. Does KivEnt provide any utilities to make this easier?
Not currently well tested, but targeting that for next release
Trying to add tooling to make testing games easier, though still somewhat difficult
Platform Biased Podcast – by a bunch of Microsoft Studios SDETs
How does KivEnt handle input and what kids of input devices are supported?
Input handled entirely by Kivy, so any inputs supported by Kivy are accessible in KivEnt
Rumors of using Kinect camera with Kivy/KivEnt applications
Is there a built in physics engine or is that something that is pluggable?
Mostly pluggable
Chipmunk 2D integration provided via a module
Particle Panda – one of the major inspirations for KivEnt
New Particle engine coming in the next version of KivEnt
How does KivEnt handle collision tracking?
Mathematically difficult, very hard to get right
Don’t do it! Use the physics engine – Chipmunk 2D is also a collision detection engine
Kivy enables devs to use C, C++, Java and Objective C code in their games
Game development has been democratized
Entity / Component architecture enables great modularity
Game objects that appear on the screen (Gun, ball, etc.) are not represented as such in the system
Can you tell us about some of the projects that you have seen built in KivEnt which you are most excited by?
https://github.com/chozabu/KivEntEd?utm_source=rss&utm_medium=rss
https://play.google.com/store/apps/details?id=org.chozabu.boardzfree&hl=en&utm_source=rss&utm_medium=rss
What are some ways in which our listeners could help contribute to the project?
Would like to see more people build games in KivEnt
Give feedback about the experience and what can be improved
If you have Apple hardware, try out KivEnt and file issues with any errors that occur
Picks
Tobias
EIN (Emacs IPython Notebook)
Pip 7.x
RESTful Web APIs
Chris
The Killing
Data Science on the iPad with RethinkDB
Left Hand Nitro Milk Stout
Jacob
Pelican Static Site Generator
Terraria 1.3
Amorone Homemade Red Wine
Keep in Touch
E-Mail – kovac
Blog – chaosbuffalogames.com/blog
IRC – #kivy
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA