ENIGMA, the Extensible Non-Interpreted Game Maker
Augmentation, is an open source
cross-platform game development environment
derived from that of the popular software Game
Maker. Its intention is to provide you with a
quality game creation tool and a bridge between high- and low-level
programming languages. It can be used either through an
IDE, namely, its sister
project, LateralGM, or through a Command line
interface.
Like Game Maker, ENIGMA comprises both an easy to use Drag &
Drop system as well as its own programming language.
This programming language, known as EDL, is
essentially a mix between C++ and Game Maker's
GML. Part of ENIGMA's goal is to remain backwards
compatible with Game Maker, serving for some intents and purposes as a
Game Maker compiler, however, EDL offers many very powerful features
which simply aren't present in the alternative. Such features include
the ability to compile DLLs and other C/C++ scripts right into the
program and access C++ types, templates, and functions.
Although EDL adopts GML's very lax syntax in its scripting, the inputted
code is actually parsed and translated into valid C++. This compilation
improves size and performance of the language by incredible amounts,
while almost magically maintaining its simplicity of use.
ENIGMA aims to be as compatible with Game Maker as possible. You can
load and save GM files in LateralGM, then
compile them with ENIGMA. When ENIGMA's function
set is finished it will have
practically all of Game Maker's capabilities, plus the following:
ENIGMA offers some major benefits from just using C:
Understand, of course, that the processes ENIGMA takes to handle
instances and resources may be slower than a custom engine in pure C++.
Much care has been put into each system, however, and in the end, the
differences will most likely prove insignificant. In any case, our goal
is to have the simplicity the system offers justify any speed reduction.
Options will exist for further optimization, such as variables that some
may find a waste of space being removable.
Data types are dynamic if undeclared, but unlike in Game Maker, you will
be able to declare something you do not plan to change as one byte. Or a
short, double, string; whatever you like for optimal performance. This
way, it will use less memory if you declare it yourself, but you will be
able to switch between data types if you do not specifically declare it.
Want some proof of ENIGMA's prowess? Here are a few demonstrations:
Here are two nice examples to look at:
The first was posted on the gmc by Hieronumos (the ENIGMA team take no
credit for it). The file is .gmk (GM8) and works perfectly in both GM
and ENIGMA straight from the tin. The main difference though being that
ENIGMA kills GM in the fps department.
The second was also posted on the gmc, this one by Slayer 64 (again the
ENIGMA team take no credit for it). The file is .gmk (GM8) and too works
perfectly in both GM and ENIGMA. It shows d3d working swimmingly in
ENIGMA.
Note also, importantly, that both files could also be made more
efficient still in ENIGMA by the use of types and possibly some extra
coding functionality but were left backwards compatible with GM.
ENIGMA is developed and maintained by a growing number of individuals.
Wiki: Action
Wiki: Backend
Wiki: Bug_reporting
Wiki: C++
Wiki: Collision_Systems
Wiki: Color
Wiki: Command_line_interface
Wiki: Compilers
Wiki: Cross_platform
Wiki: DLL
Wiki: Design_Mode
Wiki: EDL
Wiki: ENIGMA:About
Wiki: Eclipse
Wiki: End_user
Wiki: Enigma
Wiki: Extensible_Non Interpreted_Game_Maker_Augmentation
Wiki: GML
Wiki: Game_Maker
Wiki: Help
Wiki: Inheritance
Wiki: Install:Git
Wiki: Install:Subversion
Wiki: Install.py
Wiki: Install
Wiki: Integrated_development_environment
Wiki: JoshEdit_branch
Wiki: LateralGM
Wiki: License
Wiki: Open_source
Wiki: Plugin:Building
Wiki: Plugin:Building_svn
Wiki: Plugin
Wiki: Revision_control
Wiki: Step
Wiki: SvnKit
Wiki: Translating
Wiki: Tutorial:Making_your_first_game
Wiki: Unimplemented_GM_Functions
Wiki: User:Fede lasse
Wiki: User:IsmAvatar
Wiki: Variable
Wiki: Videos