Menu

ENIGMA

Hugh Greene

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.

Why Use Enigma Instead Of Game Maker

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:

  • Speed improvements from an interpreted language to a compiled
    language. (For a basic counter loop you're looking at an increase in
    speed by a factor of about 150x)
  • Portability, having more available platforms and system options
  • Increased security of being compiled. It would be insanely difficult
    to decompile back to C++, and impossible to retrieve comments and
    variable names anyway
  • A reduction in starting size (Between 40 and 93 percent, depending
    on the platform)
  • The ability to create and access C++ types, templates, and functions
  • The ability to compile DLLs and other C/C++ scripts right into the
    program
  • Improved debugging
    • Access to a number of C/C++ classic debugging techniques (print
      to console)
    • Ability to use debuggers (gdb)
    • Access to the resulting C++ code
    • ENIGMA's built-in Design Mode
  • No YoYo Games. Which means it's:
    • Completely FREE
    • Open source
    • Has regular bug fixes
    • And developers actually listen to you
  • Many other improvements, additions, increased flexibility

Why Use Enigma Instead Of C++

ENIGMA offers some major benefits from just using C:

  • A prebuilt engine to base your creations off of, and a simple
    interface which accepts C/C++ code.
  • High level functions, and variables with variant datatypes. Arrays
    with no risks of overflow.
  • Resources are included for you in the engine, no additional work is
    required to load them.
  • Lax syntax and a friendlier typing system. Semicolons aren't
    required, templates don't require parameters, and var can represent
    strings or numbers.
  • Much greater ease of use, especially for those with little
    programming knowledge, allowing you to learn the logics of
    programming under a practical game development environment.

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.

Proof

Want some proof of ENIGMA's prowess? Here are a few demonstrations:

Examples

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.

The ENIGMA Team

ENIGMA is developed and maintained by a growing number of individuals.


Related

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

MongoDB Logo MongoDB