Fetching the latest programs, projects, and workspace data.

A free rapid game development environment.
Showing 5 of 9 projects. Click any project card for scope, mentors, and proposal studio.
Mentors: Student: Fares Atef
The ENIGMA project has its own language, EDL (ENIGMA Development Language), along with a dedicated parser. Two years ago, a significant effort was made to completely rewrite the EDL parser, resulting in a recursive descent parser that handles most aspects of the language, though some features remain incomplete. This year, the focus is on further developing the parser to address these unfinished features, implementing the pretty printer to translate the generated AST (abstract syntax tree) to C++ code, replacing the old parser calls with the new ones, and implementing visitor classes such as the declaration gathering visitor and the syntax checker.
Mentors: Student: Seif Kandil
The world of procedural generation in gaming, exemplified by titles like No Man's Sky and Minecraft, utilizes algorithms to create vast universes and landscapes. From textures to terrain, and even sound, these games generate content on the fly, allowing for endless exploration and variation. In projects like ENIGMA, machine learning is poised to enhance this process by crafting shaders that can be converted into dynamic textures, paving the way for even more immersive experiences. By leveraging techniques like genetic programming, developers aim to optimize the generation process, ensuring consistency and quality across diverse gaming environments.
Mentors: Student: Saif Kandil
ENIGMA currently lacks third-party integration with various digital distribution platforms such as Steam, Xbox, or Origin. First-class support for these services would make it easier for Indie developers to publish ENIGMA-created games. Developers would like for it to be easier to monetize their games and enable them to release bigger and better updates to their users. An integrated architectural layer will be created between Steamworks ENIGMA's extension APIs and Steamworks SDK. ENIGMA's Asynchronous system will be updated. Currently, ENIGMA's Networking system is not stable so Steam Networking features will be postponed for later for now I will add support to these APIs: Management, General, Overlay, Leaderboards, Achievements, Cloud, and Social.
Mentors: Student: Fares Atef
The ENIGMA project uses a hierarchy of objects to represent entities. These objects are serialized and deserialized using (de)serialization routines implemented for them. However, the current implementation is not very clean as it checks the type of each argument against an if-else ladder, making it difficult to read and extend. This project aims to make the serialization framework easier to use and extend by changing the way the serialize, serialize_into and deserialize functions work to dispatch to supported types implicitly without the need for an if-else ladder. And the project also aims to implement support for additional data types like generic routines for map, vector and complex numbers. This would enable more easily serializing ENIGMA's internal state for use in sending state either across a network or into a file. Additionally, the project aims to introduce support for the JSON format within the serialization system, offering it as a new option alongside the existing bytes format. This addition enhances the readability and debugging capability of the serialized data.
Mentors: Student: Kartik Shrivastava
Enigma’s future plan includes becoming more independent by shifting focus away from Game Maker. As Tiled offers better room editing features than Game Maker, adding Tiled compatibility to Enigma can help users take advantage of Tiled room editor along with Enigma’s development environment. This project also expects some research to know the intermediate representation of Tiled in much more detail. TMX is a Tiled specific room format and EGM is an Enigma specific project format. Most of the features supported by EGM format are based on Game Maker’s format GMX. The way this project aims to achieve Tiled compatibility is twofold. First part consists of adding a TMX importer to Enigma while the second part consists of adding an EGM importer to Tiled. Additional tasks involve analyzing GMX 1.4 to understand various protocol buffer fields, adding Gtests in libEGM to check correctness of deserializer efficiently.