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, 2015Hosts – Tobias Macey and Chris PattiFollow us on iTunes, Stitcher or TuneInGive 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 websiteOverview – Interview with Jacob Kovac about the KivEnt Game Engine, based off of KivyInterview with Jacob Kovac
IntroductionsHow did you get introduced to Python? – ChrisCould 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 efficiencyReal-time focused rendering engine for KivyCython interface to provide performant game objects with Python APIIncreased speed of main render loop by 38X by removing a single Python list lookupKivent is mainly 2D focused, vs 3D for Unity/UnrealPython all the way downCython and pointer magic for optimization purposesMade 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 unacceptableLooking for how to build games in Python with large amounts of dataIs 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 gameJacob’s interests largely focused on procedurally generated environmentsCould 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 scopeThis 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 problemsDifference in GPU vendors has proved the most difficultI 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 3DKivEnt supports any image format that Kivvy does for your platformComing next release – you can specify the vertex format for your modelhttps://youtu.be/qe9fWC-2e3M?utm_source=rss&utm_medium=rssI 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 releaseTrying to add tooling to make testing games easier, though still somewhat difficultPlatform Biased Podcast – by a bunch of Microsoft Studios SDETsHow 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 KivEntRumors of using Kinect camera with Kivy/KivEnt applicationsIs there a built in physics engine or is that something that is pluggable? Mostly pluggableChipmunk 2D integration provided via a moduleParticle Panda – one of the major inspirations for KivEntNew Particle engine coming in the next version of KivEntHow does KivEnt handle collision tracking? Mathematically difficult, very hard to get rightDon’t do it! Use the physics engine – Chipmunk 2D is also a collision detection engineKivy enables devs to use C, C++, Java and Objective C code in their gamesGame development has been democratizedEntity / Component architecture enables great modularityGame objects that appear on the screen (Gun, ball, etc.) are not represented as such in the systemCan 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=rsshttps://play.google.com/store/apps/details?id=org.chozabu.boardzfree&hl=en&utm_source=rss&utm_medium=rssWhat are some ways in which our listeners could help contribute to the project? Would like to see more people build games in KivEntGive feedback about the experience and what can be improvedIf you have Apple hardware, try out KivEnt and file issues with any errors that occur
Picks
TobiasEIN (Emacs IPython Notebook)Pip 7.xRESTful Web APIsThe KillingData Science on the iPad with RethinkDBLeft Hand Nitro Milk StoutPelican Static Site GeneratorTerraria 1.3Amorone Homemade Red WineKeep in Touch
E-Mail – kovacBlog – chaosbuffalogames.com/blogIRC – #kivyThe intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA