It’s been a few months since release, so I think this is as good a time as any for a bit of reflection. I don’t really have a blog or anything (I could use my portfolio site though, I suppose, or itch…) so I’m writing here! Obviously spoilers for Flipside, so if you’re interested in my games and don’t want to have plot beats exposed to you, maybe wait to read this!
I’d been kicking around the idea of a 3D Elephantasy for a while, even during the development for the original Elephantasy, but mostly later on after it was out.
I did a bunch of prototyping and dev work after Elephantasy released. Some of this involved working with another dev Somfunabulist (aka Myles) on a joint project that we both sort of fell off of. What’s important here is that I got a nice jumping/z-axis system working, based on one of my older attempts at making an isometric game. After we both fell off of the joint project, I got thinking about making another isometric game, which led to the Isometric Dungeon Crawler I was working on in late 2021 to early 2022. That project was also a sequel/spinoff of an old project, but I may talk about that another time. This also fell through, but it left me with a basic isometric game engine, props that could be manipulated/stood on by the player, and a good foundation for platforming. Now I just needed an idea for how to use everything.
One night, lying in bed, I started thinking about psuedo-3D and sprite stacking. This is a technique where devs will layer 2D images in slices to give something the illusion of 3D. I had an idea of making a 3D environment built around these kinds of 3D blocks, walls, etc. built up in 3D space, such that the camera could rotate accordingly and things would look right. It was at this point that I injected Elephantasy back into the idea; I had a mental image of Belle wandering around a lighthouse on a forested plateau, maybe jumping around, walking up slopes, and so on. It was a bit ambitious, even for me. So, I scaled the idea back a bit to work with systems that I already had. Thus, the project that would become Flipside was born!
The first big hurdle mechanically was getting the perspective and platforming to work. I initially wanted dynamic 3D platforms such that I could set up with the corners being points in 3D space, and then make them any size/shape I wanted. My first attempts at this were promising, but inevitably things fell through. Draw order and faking the perspective (making things appear behind other things in the 2D space) was the main issue, and it would continue to be an issue up until release. I had managed to get props (ie. pots, bombs, etc) to stack and act as platforms, both for themselves and for the player. This was a big part of the gameplay I was envisioning, and something I lifted directly from my inspirations for the game (Knight Lore by Ultimate, and Solstice by Software Creations). This caused more issues with perspective, however, and so I eventually scrapped the dynamic platforms in favour of making the world out of individual “tiles”. For a few weeks none of the tiles had side-textures (I was worried about causing performance issues) but I eventually figured that out too.
To quickly get into mechanics, each tile has separate height and base values; these dictate how large the tile/pillar is, vertically, which in turn is how collisions are determined. Props work similarly, except that instead of having dynamic height and base values, props always just have the same static numbers for their dimensions, and use those to determine collisions. Each tile also has a top texture, which determines their side-texture. These side textures are then placed in segments, from top to bottom, along the “sides” of the tile pillars. This way, if a pillar shrinks and grows, it will continue to look right. This was a bit of a pain in the ass, but the final look isn’t too bad! Best of all, it wasn’t too bad performance-wise! Hooray!
I came up with the story concept pretty early, at least partly. Belle, the main character from Elephantasy, had aged a bit since the first game; she now has a name (I had her name in mind since the first game, but I largely kept it as a headcanon) and she has learned how to jump in the interim. I knew that, mechanically, I wanted to have the player run around two separate worlds (Link to the Past style) (which gave me the idea of something breaking out of the underworld) and I knew I wanted to have a “belly of the beast” style level at the end, with some kind of deception re: death’s identity. I knew that collecting lost souls would also be important (though their names/personalities mostly came together later on in development). Ludos, the lighthouse keeper dog, was also an early idea, though he was less developed than he could have been. And finally, I knew that I wanted the needle to be a useable item in the final battle, which you could swing/throw like a spear. Other than that, though, most story beats got fleshed out on the fly.
I have rough maps from this time showing how the early-game areas would connect. I ended up building my own in-engine room editor specifically to avoid using Game Maker Studio’s default room editor. It’s a mess, but it’s my mess, and it gave me much more control over how the areas were put together than I otherwise would have had, imo. As I built rooms, I would add them onto physical maps on graph paper, which I used to place myself in the world and plan how I wanted areas to look. It was a tedious process, and ended up being what the majority of the development time was spent on.
As a somewhat related tangent, in Flipside, rooms are loaded on the fly from .ini files in the game save data; when starting a new game, a default set of .ini files is copied over to the save folder for use/modification. The only thing I (as a dev) could update room-layout-wise on players’ games was this default set of rooms. This lead to issues upon release, when some rooms would be broken and I couldn’t fix them for preexisting save files, because they were using the set in their save folder, not the defaults, to load the world. Go figure!
I also knew, gameplay-wise, that I wanted more items than the original 4-5 in the first game, all of which return in some capacity except the vine item. The vine was initially supposed to return, but evolved into the wand (which originally created floating platforms that vanished after a while). Some items had new uses too; the boots now allowed you to bounce/flip off of walls (a scrapped idea I had for Elephantasy), and the bird from the first game, Polnareff, became the method of warping in the sequel. Then there was the herb bag, a combo of the seed satchel from the Oracle Zelda games and the potions from Soltice; I liked the idea of a multi-tool item, which could do lots of things, but only a limited number of times.
Items could also be upgraded in Flipside, which meant coming up with secondary uses/abilities for each item. The issue, however, was redundancy. I wanted each item to have its own uses, so that none of them became unusable, and none became too powerful. I don’t know that I entirely succeeded (the bubble, like the scuba gear in the first game, feels either essential or useless, and the book can be ignored entirely on repeat playthroughs) but that was the philosophy behind what items ended up in the final game. In practice, height-economy became most important. Items that allowed for easy vertical mobility (like the herbs or the boots) were VERY good, and could circumvent a lot of puzzles. I have some gripes with this, but at the end of the day, the game is more a sandbox than a rigid puzzle game anyway. And it’s fun to figure out ways to get around!
Anyway, this post is getting kinda long, so I may do a separate post talking about the aftermath of release (which was successful, but also spiked my anxiety). We’ll see! All in all, Flipside was/is probably my most ambitious game to date, given how much shit I had to figure out on my own (level editor, perspective, “3D” platforming, etc.) so I hope folks have enjoyed it! If anyone has questions, lmk and I’ll add explanations if I can.
