My name is Josh Ventura. I am a software developer with a focus on compiler design and game development. I graduated from Ashland High School in 2010, and received a BS in Computer Science and Engineering from The Ohio State University in 2013.

Origins

When I was in kindergarten, I had an NES that had been handed down through my family. I wasn't very good at Mario, and only ever cheated at Duck Hunt, but Kirby's Adventure was slow-paced, manageable, and fascinating to me. It was mind-blowing that it worked, but being that I was only around five years old, the oddest thing to me was the strange distortion in the top-left corner of the screen.

Later on, my uncle gave me a Super Nintendo, and I played the hell out of Super Mario World. The game was fantastic, especially compared to its NES predecessor. The ability to save game progress and the variety of levels really makes a difference, especially to a kid. Video games were becoming bigger and more magnificent; the secrets in the game drew me in, but kept me distracted from the bigger picture.

Not very long after that—some time in second grade, or so—that same uncle passed me his N64, along with Super Mario 64. The controls were shaky, and the graphics were pretty bad, but it was easy to get lost in the game. My parents had thus far been inclined to avoid video games, or at least they did not normally buy me any, and I didn't ask. It was around this time, though, that the fact started to change. I made a friend who was frequently the first kid on the block to own the latest games, and when I'd come over, we would play them together, or I'd just watch him play. He eventually inspired me to ask my parents for Paper Mario, yet another fantastic Nintendo 64 title. The heavy use of sprite-based graphics—laughably simple terms yet outside my tiny vocabulary—afforded Paper Mario a degree of graphics well beyond those of other N64 games.

Come third grade, Nintendo released the CameCube. My friend was quick to own one, and happy to share with me. The launch title, Super Mario Sunshine, had comparatively incredible graphics, smooth controls, well-honed gameplay. Once again, the capabilities of video game consoles seemed endless. And then, one day, my friend called me up and told me about something new he bought: a device called an Action Replay.

When he told me he was making Mario fly around the game, I didn't really believe him; I assumed he was pulling a joke or that the game was having some weird glitch. When he showed me, that is when my perception of video games began to change.

Within a few weeks, I bought my own Action Replay, and began trying it out. It was unbelievable; all you do is enter some "codes" into the device and you can change the game's entire reality. I was astonished. My friend told me you could get more codes online, and so my 56K and I did just that. But then I started to wonder... What made the codes work? And so began my whirlwind tour of computer science and cryptography.

It turns out that the codes were specially encrypted dwords, where the first three bytes gave the address in the GameCube's tiny memory, and the next byte gave the new value to assign. I quickly learned to work with hexadecimal numbers, and how games functioned internally. Encryption was used by the vendor to prevent homebrew code development, but was quickly broken by a resident programmer, Parasyte, whom I came to look up to.

It was then that I decided I wanted to become a programmer. I downloaded a copy of what I guess was GCC, because I was going to learn C, just like Parasyte. This wasn't to be. Unable to find an IDE in the mess of nonsensically-named binaries I had downloaded, I elected to try other venues. Eventually, I went directly to finding how to make games.

It was then that I stumbled upon RPG maker. I began immediately learning its custom flavor of script, reading manuals included with the release. I learned how to assign variables, how to print variables, then basic control flow. There were, to my recollection, no for loops. It is possible I missed for loops, but I never used them with RPG Maker. It was fun to write little text-based games in the script, but I could never get a standalone executable of any sort to compile with the toolkit, and so eventually, I gave up, and went to look for another toolkit.


Game Maker years

The next kit I found was Game Maker, a program written by a computer science professor in the Netherlands. I obtained his newest release, Game Maker 5, and gave it a quick look-over. My first impression was that it was a downgrade; I noticed the "Sprites" folder and lamented that I had left RPG Maker specifically to avoid making games about fairies and magic. I hemmed and hawed for a few days, but eventually decided to give the Game Maker manual a read. I quickly learned that sprites had nothing to do with magic or fairies, and began reading through his manual cover to cover.

By sixth grade, I had made my first game. From a code quality standpoint, it was awful. From a physics standpoint, it was bad; gravity was replaced with an inversion of vertical speed after jumping a certain height. That said, the game as a whole was quite imaginative, and rich with platform elements. In retrospect, it was a pretty good first game.

Game Maker was really something special. It allowed me to express some very cool ideas in the form of interactive games or procedural animations. I got the most fun out of writing small, interesting game elements as opposed to following through to complete a whole game. I learned many amazing graphical techniques, and played around implementing dozens of genuinely fascinating game elements. I loved every minute of it.

My game development career would continue with Game Maker until a few months after my fifteenth birthday. By that time, I had gleaned a firm understanding of what programming actually involved, but had little knowledge of the tools, languages, and algorithms that powered my use of Game Maker. I decided that my last act as a Game Maker user would be to construct a big, polished game, based loosely on Kirby: Canvas Curse. This continued quite effectively for a while, but it was around this time that a company called Yoyo Games moved in to take over the development of Game Maker. They entered with a wake of extreme unprofessionalism and poor coordination; they conducted themselves in a way that made them seem extremely unofficial. Even Dr. Overmars had presented a better illusion of Game Maker as a respectable product, but then, I was quite young throughout the bulk of that.

It wasn't long before my Game Maker enthusiast friends and I grew angry at Yoyo for their combination of corporate antics and their inability to effectively run the Game Maker project themselves. I was happy to chime in with suggestions, but these suggestions were largely ignored or dismissed. One of these suggestions was a compression tool which snipped off the binaries used by Game Maker games for distribution, and then reattatched them client-side for play. I elected to enact this suggestion on my own, and was met with opposition similar to what GMBed received. GMBed was a project run by members of the G-Java team which could run Game Maker games in a browser. The Yoyo EULA had something to say about both of these projects. When confronted, a staff member ensured me that they would be doing something "similar" on their own, which I took to mean "we're running with your ideas; cheers."

Eventually, I became completely fed up with Yoyo, personally. Ceasing all of my own game development, I shifted my focus to implementing one of the other ideas I had offered. This idea grew into ENIGMA, a project I operated throughout the rest of high school and into college.


The ENIGMA Development Environment

ENIGMA's history is a bit long and intricate to tell all at once. I'll write more about this next I'm asked.