ENIGMA

Posted by JoshDreamland on March 3, 2011, 9:50 a.m.

[If you don't know what ENIGMA is, I've included a couple footnotes at the bottom]

Over the last two years, I've watched as it seemed that every venture ENIGMA had undertaken, Yoyo paid someone complete in a matter of weeks. This is becoming unbearable. With time, Yoyo's questionably paid staff has made (however poorly) several strides which ENIGMA has thus far only demonstrated as a proof of concept. With them, Yoyo wooed their hoards of fanboys, touting utter nonsense about the wrong aspect they should be bragging on. For instance, when they started work on their PSP port (which I've not heard anything about lately; have they abandoned it?), the first thing they did was post a blog on how hard they've worked to optimize it. That's a great concept; they should be proud of their work, except for the fact that the blog showcased their implementation of an existing function (lrint), and the majority of the blog was an overview of the IEEE floating point specification. People ate it right up, nonetheless.

More recently, they've posted a blog about porting Game Maker to HTML5. I was shocked to see that several individuals on the community actually evaluated this beyond face value (I believe the stupid ones didn't see any value in converting GM to HTML5 at all, or didn't understand what HTML5 is, and so ignored the topic); the first several GMC posts actually brought up the very first points that came to my mind, and that's really unusual (typically I'd have to dig through piles of ass-kissing nonsense, which until now I thought was ubiquitous on that forum). Still, most of their following that frequents the GLog did nothing but glow at how much work they did on it, which apparently they did, but I know they're not going to be releasing their JavaScript-based runner and parsers open-source.

I'll cut to the chase. I'm not accusing Yoyo of anything, for once. They've got me licked in one dimension: resources. Every time I have a "cool idea" for ENIGMA, people don't hear from me for a month or two and then I implement it, and in the meantime, Yoyo hires someone and does three other things. I don't have time for trivia and PR when I'm working on something big. And ENIGMA is otherwise grossly understaffed, if one considers us as even having a staff. Yoyo can basically shit staff members, and it's becoming more and more difficult to compete with that. Here is where we stand:

IsmAvatar is a Java programmer, as I'm sure many of you are aware. She runs the LateralGM project, which ENIGMA still uses as an interface. She is also responsible for the ENIGMA plugin. The plugin is for LateralGM; it creates ENIGMA's pieces of the GUI and sends game data to ENIGMA itself, which is a DLL (or Dylib or SO).

Ism and I are working on a text editor for LateralGM. I'm about to abandon it because I have bigger fish to fry. Ism's to-do list for ENIGMA also includes parsing a number of settings files to allow users to choose platform, which is a problem in its own…

TGMG–you may remember him from G-Java or G-Creator–Waltzed in a few months ago and made ENIGMA work on MacOSX, iPhone/iPad, Android, and PSP. The problem is, he made modifications to the compiler's source to make them work, and we have no idea what those modifications were. We have his source code to everything but the PSP release; we're trying to coordinate with him to get the changes he has to make to the engine put into compiler setting files, but this has been a slow operation (he's infrequently online when Ism and I are). As such, we have nothing to show for the fact that ENIGMA can run on all those nice portable devices, or even OS X; we've received a couple reports that some really strange shit doesn't work on Apple (much of it, Java!).

r9k started a polygon collision system to replace Colligma, which Ludamad has recently volunteered to restart work on. I haven't pestered Luda about it (it's only been a couple days), but r9k has vanished, and he's not left us his source. He has been waiting on Ism to do some UI work that would allow the user to set custom polygon vertices. That hasn't happened (We pretty much have Ism spread too thin).

At present, ENIGMA is missing very few things before it can compile and run all the GM6 examples successfully: Tiles (it will compile and run without these, but look ugly), a default font (I'm not sure if Ism passes one), the score system (UI work across platform is a hack), instance deactivation (this is the big one), and more than likely, something else we haven't noticed. By removing the instance activation and the call to the score system, TGMG was able to get all of the GM6 examples working.

What ENIGMA is

For those who weren't here or weren't listening when I introduced the project a couple years ago, ENIGMA is a compiler for Game Maker. It takes GML and converts it to C++. It then passes the generated C++ to the GCC, which compiles it, optimizes it, and links it against a free implementation of the Game Maker library. This means faster, smaller, native code.

We have managed to preserve GM's syntactical quirks, such as the with() statement, and integer field access (object0.speed = 10). Instead of the runner interpreting your code, it simply makes calls to it. The runner is not a separate module; it is compiled alongside and linked into your game, meaning that unused functions can be omitted from it by the compiler. This means that a "Hello, world" program doesn't have to be 2 MB. The code also compresses marvelously, because we don't compress any code ourselves. I'd be happy to show it working, but at the moment I'm busy, and this blog is here for a reason. The release candidate after the fourth-phase release, R4, has not been formally released. You can download it here if you want to try it out. A platform example that works well is available here, but it does not utilize the collision event, which was only implemented a couple months ago.

The point of this blog

What I need is someone like we were when we started these projects. Or someone like we are now. When I started out, I knew little of C++ compared to what I know now. What I had was dedication. And free time.

Now, I have plenty of C++ experience, but I'm constantly swamped, and there's always more work to do. If I could make ten of myself, three of Ism, and another TGMG and Luda, we'd probably be equipped to finish the project. Problem is, I can't. Thus, I find I must pull a Jimmy Wales and give you all a personal appeal.

No, I don't want money. I want a few people with some C++ or Java coursing through their veins. You don't even have to be great about it, you just have to believe in this cause: defeat Yoyo. If you read that and your stomach churned with embarrassment over how naive and ambitious a statement that is, then you aren't what I'm looking for. You'll back away. You'll quit and go cry into a C# pillow. Or a Python pillow. Or a Haskell pillow. Pony up, grab your spear, and shout, "I'm going to fucking stab Yoyo in the goddamn face!" Then FUCKING DO IT. Or, I mean, join our IRC channel at irc://irc.freenode.net/enigma-dev and talk to Ism or me about it. If we're in the channel, we're likely at the keyboard. We could use a Java programmer (particularly one skilled with Swing), a C/C++ programmer (Ambition and capability are largely interchangeable; understanding how a pointer works or how to instantiate a template and understanding runtime complexity (big-O) is desirable). If you think you can bring anything at all to the table, we'd love to hear from you.

I can't shit resources. When I rub dried feces and paper together, all I get is a static charge micro coulombs in magnitude. Not money and developers. I know there's some great talent on this site, and more than ever since the GM5/6/7 crowd is starting to "grow up."

Go forth, and propagate. Or something.

Comments

mazimadu 13 years, 8 months ago

Let me ask you guys a very simple, practical question.

Why are you guys trying so hard to compete with Game Maker? I mean really, REALLY hard?

Last time I checked, ENIGMA (and by extension G-java and G-creator) was suppose to be a game editor that took GMs simple approach to making games and created compiled executables. Whether it be converting GMKs, creating .jar files or compiling code, the general idea was to make something that allows us to easily make games.

Why am I hearing about ports to PSP and iPhone from you guys? Why are you spilling all this bile of how Yoyo is not making it easy for you guys to compete? WHERE ARE THE EXAMPLES, EDITORS, PROGRESS etc you speak of? It has been over 4 years (5 for g-whatever) and we don't even have a working beta.

You guys started work on these projects many years ago with the intent of "beating" GM at it's own game using different programing languages. In that time a new version of Game maker has come out, people are monetizing their games, and many superior free and commercial engines (Flash, Unity, XNA, Construct, Torque, LÖVE, libGbx, heck even Multimedia Fusion 2) have released newer versions of their products. But you guys have nothing, NOTHING to show other than your utter hatred and contempt.

I am tired of waiting for whatever you have to show for ENIGMA or G-creator, you have nothing to show for your work. Besides, at the end of the day, all WE want to do is make FREAKING games!

Rusky 13 years, 8 months ago

G-Creator died, Enigma has an active forum and IRC channel, a wiki and public SVN access to a version that can, as Josh said, compile most of the GM6 examples. That's an awful lot to show for their work, I'd say.

mazimadu 13 years, 8 months ago

Show me an exe showcasing all the work that has been done over the past 4 years.

THEN try convincing my why I should even consider it.

KaBob799 13 years, 8 months ago

I'm sad that I can't help with enigma, but I only know a tiny bit of java and haven't touched swing in 4 years. I wasn't an expert then, so now I might as well be a noob =p But time is the biggest issue, I just have too much to do.

But anyway, I'll switch to using enigma as soon as it can handle my games as good as gm does. Which might not be too long from the sounds of it, if gm6 support is almost done.

@Mazimadu

You seem to be taking enigma personally o.o

edit:

@cyrus

did you edit your comment to make it seem like you knew I was going to comment next o.o we need to keep track of comment edit times =p

Quietus 13 years, 8 months ago

because mazi's games need C++ soooo badly. and yeah, i was going to say the same thing about Cyrus's post lol

Scott_AW 13 years, 8 months ago

GM has also lost my respect, and even if you're behind by comparison, I respect your efforts.

Make it support linux and android and you'll surely kick GM's butt.

JoshDreamland 13 years, 8 months ago

Well, I'd say Mazi has a legitimate bitch. I mentioned in the blog I haven't been keeping up with PR like I ought to be. I'll think about how best to showcase what we have… The problem is, ENIGMA's a really big, really nice puzzle piece that doesn't really fit anywhere. I've been trying not to tailor development to any one game or example, but I think it's best we start doing so.

And, mazi, I'm not trying to convince you to use anything. If you're happy with Game Maker, then by all means, use it; my job is to make sure people have every reason to prefer ENIGMA, not to convince them to do so.

Scott_AW: It does support Linux and Android, but only Linux is 'production ready', if you will.

It'd be ideal if we just had a bunch of little examples showcasing what we can do; I'm not sure a big one could show off all ENIGMA's features (it'd be like one of those English essays with 30,000,000 requirements).

mazimadu 13 years, 8 months ago

My problem with Enigma is focus. Your team has been trying to make an engine that can run on as many different platforms as possible without focusing on getting the core code to the point where it is reliable and bug free. If the team had focused on a single platform from the start the engine would have been ready a long time ago.

Heck, pouring more resources into the g-java project would have yielded much better results. You would have had a functional, cross platform engine that could be embedded into browsers as well as benefit from Suns incremental updates. You could have then ported it to C++ later and optimized the code along the way instead of jumping from pillar to post.

Thats what made me mad.

RetroX 13 years, 8 months ago

Quote:
My problem with Enigma is focus. Your team has been trying to make an engine that can run on as many different platforms as possible without focusing on getting the core code to the point where it is reliable and bug free. If the team had focused on a single platform from the start the engine would have been ready a long time ago.
Not really. The point of ENIGMA was to be able to have it work on multiple platforms. And "the team" is still working on everything else - it's just that the people allocated to the important systems, such as collisions, seem to be disappearing. If the collisions people hadn't disappeared twice, we would have gotten a basic system in place, because that's pretty much all that we're waiting for. The only reason that anything out of the core is being worked on is because the collisions are required for that, and they're not near completion.

I can see ENIGMA being usable by June if someone does collisions between now and then (which is easy in two months if you actually try, but most haven't).

JoshDreamland 13 years, 8 months ago

Quote: Dazappa
Oh, and to be honest, I'll be using GM7 as my IDE even if I do work with ENIGMA later because, sorry kids, but Java is slow and LGM is a snail.

We are constantly battling issues with Java's speed varying from box to box and platform to platform. Only recently has OpenJDK been able to run Java well enough to use LGM, which helped us circumvent an error with sun-java6-jre which led to the crash of the X server. Java is not the fundamental answer to cross-platforming, and although it would follow us onto Android relatively easily, it would not so well make the transition to other mobile devices or consoles.

Serendipity. Even Darwinism. Who are you, or who am I, to say which project was the more apt to survive? If you ask me which project was more suited to survival, I would tell you ENIGMA was, because that's where the chips fell. TGMG is now an important part of ENIGMA's team. It was his work that got it working on five different platforms.

Originally the focus was on Windows, but since half of the team preferred Linux, support was added for it, which involved temporary migration of the rest of the team. There's no such thing as temporary migration to Linux; soon, the entire team had taken up residence on the operating system. Windows became vastly more difficult to develop for as we took advantage of the nice syntax we could use in Makefiles on Linux, which led to the need for MSys on Windows. All of this was relatively minor; the real focus dissipation came with the choice to invest in C++.

I spent three months making a parser that could turn out all available types and functions from the engine file. It's not perfect, but the bugs are few enough that no one really notices them anymore. In the mean time, anyone who really wanted could have forked the project and finished it up; R3 more closely matched GM's behavior than R4. There would have been some losses to cut in doing so, but they could have been smoothed over when I finished my work. No one did. For the longest time, I was the only one doing any work on the system, so I went all out to make it compatible with C++, which makes it significantly more extensible. So yes, I did divide the focus, but no one did anything about it, and had I not, I would have probably lost interest. If I wanted the limits of Game Maker, I'd use Game Maker.

I don't know how G-Java would have fared with more resources, but I'm here now to obtain those resources for ENIGMA.