ENIGMA: Difference between revisions

From ENIGMA
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
<p align=right>[[File:Wikilogo.png|200px|link=|left]]</p><p align=left>
<p align=right>[[File:Wikilogo.png|200px|link=|right]]</p><p align=left>
ENIGMA, the '''E'''xtensible '''N'''on-'''I'''nterpreted '''G'''ame '''M'''aker '''A'''ugmentation, is an [[open source]] [[Cross platform|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 [[Integrated development environment|IDE]], namely, its sister project, [[LateralGM]], or through a [[Command line interface]].
ENIGMA, the '''E'''xtensible '''N'''on-'''I'''nterpreted '''G'''ame '''M'''aker '''A'''ugmentation, is an [[open source]] [[Cross platform|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 [[Integrated development environment|IDE]], namely, its sister project, [[LateralGM]], or through a [[Command line interface]].



Revision as of 09:08, 28 March 2013

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.

Mission Control
fundies Defacto leader of ENIGMA. Co-developer of RadialGM; Wrote emake and implemented continuous integration. Also responsible for SDL platform, android support and much much more.
Josh Ventura Started the ENIGMA project. Primary developer; wrote most major systems including the parsers.
IsmAvatar Started the LateralGM project. Also wrote the XLib code that enables ENIGMA to work on Linux, a BBox-based collision system, and a Berkeley sockets-based networking system for ENIGMA. Sponsored a large portion of the funds to getting a dedicated server for the project.
Goombert Works on the core game engine, author of the Box2D and Bullet physics extensions, also a designer of this Wiki and has documented it a lot, also the lead developer of the C++ rewrite of LateralGM. Goombert is a network, graphics, physics and collision, and just a general developer for ENIGMA, and can also do web and interface development.
WYSIWYG
Josh Creator of JoshEdit the syntax highlighting code editing component used in LateralGM
IsmAvatar LateralGM project founder and lead developer, also maintains its current repository.
Goombert Lead developer for wxENIGMA and the founder of its C++ rewrite.
egofree A number of contributions to LateralGM including various room editor features.
TheSpiritXII NaturalGM project founder and lead developer, a cross-platform alternative IDE with advanced capabilities and an abstract approach.
TimeKillerGames Harbinger of consistent cross-platform widgets in ENIGMA for Windows, macOS, Linux, and FreeBSD. Also the one who ported ENIGMA's X11 platform originally designed for Linux to also run on FreeBSD in the first place, with some major help from fundies.
The Architects
TGMG Wrote a large number of ports for ENIGMA to different operating systems, including Android and iPhone. Helped kick off some resources, including backgrounds.
TheExDeus Completed the set of sprite functions, the majority of the background functions, path functions, surfaces using fbo and most of the draw_text_* functions.
Polygone Forum administrator and a main wiki administrator. Actively involved in ENIGMA development. Likes to bug test/debug and contribute towards full GM compatibility. Aims to set ENIGMA in stride for world domination.
Forthevin Has fixed various problematic issues in ENIGMA and implemented several major systems including pixel perfect collisions, and the particle system.
The Matrix
a2h Site creator, manager and designer. He claims to be able to dream in code (although it's highly doubted).
Gary "MahFreenAmeh" Warman sysadmin, web dev, music connoisseur, hacker d-luxe; ready for work at any time. Designed several components of the site that "just needed to work".
Zane "Obelisk" The god of the original ENIGMA logo (A PNG version of the current vector).
Mitch Works on the ENIGMA Community (the one with the blogs and games). He also made the original version of the bugtracker.
Owen "Zekian" Delahoy The blogs and games side of the ENIGMA Community is also improved on by Owen, who lovingly(?) squeezes more goodness out of it.
Noodle Redesigned the third iteration of the ENIGMA site design. This design, the fourth one, retains only one thing from his redesign. The text color.
Sir Xemic/C-Ator9 Designed the original ENIGMA ambigram
Juju Potential author of the help file.
hugar678 Wiki contributor developing an offline version to be used as a portable manual. Extremely gracious host as well.
Desperados
Dazappa Contributed a Java-written e-YAML parser so IsmAvatar could read ENIGMA's ey files. Also fixed a few LateralGM tasks/bugs.
RetroX Contributed a few movement functions and designed Linux install packages.
Datzach Went through a phrase of adding a load of remaining GM functions, mainly Winapi related functions for Windows.
r9k Author of ENIGMA's soon-to-exist polygon-based collision system.
Dave Contributed the skeleton of the surface system, as well as a dysfunctional font system he wrote without compiling it even once. Quite impressive.
Serprex A brilliant coder, knowing all there is to know about optimization. His sense of motivation is screwy, and he has screwed some functions up (which Josh will remember always), but he's redone several key functions.
Rusky The poor guy who got datastacks pushed onto him. (Pun) Though he did finish stacks, the rest are yet to be done (So they'll probably be redone by someone else). Rusky strives to keep everyone else in line.
Sir Xemic/C-Ator9 Drafted several mathy functions in GML, including draw_ellipse, draw_roundrect, and make_color_hsv.
"fede-lasse" Contributed small strings of functions here and there.
Everyone else Thank you for all the help!