arrow_backAll projects

Factorygame

Python game engine to have a 2d movable "graph"

Click an image to view full image

I designed my own game engine framework as I found the basic functionality of Tkinter too limiting to quickly build prototypes for game jams. It is inspired by Unreal Engine 4, which I have used for five years. Factorygame is open source and forms the framework of several of my game jams entries.

Features

  • Movable graph - By having a concept of world coordinates that get translated into screen pixels, the game programmer can choose which parts of the graph are in view. This eliminates the need to track specific screen resolutions, as many factors such as screen size and ratio are considered when the screen positions are calculated.
  • Tkinter compatible - The 2D shape drawing functions are extended from the cross platform GUI library, Tkinter. Any other Tkinter-compatible libraries can be reused with Factorygame to provide a wide range of additional features, and GUI menus and overlays can be simply made in Tkinter without any hassle. Plus, your games can run on any platform that Tkinter can.
  • Flexibility - The use of the Python scripting language throughout makes this engine highly flexible. It has an open source policy to support understanding and extending any part of the engine with ease. By letting users choose their workflow, it empowers them to use their existing techniques to speed up build times.
  • Input events - Key mappings can be set that allow games to take advantage of multiple keyboard and mouse keys to drive gameplay events. The event system is highly customisable and easy to use, requiring only one line of code to create an input mapping. This means game programmers can spend less time searching for specific key names and focus on making their game.
  • Project Details

    After using Unreal Engine 4 to create games, I realised that it was very time consuming to set up a project for game jams (events to make games quickly) because I would end up not using most of the features in the engine. By creating games without an engine, I was repeating lots of basic functionality, so I created a framework to automate this. As I continued making games with this framework, I was able to add more features while making the framework simpler to use.

    I chose Python to write this game framework because it can speed up development time through its use of dynamic types and its interpreted nature. This means changes to the game can be immediately tested out, enabling game programmers to tweak gameplay without waiting for the code to be compiled. By also writing the engine in Python, the engine code is completely transparent to the game programmer so that it can be modified if necessary.

    As I continue to compete in game jams, I will explore what Factorygame can offer and how to make it even faster and simpler to write games, without placing any limits on creativity. I can also apply my thorough understanding of game engines from this project to other work on programming games in any engine.

    External Links