Infinitroid has a number of inspirations; probably every game I've ever played to some tiny extent. But the most influential were probably Binding of Isaac, Spelunky, and the NES and Super NES Metroid games. I hadn't heard of a procedurally generated metroidvania before, where randomly generated areas were unlocked by items that granted new abilities, and thought I might be the first to try it. At this point it's definitely been done though; Dead Cells was recently released and beat me to it, and I imagine other games have too (it's hard to keep track of everything in the gaming landscape these days).
original Flash-based version, often watching Northernlion's classic let's play series over dinner, comparing notes and picking up strategies. I love the demented abundance and unpredictability of the game; it just throws in so many weird items and combinations that you truly get a unique experience and sense of surprise each time you play. The core game design, like Super Meat Boy before it, is masterful.The Binding of Isaac and BOI:Rebirth are games that I've spent many fascinated hours with. I got way into the
Any Isaac fan can clearly see the parallels in Infinitroid, I imagine; though the core platforming mechanics and weapon system are very different, the basic structure of hand-crafted screens with randomized loot, shops, item rooms, etc. is pretty similar. I'm not sure I want to add quite as many items as that game; I became annoyed sometimes, especially in Rebirth, with the tedium of looking up items in a wiki. Probably not the way Edmund McMillen & co. intended the game to be played; but I'm a bit of a perfectionist / completionist I guess, and the game often punishes you if you don't know what you're picking up.
I'm thinking something between Binding of Isaac and Spelunky as an item-variety target; Spelunky has way fewer items than BOI:Rebirth but they work together with the game mechanics unusually well.
The early Metroid games, especially Metroid for NES, have a big place in my heart. I think I was about 7 or 8 when I first played it (I was born in 1980). At first I would pick it up for a half hour at a time, explore around the blue Brinstar area a bit, get killed, get bored, and rummage through my cartridge pile for another game.
I remember though, the first time I got past that, into a yellow area with lava and little birds that zipped out of manhole covers, things started to get interesting. This game is big! And when I found the elevator down to Norfair and the creepy fascinating music started, with rooms made of celluar bubbles and weird alien shapes, my 7 year old mind was blown. This was the biggest game thus far I had ever encountered, so much world to explore!
It got better, too, when I started finding weapon upgrades. Ice beam let me freeze enemies, hop on them and get up a vertical chute to find some new, cool powerups. Bombs let me find new secret areas, blowing up destructible hidden blocks, falling through fake lava, etc.
Modern gamers who didn't grow up in that era probably laugh, these were primitive times; but growing up in the 80's (or 90s too) you really got the visceral awe and wonder of those first encounters with new generations of video game tech. Just having a big world to explore, coming from single-screen games on the Atari 2600, was pretty amazing.
Playing Super Metroid for the first time was an awesome experience too, one of my all-time favorite games. The music is so evocative and memorable, and the world is intriguing to explore, full of secrets, unusual lifeforms, and strange block symbols to come back to later with the right powerup.
Spelunky is another favorite that I've spent many hours on. Some parallels are obvious - it's the canonical and (I think) first roguelike platformer, designed around permadeath and randomly generated levels. The responsiveness and tightness of the controls are fantastic, a definite inspiration.
Darius Kazemi did an interesting exploration into how Spelunky's level generation works (Derek Yu, Spelunky's creator, also wrote a very interesting book about Spelunky that touched on it) and I took some inspiration from that, like searching for places to put items and enemies by searching the tile geometry for specific shapes. E.g., Spelunky places the best stuff (gems, item boxes, etc.) in little "alcoves", 1-tile side gaps, based on whatever terrain the level generation process spits out in the earlier stages.
I tried to introduce some of that extra layer of randomness with a "snippets" system in Infinitroid, where the room generator finds suitable spots to hide an item in a wall, say, or up in the ceiling accessible by only via high jump. Randomized spikes in some rooms also use tile pattern searches for their placement. I don't think Infinitroid has quite achieved the level of unpredictable randomness that Spelunky has in its level structures, its rooms are a little more "authored", but it's definitely helped spice things up.
Spelunky is of course a masterwork of game mechanics too; every mechanic interacts with the other ones in interesting ways. Enemy attack patterns work together to present interesting emergent challenges, and things are structured to cause chain reactions sometimes that make you laugh out loud. I don't know how close Infinitroid will get to that either, but it's definitely a nice goal post when adding new mechanics.
One other bit inspired by Spelunky and Binding of Isaac: I hope to make a successful beat-the-game playthru last about an hour. That's enough time for a nice engaging game but not so long as to leave you clinically depressed if your run gets decimated by an unfair rush of enemies at the end (I've found some more "classic" style roguelikes like Dungeons of Dredmor have that problem, at least in hardcore mode; permadeath 3+ hours in is pretty depressing and makes you question playing again).
Braid and The Witness), his games and talks have hugely inspired me and taught me a lot over the years. In particular, his talk about programming indie games encouraged me to question a lot of "programming best practices" I had been dogmatically adhering to, and focus on doing things in the simplest and most straightforward way possible. He turned me on to some great articles by John Carmack, particularly one about inlining and another about functional programming in C++, that have made a huge improvement in the clarity and maintainability of my code.I should mention Jonathan Blow here too (creator of
In terms of game design, too, his talks have been fascinating and inspiring; he and Marc Ten Bosch did a great one called designing to reveal the nature of the universe, about how game design can be practiced like pure science or mathematics, establishing "axiom" game mechanics and exploring their ramifications, mapping out the most interesting territory and then skillfully presenting it to your players.
Casey Muratori too, for some of his excellent videos and articles on programming. One of them, about compression-oriented bottom-up coding, was massively helpful and is a process I've used for nearly every project since, including the latter half of this game and some large web projects.Wanted to mention
I've learned some good stuff from his Handmade Hero series and codebase, although unfortunately I don't have time to follow the show regularly. But the overall ethic, that understanding the underlying platform isn't that hard, and writing software without the support of 100 layers of libraries and APIs usually yields faster-performing, simpler and better results seems spot on. I think he turned me on to Mike Acton's great talk at CppCon about data-oriented design; modern C++ people are masters of architecture astronautism, making simple programming tasks as multilayered, abstract and impenetrable as possible, and it's entertaining to watch Mike pick that apart.
So big thanks to Casey and Jonathan (and Mike) for taking the time to share their knowledge and experience.
© 2017 Luke Rissacher