A free development environment geared towards game development.

ENIGMA comprises three principal components:

  1. An integrated development environment meant to help users organize their game's assets and logic in a way that is free of boilerplate and easy to reason about.
  2. A compiler that builds these game files into executable code, with generated asset management boilerplate (among other game engine basics).
  3. An engine that integrates with the user's built game to drive the core logic and tie everything together.

ENIGMA is meant to be simple to learn and even simpler to work with. ENIGMA makes it refreshingly easy to stand up simple games. Recreating Atari Pong is a job for a handful of minutes. This is true in many modern engines, but unlike most, ENIGMA scales well to positively enormous games, as the engine (and ultimately, all user code) is written in C++.

Users write code in EDL, a language similar to JavaScript (or, more to the point, Game Maker Language) which compiles intermediately to C++. The emitted C++ is optimized based on the game's asset usage, and the result is a C++ game project which can be built by any C++ compiler (we target Clang and GCC). This offers massive portability and library support.

The compiler bundles a C++ parser which crawls the engine for definitions. This theoretically allows users to access library routines directly (e.g. OpenGL), though we recommend against this for portability reasons. This framework is another good surface for GSoC projects, though it's more advanced, so we've left it unexplored in our project ideas list.

To really understand the utility of the project, consider a typical game, which uses "rooms" (a type of ENIGMA asset) to lay out instances of "objects" (game entity classes) visually. The objects contain code for specific events (such as step, draw, or keyboard) which can call out to scripts or begin timelines or start movement on paths. ENIGMA's compiler translates this to C++ and builds it against the engine after parsing both to learn how to integrate them.

lightbulb_outline View ideas list

Technologies

  • c++
  • opengl
  • qt5
  • android

Topics

comment IRC Channel
mail_outline Contact email

The ENIGMA Team 2021 Projects

  • Abhishek Kumar Jha
    Android Support for ENIGMA
    This project aims to fix the issues regarding the Android platform that includes fixing the shader, adding a new audio system and the addition of ...
  • Nabeel Danish
    Polygon Based Collision Detection System
    A Collision Detection system that is an alternate to Bounding Box and Precision Collision Systems. Used In Enigma to detect collisions in a game...
close

2021