by Tom ([email protected])
-
November 2016:
During the development of a small indie game called Tequila Life, several software components were rewritten in Python to enhance their reusability, versatility, and customizability. This effort marked the creation of an initial framework for writing games using Python. -
February 2017:
The first solid draft of a new Python-based game engine was proposed in early 2017. Although early, experimental names for the engine have been lost to time, this initial version introduced an object-oriented model for game states and a mechanism for transitioning between them. These foundational features sparked the ambition to evolve this codebase into a large-scale, ambitious project. -
August 2018:
An early version of the engine calleddingus2
has introduced the MVC pattern, and that piece of software has been shared with two other game developers. As far as I know, for the first time this engine has been used in a large-scale project (used for programming a python-based massively multiplayer game named 'Brutos Online') Both projects (the game and the engine) were closed-source at that point. -
April 2019:
In April 2019, the source code of the engine was made public (->open-sourced), and that primitive game engine was dubbedcoremon_engine
.
-
May 2021:
I first experimented with using Brython to transpile a Pygame project in order to run a video game in the browser, achieving promising results. Then, I joined the dormantbrython-pygame
project and engaged with Brython’s creator, Pierre Quentel. Unfortunately, he indicated thatbrython-pygame
could not be restarted as the original author was unreachable. -
September 2021:
It became apparent that significant architectural changes were necessary to enable Python-based games with full features like animations, sounds, and network communications to run in browsers. This led to the conception of thekatasdk
library, an evolution of the earlier project. Initial prototypes were shared on platforms like Reddit and Discord, and a dedicated community channel was established on the Pygame Discord server. -
March 2022:
After over a year of experimentation, I decided to segment the system into multiple parts to enhance efficiency for end-users. Some components required 24/7 hosting and data upload capabilities, leading to a subdivision of the project. The segment directly utilized by game developers was namedkengi
. Simultaneously, we introduced a major update in event processing by adopting a new event system that behaves like an overlay over the built-in Pygame system. The engine also included for the first time a few capabilities for coding isometric games, significantly enhancing the complexity of python games that can be played in a browser -
June 2022:
We attempted to integrate the kengi software into an experimental system with a 'metaverse' component. To facilitate this, I linked a Stellar web wallet called 'Freighter,' enabling the signing of transactions for depositing XLM. Another notable aspect was our effort to embed the game editor directly within the metaverse itself. This design was primarily inspired by Roblox and other massively multiplayer online games that were extendable through custom scripting (similar to the Ultima Online client paired with the RunUO server emulator). -
December 2022:
The project has been partially funded, thanks to a grant from the Stellar Development Foundation during the round #11 of the Stellar Community Fund. See that link. -
April 2023:
The idea of a metaverse-like system was set aside as the kengi project evolved into the projectpyved-engine
. We adopt a modular architecture and a more Pythonic approach that relies heavily on the CPython base interpreter for the entire toolbox. Since then, the pyved_engine has featured a new command-line interface for easier game prototyping and a novel game format (game bundles), which together can significantly streamline the game sharing process. -
May 2023:
One month after letting go of the metaverse-like system, a new proof-of-concept is created. The name "pyved" comes from 'Python Visual EDitor'. Indeed, we now dream of a visual editor for game developers, that would be easy to use, could take a low-code approach and would feature a built-in level editor. Our first proof-of-concept relies onpygame-ce
andpygame-gui
. That new component we prototyped would act as the GUI for usingpyved-engine
easily.
-
June 2023:
We’ve brought the idea of launching game templates from the command line to life. Looking ahead, we envision that this command-line tool could evolve significantly, empowering game developers in unique and exciting ways to enhance productivity and streamline their workflow. -
July 2023:
We're re-evaluating design patterns tied topyved-engine
and for a better gamedev API. We're re-considering the need of OOP (see this commit for exmample) This API needs a solid pattern to ensure scalability and ease of use. After testing various options—such as Mediator, MVC, and a pure OOP approach with methods like.update()
and.draw()
. We've recently experimented with a custom ECS (Entity Component System) pattern. The ECS implementation is functioning well, providing a notable performance boost. However, it remains uncertain whether this pattern will be adopted as the primary structure within the gamedev API. -
July 2024:
We’ve implemented a new network layer to streamline event sharing between client and server, making multiplayer interactions more seamless. Using several mediators (one per software instance) is feasible but still in an experimental state. After substantial effort, our first experiment transpiling multiplayer code to Node.js using Transcrypt has been a success, paving the way for more robust cross-platform capabilities in the future. -
October 2024:
Repositories associated with our innovative game development solution have all been moved to a new GitHub organization namedpyved-solution
. This transition paves the way for ambitious future developments. Additionally, an older repository has been repurposed to store all game templates, acting as an index. Thepyv-cli tool
now relies on this template index to initialize new game prototypes.