ENIGMA [Luda]

Posted by ludamad on April 27, 2008, 3:07 p.m.

Well, I'm over at my grandma's for a bit so I decided I'd pass the time by writing a blog.

I'd like to start of by saying I'm a huge supporter of the ENIGMA project; I've supported the idea since JoshDreamland first mentioned it to me. I'm making this blog just as some general basic information about ENIGMA in case people are still unsure about what it is, and to raise some awareness about ENIGMA.

In response to a variety of issues in Gamemaker by Mark Overmars, JoshDreamland started the ENIGMA project. ENIGMA will address the following issues:

-Gamemaker games are interpreted, not compiled. An ugly megabyte-and-so is tacked on to games and they are considerably slower in runtime.

-> ENIGMA games are converted into C++ by a parser, organized into events, and compiled by G++, a GNU license compiler.

-Gamemaker games can be easily decrypted. In gamemaker, the whole *.gmk file is present in the *.exe.

->Decompling ENIGMA games will be impossible to do due to customizable encryption, and will not include the source code anywhere in the *.exe.

-Gamemaker code is limited in function, the most you can do is still limited to what is available in the GML functions; DLLs and extension packages are needed, and have to be coded separately.

->ENIGMA will accept C++ fully, in the case of a parser problem, you can make the parser ignore a whole area of code so you can code in C++ uninterrupted.

-Gamemaker is a commercial product; many of the more advanced features are not available unless you register, and a logo appears saying your game is created in Gamemaker.

->ENIGMA will not only be freeware, but GNU software. There is little way of discerning if a game was made in ENIGMA or pure C++. Though ENIGMA is GNU, programs made in ENIGMA will be complete property of the creator; the creator is allowed to sell their program commercially.

-The inner workings of Gamemaker are mysterious, it is hard to determine why Gamemaker acts a certain way, and impossible to edit the engine.

->ENIGMA, being open-source, has all the source files included. Not only can you determine the exacts of the system, you can change fundamental ways ENIGMA handles situations to suit your game (provided, it requires a good grasp of C++).

Now, a little about colligma, ENIGMA's up-and-coming collision system that will be coded completely by me. Here's what's colligma hopes to have (and a good amount is done so far):

-Custom collision masks that can be altered in real-time by a variety of functions.

-Custom collision masks that take approximately X*Y/8 bytes of data (that is, the array is filled with bits).

-A variety of shapes you can set your object to in case you wish to save on collision calculation time. Supports triangles, rectangles, and ellipsoids (called circloids in colligma).

-Rotation of collision masks (via image_angle)

-Support for scaled collision masks (via image_xscale and image_yscale)

-Support for sprite-based collisions (as in Gamemaker)

-Fast, efficient collision-checking functions

The end result is that in colligma, as opposed to GM's collision system, it will be unbelievably easy and efficient to have destructable terrain, and you can even alter the collision mask a sprite has in real-time (it will not affect the sprite itself at all, and will not error if the sprite is currently in use)

Comments

Polystyrene Man 16 years, 7 months ago

Stop with all this ENIGMA talk. There's an inch of water on the basement floor due to all my drooling.

Juju 16 years, 7 months ago

Wow, that's pretty gross Poly.

twisterghost 16 years, 7 months ago

Moist (on purpose) definitely make collisions work for fast moving objects. I.E., if an object is moving at a speed of like 75, in GM it would jump over an object smaller than 75px. Get what I mean?

Granted, most objects shouldn't move that fast, but it'd be nice. Just a test to see if it moved past an object since the previous step.

ludamad 16 years, 7 months ago

Twisterghost, what you're saying makes no sense. If the X increases by 75 in one step, there is no collision in the new position, hence no collision. Checking if it passes over an object is something better left to the coder.

edmunn 16 years, 7 months ago

Delicious.

twisterghost 16 years, 7 months ago

Yeah, upon further review of what I actually wrote in that comment, I have come to a conclusion:

…What? What was I thinking? Damn I need to wake up. lol. Totally forgot about the existence of collision_line.

PY 16 years, 7 months ago

yeah, don't waste your CPU cycles checking for something so easily done by a competent coder.

Luda showed me his collision mask thing (Well, for all I know it could have been an exe with $echo 0 0 X…etc, but I trust him, and it looked pretty good.

Rotated collision mask, woot!

GM's shizzle with collisions was always a bit weak, I fear.

ludamad 16 years, 7 months ago

In ENIGMA, we'll have collision_line, collision_triangle, collision_ellipsoid, collision_rectangle, collision_point, and collision_mask (basically a collision check with a mask of your choice), all with rotation (though only really useful with collision_ellipsoid,collision_mask, and collision_rectangle).

twisterghost 16 years, 7 months ago

GM's everything was always a bit weak.

Josea 16 years, 7 months ago

Am I the only one who isn't impressed by ENIGMA or what?

I don't know you, but I'm very used to not believing in promises.