Sunday, February 7, 2021

Problem Solving Engine

I've been struggling a fair bit lately. The problem is... well, it's not. I haven't had a real problem to deal with for quite some time now. The complete lack of a problem has led me to re-analyze and re-experience everything that I can just to figure out what's going on when I have nothing that actually matters more than just sitting here. The only thing that's really clear right now is that there is something that figures things out for me. I call it the Problem Solving Engine.

The problem solving engine is that feeling in the back of your head that looks at something and tries to organize it without you needing to do anything. Its goal is to bring order and satisfaction to a world where everything can change at a moment's notice. The engine can be applied to basic survival needs or to that one boss in the video game that you couldn't get past and suddenly figured it out right before drifting off to sleep.

My problem solving engine has been focused on two questions: "How do I survive through the day?" and "What is wrong with me?" These questions are baked in analysis, fear, and necessity. The first question is rooted in the lizard brain; it's the thing that tells you that you need to survive today for the sake of living tomorrow. It's something everyone has to a reasonable extent, or we'd all stop eating and walk into traffic.

The second question is more pernicious. It's a kind of all-encompassing question that keeps turning back on itself, The question must be answered and it must be acted upon or things will never change. Without the knowledge required to answer the question, you would be forever trapped in time unable to move forward or backward or any other way that wasn't "all these things are wrong with me". The question itself has weight, power, and compelled me to act.

The only time I really got away from the survival mindset was when I found something that I really, really wanted to do. The problem solving engine could stop focusing on the ever-present questions and could start working on something else for awhile. I could forget anything else for days or weeks at a time and just immerse myself in a new game or a new place or just talking to a friend for awhile. The easiest way out was to solve a problem that was difficult and meaningful in some small way.

That was true a few months ago. It feels like an entire lifetime has passed since I finally had an answer to these questions. It's... freeing. The entire weight of my problems has been lifted off of my shoulders and is floating around in the ether somewhere else, never to bother me again.

I've been floating around in a daze. Everything felt like a dream that I could wake up from and go back to the cruddy way of life I was living before. I've been waiting for the rug to get pulled out from under me, just watching out for some small thing to set me back to before I could even think about getting here. That pernicious fear is something that has reared its ugly head, and I keep shoving it down until it drowns.

I'm mostly past that. So now what?

The past month has been mostly spent mired in nostalgia. It's been quite interesting seeing how much my preferences have changed. I've gone from escapism and guilty pleasures to unfettered creation - when my head allows it - and I feel like I've gotten more things done lately than I have most of my life.

I had a kind of pathological aversion to something that I had done before. It seemed like I kept trying to find something new and exciting or I wouldn't have any purpose in doing anything at all. There's a kind of hunger behind it; constantly seeking new information, constantly craving answers that I didn't have to solve something that couldn't be done. That problem is completely gone and I can re-experience everything to my own liking.

The problem solving engine is alive and well. In fact, the problem solving engine is doing better than ever. I don't think I could turn it off even if I wanted to. This engine lets me feel useful. My body may be a steaming pile of crud, but it's all I've got and I can do anything I set my mind to.

There's nothing stopping me anymore. There's also nothing propelling me forward. It's been weird; the problem solving engine has applied itself to that dreamlike state of "what if?" and "this is my life now" and has mostly settled on "There's a 0% chance that things will revert so badly that I have a migraine for 3 months again." I want to say that is a relief... but in reality, it's nothing.

I wanted nothing. Absolute nothing, the inability to feel and change and be anything that could be real or fake or even remembered. That kind of absolution is unsatisfying and meaningless. The absolute lack of anything that had any real meaning in my current life meant that I had no frame of reference and nothing that I actually knew I could do. I can fix things when they go wrong and I can improve things when they're bad. 

What can I do when they're good? The problem solving engine doesn't stop. It's a consuming feeling, gnawing at the edges of reality, seeping down to my very core. The feeling wants to be useful. It strives to improve my situation in all circumstances, no matter how good I may be doing. That kind of feeling doesn't go away with time; the engine hungers, never sated, always striving for satisfaction and perfection.

"What can I do when times are good?" 

That question is what I've been wrestling with since the start of this blog. I want to do something with my life. I can't stand the thought of being reduced to a drooling pile of flesh that can't do a single worthwhile thing in my life.

"I can change the past."

That... is an answer that I did not expect. What kind of crazy answer is that?! It's completely absurd to try and change what was before. We have history to respect. There are lessons to be learned from the way that we lived and grew and did the best we could at the time. Everyone makes mistakes, some worse than others, and each time we make a mistake we grow and change our behavior or perspective with the inadequacies we've stumbled into.

The very nostalgia I had been swimming around in was the answer that I had come to. Things were different back then, and I have a different idea of how things should be in my head than they actually were. The amount of fantasy, just trying to improve something because I couldn't improve myself, was overwhelming and awesome and one of the only things I cared about. In fact, it's one of the only things I care about now; I can enjoy other things, but there's still a potential to be had from the worst sources.

Each and every piece of content I've been going through has gone through a process of reclamation. Entire years have gone to waste as I struggled to survive against everything that was going against me. I don't just want to see the works of our past for what they are. I want to see them for what they could be, what it might have been if they had just existed in another time. 

The problem solving engine is taking one thing at a time and spinning it into a new creation. It's been overwhelming, but good. The creation process is pure and no longer tainted by fear. I think... I'd like to make something as a way of bringing everything together. Let's take my experience and turn it into an experience that I would like to share with everyone.

I don't have any questions left to ask of the universe anymore. I think that's for the best.

Sunday, January 17, 2021

Does a Perfect Video Game Exist?

A perfect video game is a game that everyone on the planet can enjoy from the day they start playing it to the day they die.

I don't think a perfect video game will ever be made. Not every game appeals to every person. Each person is going to have their own taste in the way they experience a game, and what is ideal for me won't be ideal for anyone else. Nor should a perfect video game exist; if one did, it would make every other video game pale in comparison.

When I think of the closest thing to a video game can come to perfection, a few names pop up again and again. Minecraft is the first and closest example that currently exists. It can be played by anyone for almost any reason at all; the missing piece of narrative can be found on Youtube, in every person sharing the story of their Minecraft world with anyone willing to watch. 

 
 Skyblock!

Minecraft is such a joy to play. It's an infinite world that resembles a sandbox that has so much variety in the types of sand that it may as well be something else. The game can be understood immediately by anyone looking on, even for the first time. You can play by yourself or jump on a server to have fun with friends or strangers. When the game runs dry, all you need to do to reinvigorate it is download someone's map, install some mods, or even step away for awhile and let your mind wander.

I've built my fair share of Minecraft worlds since release. There's a whole youtube series on a modpack called Magic Maiden where cute little maids were perfect stand-ins for soldiers. Being able to command my own personal army while delving into a dungeon and completely wrecking the entire world as I went along is such a unique experience that I was still playing it up until 2018 when the Aquatic Update released.

In the past, I would have said that Minecraft was a wonderful game with a flawed experience in its gameplay loop. The end result was always worthwhile but it took a long time to get there. Mods in Minecraft's early life span were very popular to shore up some of the missing content and add in systems that could be in the game someday. 

Now, the game doesn't really have any glaring flaws. The worst I can say about the game is that you can't get more than 200 people on a server or that it doesn't run well on every computer.

 
Who put Touhou in my randomizer?!

Super Metroid is Nintendo's shining masterpiece of a platformer that did all of the right things at the right time. , but the game is designed to be played multiple times. You get better and better at it each time the game is played and the game rewards you for getting better. 

Super Metroid is one of the most ran games in all of speedrunning experience. The game has a functionally infinite skill ceiling. It's a game that anyone can get into due to the low skill floor. The amount of mastery you can express over the game and the sheer amount of competition that can be eked out of a game that is only 3 MB in size is quite astonishing.

Super Metroid only has a few flaws. The graphics are dated due to being designed for a CRT and the controls are kind of weird to wrap your head around. There's a concept known as the "Metroid Moment", where you can't figure out what to do so you start bombing everything you can see. The very end of the game has a door that you can save in, and can never go back. A proper update to the graphics via hacking and a control scheme that closer resembles Metriod: Zero Mission would fix nearly everything.

Super Metroid by itself isn't that interesting to me. When you strap on another game and randomize both of them, well... a thousand hours of my life have been very well spent. I have some friends that like to race against me and there's a niche speedrunning community around this ascended meme that I can poke at any time. It does help that both of the games are masterpieces in and of their own right; putting them together like this has to be the crowning achievement of ROM hacking.

The experience of running two games side-by-side and figuring out the best route to get from point A to point F is quite compelling. The technical skill to do this fast is also quite fun. The worst thing I can say about strapping two games together like this is that Super Metroid has roughly 40% of the time in any given run but requires far, far more skill to pull off at any decent speed. That and the bugs.

Mabinogi is my go-to for a general gaming experience. The sheer amount of content that you can pull out of an MMORPG that is currently 16 years old is something that only really happens in a game that's constantly worked on by a large team. The game is still putting out content to this day.

Mabinogi's combat system is quite unique. It is best described as rock-paper-scissors-lizard-spock meets Dark Souls. Most of the skills have strengths and weaknesses, including the basic attack. You have to be aware of what each enemy is doing and have the game knowledge of what every skill does. Skills have massive penalties for guessing wrong. There are large charge up times and huge moments where you get stunned from an attack and can't do a thing.

Characters aren't broken up into classes like other games in the same genre. Instead, your character can learn every skill in the game. Characters are differentiated by the amount of training they want to do in a skill, and a lot of skills have learning requirements based on the level of other skills. Spend enough time using each skill and you'll feel like you master both the mechanics and the skill leveling system.

Mabinogi's crafting system puts Minecraft to shame. Every skill in the game can be trained, including life skills. Each skill has a minigame for processing or finishing a product, and the end results can be worn or used for other crafts depending on whether it's a utility skill, like carpentry, or a finishing skill, like handicraft. Enchanting is present in the usual MMO modifier style, but it's generally forgiving to use. Just ignore the pay-to-win reforging hammers added in 2016 and all is fine in the world.

Dungeons complement both of these ideas so perfectly that I'm surprised I haven't seen it elsewhere. You can enter an instance of a dungeon, fight off room after room of enemies, gather some of their loot, and pick herbs or mine ores along the way. You can get weapons, crafting items, or enchant scrolls at the end of the dungeon, but it's random so you're encouraged to try the same dungeon multiple times.

The story is something else. Mabinogi's entire world is steeped in Celtic lore, until it's not. One day you'll be working through the rolling plains around Bangor and hearing the story of Lugh, the Knight of Light. The next day you'll be exploring the icy land of giants or the lost desert of the elves. The story progresses from searching out the shadow world, to gods and alchemic magic, all the way up to divine creatures trying to corrupt everything in the entire land. Quality here is good and the variety has to be played to be believed. 

No old MMORPG is complete without completely arbitrary side content. There's a land of forever carnival called Festia that rolls the idea of carnival rides, christmas, and various other holidays together in a place you can warp to at any time. You can bring out your inner merchant

I really want to play Mabinogi again. Unfortunately, the game has bright white full-screen flashing that easily causes migraines if I see more than two. One of the reasons I played so much of the game was that there was a modding system that could change some of the client-side graphics. Flashing could be disabled, shadow mission instances could have maps showing where the orbs were, and there was a bunch of other useful effects that mods provide.

As much as I want to play the game again... I do not wish to torture myself. The modding system is updated sparsely, if at all. Some of the content is still a huge amount of fun, but some of it false flat compared to everything else the game has to offer. Ranking up skills require ability points, and when those are gone the urge to train anything vanishes.

There's also a few things that don't belong. Shakespeare does not belong in a game about gods and celts, and neither does alchemy. At least alchemy was worked into the story in a way that made sense... sort of.

This game is perfect! Except for, y'know, the bugs

I do think that a video game in a single category can exist, and maybe even cross across quite a few genres to pull in a lot of people. Minecraft is certainly evidence of that. I don't even think that a perfect video game should exist. There's a lot of value to be found in the flaws, quirks, and bugs that come with games. Sometimes the flaws can make the experience that much better. The bugs make things more memorable at the very least.

Friday, January 15, 2021

Reclamation Project - Part 5.5: Deciding how to move forward

Any time I sit down on a project that I'm interested in, I like to get ahead of myself just a little bit. The process works in a loop: I pull myself ahead a little bit to anticipate what's going on, compare that to the existing work, decide how long it's going to take based on previous steps and experience, and I make a decision. This process has some of the benefits of foresight, hindsight, and analysis baked into the work. There's a lot of value in trying to predict what I'm trying to do.

Sometimes that process runs into a roadblock. For this project, the roadblock was simple: I want to make a game, a platform, future games, artwork, designs, and self-evaluate all of that simultaneously. The roadblock was also far more complicated than I could have anticipated.

Building on top of a project that is a gibbering mesh of experimentation, prototypes, ideas, and eclectic half-built systems is sort of like riding a unicorn on top of a mine cart track in the dark. It's definitely possible to move forward because the unicorn glows in the dark, but it's bumpy, uncomfortable, magical, and I'm sure I could get to the end... but not without getting thrown off and hitting my head somewhere.

I've decided I'm going to take my base project and wrangle it into the one thing it doesn't have currently: plans. There's a lot of digging I've had to do just to get things in order. I've had to uncover ideas that are years old and try to tie them together in a nice bow. Some of the concepts don't work very well together and some of them work too well, so I'm having to segment out the different ideas that are basic and the ones that are game specific.

Essence HUD for Hyper Metroid Remake

I'm currently working on a design document to refine a lot of these ideas. They work pretty well in my head, and a good deal of them are based on working code. Taking the design and turning it into something real should take a lot less time than writing everything from scratch.

I would very much like to take this design and show it to others. If someone has the impetus to actually work with me in the future, it would be very, very valuable to show them a design doc so they can wrap their heads around how the systems are supposed to work and interact with each other on a conceptual level.

Once I have the base project built up I can go into detail on how to dissect and rebuild a level. I can also share artwork and the process of making it for a game with a particular design in mind without stumbling over everything. I'll probably release a working prototype with my avatar as the main character, so stay tuned for that.

Working screenshot of a broken UI image. Circa September 11 2020

Monday, January 11, 2021

Progress Update - January 2021

 I think this was inevitable.

It's one thing to tear apart a game. The entire thing is like a puzzle; I can pull out each individual piece, examine it, take a lot of notes, and put that piece in a box for later. I can break the piece down into the bits that comprise it, the process it was made out of, and identify every single limitation that was placed on it. I can even start making a new piece to slot back into the same slot.

It's another thing entirely to put the game back together. Games are built in a completely different way than you would build a physical device. Every single thing that exists is something that only works in your head. There are no properties to the game until we actually define what a game is. Even using another game as an example, we can make changes to the end result that turn the result into something unrecognizable.

...

Trying to put anything into words is difficult. I keep using analogies to try and relate what I'm currently experiencing to something concrete and real. That way of doing things has served me well until recently, where everything seems to be going right in a lot of ways that I never expected to happen. Today feels completely different than a month ago, and I think that's a good thing. Difficult words still mean the words come out instead of getting jammed somewhere and buried so deep that they can't come out.

I am finding myself with an abundance of time. A lot has improved in my life lately. I feel like everything I know has upended itself and I've been wandering around scattering pieces of thoughts and ideas around for so long that I lost track of where I wanted to go. It's hard to explain exactly what has happened... it feels like I can think now, and anything that I want to do gains 100% of my attention. I have been putting in maybe 30% until recently.

30% isn't right. 30% is all I had. I was spending so much time trying to figure out my problems, fix everything in my life, and move out of my absolute hell that was a series of migraines and sleep deprivation that led to more migraines and sleep deprivation, I didn't have time for anything else. My other hobby is giving me a lot of hope for moving forward. Let's focus on this one for awhile.

I don't just want to gather up my thoughts. That's all I've been doing for the past few years. Instead, I want to make new and exciting experiences and entire worlds out of the ideas that I've simply ignored for so long. I want to take other people's works that are both wonderful and terrible and make them into something great. I want to create a system that can work with all of that, and to build upon it in the coming months.

There's a lot of designs I have stored in scattered files, fragmented and disorganized. Let's turn those into a fully fleshed out design document. Heck, let's overdesign the entire thing so that way any game that wants to come into being can just pull parts out of the design and ignore the rest.

Some of the design already has working code. The code has more structure to it than loose files, but like everything else I've done for the past few years it's unfocused, unpolished, and hidden. I'd like to build a game on this system. Maybe ten. Who knows; I'm not one to pick anything and go halfway with it.

...

I'm not sure how I'm going to organize a design page yet. I have been putting off doing this for awhile; peeking into my creative process is something that I am not too keen on sharing, but it's better than languishing on the sideline or "suddenly pineapples" happens.

The end goal is to remake Alisia Dragoon. How do we get there? Plans. Lots of creativity. Lots of effort. Lots of love. A bit of snark and a blog to document it all.

Friday, January 1, 2021

Game Adaptation Notes I

I have a lot of notes about a lot of games that I wanted to adapt into a system at one point. Here's a posting exactly as they look like, just so you can see what I'm working with.

mDiyo
Basic Abilities
- Basic platforming
- Wall Jump
Hello! My name is mDiyo, and I have studied the likes of other characters in my style. I have the awesome ability to copy all of their abilities and take them for myself. Copying them directly is boring though. Why would I make myself another copy of Mario or Samus when I can combine them both into a single upgrade? For that matter, why would I want to combine multiple upgrades into a single item? Why wouldn't I?

Rule 0 applies: do whatever makes the most fun happen.

Basic Upgrades

- Float Jump
- Source: Various, Princess Peach
- Key: Pits
Have you ever tried to jump across a long gap and realized that the other side was just out of reach, no matter what you tried? Find yourself cursing the game creator and throwing your controller across the wall? Just hover across the entire screen, problem solved!

The behavior I would like here is to slow down the rate at which gravity affects a jump. That should allow for longer jumps that aren't just hanging around in mid-air for a long time, and give the player a lot more control over the jump.

- High Jump
- Source: Various
- Key: Ledges
I don't see a reason not to include this. It's a standard video game upgrade. If it doesn't fit, then it doesn't fit.

- Midair Jump
- Source: Various
- Key: Pits, ledges, or other places out of reach
This is also a standard video game upgrade. Most metroidvania games have one of these somewhere, usually at the beginning of the game. Metroid games are notable in that they don't just have a double jump, they either have a single jump or infinite.

- Dash Boots
- Source: Boho Youyoumu and Celeste
- Key: Difficult or awkward areas to traverse
Instead of a simple extra jump in mid-air, this ability launches the player in a direction from where they currently are. Clever use of this ability can move the player in L or V shaped directions

- Wall Grab gloves
- Source: Celeste
- Key: High ledges
Celeste pairs a midair dash with the ability to climb up and down walls, albeit with a stamina mechanic. All of Celeste is about tricky platforming sections and overcoming adversity; the mechanics complement that nicely.

- Dash Charge
- Source: Metroid series (Speed Booster)
- Key: Speed blocks
Run for a short, continuous amount of time and Samus will build up enough energy to run at breakneck speed. Her entire body becomes a shining mass of kinetic energy that is capable of destroying enemies and specially reinforced terrain in her way.

The speed booster has a hidden ability: Shinespark. If you push down on the controller you can store your speed and release it into the air, careening off into a new direction

- Flippers
- Source: Zelda series
- Key: Water
Can a character swim without fippers? Maybe. Can they swim well without flippers? Probably not.

Outsize of the Zelda series this is probably an ability built into the character or not present at all.

- Breathing device
- Source: Ecco the Dolphin, Maptroid
- Key: Oxygen
The breathing device allows the player long access in environments that would otherwise not be available. Deep underwater, space, hazardous gas, or anywhere else that doesn't have normal air applies. Ecco gains this as a story upgrade from the Asterite

- Barrier Suit
- Source: Metroid series
- Key: Heated areas

The Barrier Suit is Samus's most iconic look. It's also kind of a boring upgrade. Heated rooms do constant damage to the player while they're inside and having the suit negates that effect. It is nice to see particularly hot areas being dangerous instead of lava being no more than hot red water.

- Varia Suit
- Source: Metroid Fusion
- Key: Frigid areas

Metroid Fusion launched first on the US version. This was the first game that Samus had to deal with cold, therefore the badly translated name is the true source

- Gravity Suit
- Source: Super Metroid
- Key: Waterlogged areas

The ability to walk through water after getting the Gravity Suit has always bothered me a little bit. It's a perfect upgrade for a heavy tank kitted out entirely in futuristic armor and complements the rest of Samus's power set. For a magic-geared character however... I would rather have a full swimming mechanic and a way to speed through underwater tunnels in a much more well defined level.

- Hazard Suit
- Source: Metroid Prime 3

Protection from the hazardous effects of acid and fuel gel. Basically a replacement for the barrier suit with the additional bonus of protecting from acid rain. This would be nice at the end of Super Metroid where deep acid still runs through your suits.

Equipment

- Power Ring
- Source: Metroid Series
- Key: Combat, doors

Samus's main weapon is a beam cannon that can be upgraded. Each upgrade has unique mechanics, from piercing through walls to
- Charge: Hold attack to shoot off a concentrated blast of energy
- Ice: Freeze enemies in place. Primarily a way of making platforms out of enemies
- Wave: Pierce walls, attack enemies from places they can't get.
- Wide: Shoot 3 beams of energy instead of one. Beams tend to be as large as the player
- Plasma: Absolutely devastating. Pierces enemies and does massive damage

- Ice Ring
- Source: Samus, Metroid II: Samus Returns
- Key: Various platforming challenges

Samus Returns did an interesting thing by separating out the ice beam from the other upgrades. The controls in that game are a bit overwhelming; you need to use the touch screen in addition to every button on the DS. This is a fair bit better than the clunky weapon selection in Super Metroid, but I think we can do better.

- Magicannon
- Source: Dynamarisa
- Key: Doors

Samus uses missiles to open up red and green doors. Let's replace that with a cannon and upgrade it over time. Wrap regular and super missiles together in the same way that Fusion does, steal the R-button selection of beam vs cannon, and call it good.

- Grapple ring
- Source: Metroid series
- Key: Grapple points, platforming challenges

Super Metroid is the place where the grapple beam was used the most. It's also the place where grapple was very awkward to use. I need to do a lot of testing to see how useful this whole mechanic is. I'd like to do the thing justice and make sure it's a worthwhile experience instead of a clunky mess of frustration.

I think we should have a standard controller layout with beams on one button and support on a second button. Hold R to swap between normal and auxilary functions (Beams/Missiles and Ice/Grapple)

Mini Slime
- Source: Samus, Morph Ball

Morph ball is Samus's most iconic ability. What was originally a unique solution to a new design problem and a technical limitation on the NES turned into something that defined an entire genre. In classic Nintendo fashion, the problem was condensed and crystallized into a single action: turn Samus into a ball. Other companies would have two characters that could do different things, spread out the idea across multiple games, or even do something more sensible and make Samus crawl.

The best way to examine the Morph Ball is to pretend that it's a separate character from Samus herself. This isn't just a simple transformation; the movement, abilities, and hitboxes are all different. There are different upgrade paths, the controls are separate, and in the case of Super Metroid the ball can fit into places so small that you have to wonder where the rest of her mass went. There's only one answer: Samus is a magical girl!

[Any technology that is sufficiently advanced is indistinguishable from magic]

All of Samus's abilities seem to be based on the idea of converting energy into matter. Missiles, bombs, and beams use energy absorbed from the world, enemies, or from Samus herself. Her suit is the catalyst behind this; while it's accurate to say that Samus is a magical girl, she also relies heavily on technology and training to make this happen. The only canon explanation is "Chozo science" so let's just stick with that.

mDiyo doesn't want to outright steal her identity, so let's take the mechanics and twist them into something else. I've been a big fan of slimes for awhile. Why not create a little buddy that has the power of alchemy on its side? A bit of springy things here, a couple things over there, and we can make some interesting, new game mechanics.

Mr. Slimey
Basic Abilities
- Basic platforming (poor)
- Command
-- Trampoline
-- Fling

- Acid Spit
- Source: Morph, Bombs
- Key: Destructible terrain, not obvious
Bombs are small but powerful energy blasts that can destroy terrain and reveal weaknesses that would otherwise not be present. Let's replace that with an acid spit that lingers for a bit. It's a bit harder to control, but

- Acid Rain
- Source: Metroid Series, Power Bombs
- Key: Destructible terrain, heavy
Acid, acid everywhere. Spread it out on everything nearby and let it flow through all the cracks.

This one might be a bit dangerous to nearby characters.

- Wall Climb
- Source: Metroid II, Spider Ball
- Lock: Large walls or ceilings

Spider slime~ Spider slime~ does whatever a spider does~
Shoots a flange out of its head~
Catches itself on ceilings high~
Look out!
Here comes the spider slime~

- Boost Ball
- Source: Metroid Prime 2
- Key: Half pipes, speed blocks, speed related puzzles

There's a great Super Metroid romhack called Ice Metal Uninstall that has a 2D version of the boost ball. It's a lot of fun to careen through the terrain from a standstill. It's reminiscent of Sonic's spindash, but less useful due to the level layout.

Sunday, December 27, 2020

Reclamation Project - Part 5: Technical Breakdown of Level 1 (Alisia Dragoon)

Let's take a look at level 1 of Alisia Dragoon. We're going to dissect every aspect of this level, from the overarching design down to the individual pixels. The main tool we're going to be using is Gens Rerecording. swapping out layers and grabbing a whole lot of screenshots. Our main reference is an excellent technical writeup on how the Sega Genesis/Mega Drive renders graphics.

 Resolution

The first thing that's noticeable is the resolution of the game. All of the images are uploaded in their original size - 320x224. That's noticeably smaller than your monitor is, and if you're using a modern 4K display that may be so small that you can't make out any details.

Old CRT style TVs had a lot of variance they could do. Their theoretical maximum was 1280x1024 projected dot beams on the screen, but unlike our modern pixel counterparts they could easily enlarge each projected beam to do something "smaller".

Width to Height Ratios
- TV: 1.25
- SNES: 1.1428
- Genesis: 1.4285
- Modern (16:9): 1.7777

The SNES had an advantage on older TVs. 8:7 ratio is a lot closer to 10:8, and if you scaled them up they would look very close. This is a big technical reason why Nintendo games seemed to have a characteristic look to them: the game screen they were working with was close to square and TVs were close to square.

The Genesis, on the other hand, was ahead of its time by supporting a widescreen format. Most TVs had a border where the light bled off of the screen to hide content and a whole bunch of other details I'll go over in the art analysis post later. For now, I suspect that this will make scaling up a Genesis game a lot easier than a SNES game. All we need to do is scale up the image and extend it a little bit.

If we crop out the UI and overlay that on the previous image in red, that looks as close to a modern display as the SNES did to an old TV. We may be able to capture not just the gameplay, but the feel and experience of watching the game as well.

Tiles

The entire game is broken up into 8x8 chunks of data called tiles. This is a technical limitation that applies all the way through the system, from the layout of the level, to the scrolling background, and even down to the characters themselves. The main reason why things used to be so small or proportioned so weirdly is because managing everything in the tiny amount of RAM consoles had was a huge technical challenge.

 

While sprites do have the same 8x8 tile limitation, they can be defined in larger groups of tiles up to 4 tall and 4 wide. Multiple smaller sprites can be used in place of a larger one to make a full character; Genesis games are known for having multiple fast moving sprites on the screen all working together to make a frenetic, fast-paced experience.

Alisia's sprite is two groups of 3x3 sprites all working in tandem - the legs and upper body seem to be animated separately. The caterpillar is made of 6 1x1 sprites all moving together and stitched into a whole character behind the scenes.

 Rendering layers

Gens organizes layers a bit differently than the writeup lays out. Scroll A is used for parallax backgrounds, Scroll B is the terrain and foreground, and the window layer is completely missing. I'm going to focus on how these layers are used in the game. In order:

 
Distant background - Scroll A, low priority

The back layer is used for a technique the Genesis is famous for: parallax scrolling. In Alisia Dragoon this layer is used to show distant background details. Clouds, mountains, and trees all appear to move slowly compared to the camera and gives the entire scene a depth that wasn't possible in consoles before this generation. 

Some of the odd details are hidden under terrain or the UI; the only way you'd be able to see this is by removing other layers that render on top.

 
Terrain - Scroll B, low priority

Most of the level is rendered on the middle layer. This layer is what gives the illusion of the level moving as the player traverses it. Everything that scrolls at the same basic rate, from the ground to these large trees, is here.

It's interesting that the UI is rendered on this layer despite being a part of the terrain. My best guess is that this is some kind of processor saving technique because the UI doesn't need to update very often.

 
Characters - Sprite layer, low priority

Characters have their own layer that renders on top of everything else. Alyssa Keil describes the mechanics well:

"Sprites for the Sega Genesis are defined as images with a size of (w x h), where w is the width in tiles, and h is the height in tiles, where each dimension can range from 1-4 tiles. . . The Sega Genesis can handle up to 80 sprites on screen, 20 sprites per scanline, though it’s worth staying under this limit to avoid slowdown."

Foreground - Scroll B, high priority

The start and end of level 1 has a structure that has pillars that render in front of the player. Outdoor levels use this layer sparingly, spending a lot more of the console's processing power on the parallax effect from clouds and other background objects. Indoor levels use the terrain and foreground much more extensively in building the level to the exclusion of distant backgrounds.

 Text - Sprite layer, high priority
This layer isn't used often. The main use is the pause or minion select screen, occasional dialog in cutscenes, or game over and the result screen.
"Sprites. . . have either a low or high priority flag set. This priority setting determines whether the sprite will be displayed above or below tiles in the other planes (which also have a low or high priority setting)"

Final Thoughts

Diving more and more into these games are showing me just how many technical limitations older systems had. If Alisia Dragoon was made in a modern environment... well, the studios are different so I don't know how it would have turned out. The bar for making a good game is much higher today than it was in 1992 due to hardware advancements and the sheer amount of great works we have now.

I'm more of a design and behavior analyst than a technical one. Details here are kind of sparse and are meant more as a way to see what's going on, rather than dive deep into the code and understand the ins and outs of it. I'm sure a lot of the code in the game is fairly simple due to the basic behavior that the game has anyhow.

The fact that these games have as much content as they do in such a constrained environment is a miracle in and of itself. The entire game has a file size of 1mb!

Friday, December 25, 2020

BaseProject History

I've been hiding a secret.

This isn't my first attempt at trying to remake a flawed game that I enjoy playing. It's not even the first form that this has taken: it's the fourth.

My first attempt at remaking a game had noble intentions. I have a design for a followup to Tinkers Construct fully fleshed out in the background. There are multiple characters, a fun and vibrant story, the game world changes based on the decisions you make and the other characters that you find.


Melvin, Selene, Thruul M'Gon, Skyla, Nemea, and Mr. Slimey. Not pictured: Nixie, Warren

My goal for the longest time has been to take these characters and make a Metroidvania-style game, but with a completely different spin on things. Instead of unlocking new upgrades by wandering around and finding lost artifacts, you would find characters with their own expertise that can make tools or equipment. This is an idea I haven't seen anywhere else and I would love to take it to its fullest.

Unfortunately, the project isn't good enough for me to care about it yet. I am highly invested in making this project a reality and at the same time completely cannot make it real. How did I deal with that? Build up a "new game" and start taking pieces of it. Which "new game" would I build up?


Boho Youyoumu: The worst game that I will play 50 more times

This is a bad game. There's a few levels that are completely bland and lack any kind of personality. Characters are all pulled from the Touhou games and put into this platforming game. Levels are long, linear, and if it weren't for the metroid style upgrades the game wouldn't hold my attention for more than a couple minutes.

Still, I played the game all the way to the end 7 times now. Basic platforming is still a fair bit of fun if you have upgrades that change your ability to get around. The dash skill is lots of fun and the dual swords really make the game feel like a full experience. I'm an absolute sucker for good Touhou music and upgrading characters. I do actually enjoy this a lot, but it's so bad... what should I do about it?


Boho Selene?

How about remake the entire game in the Unity engine? I spent 6 weeks on building out the entire game because I'm was in the middle of nowhere while my apartment is renovated and had no internet access. I figured this would be a safe way to build up skill with making a level, a save system, and inventory management.

I was mostly right. There is a working save system buried in this project. Inventory is mostly working, also buried somewhere in the whole thing. I can spawn enemies, the map is divided up into rooms, there's good camera work, and the terrain is divided up into neat little chunks that can make auto-tiling a breeze.

I misjudged how bad the level layout is in this game. It's not that the level itself is laid out poorly, it's that there is nothing in the level worth looking at. There are only four things on the screen at any given time: blocks, Youmu, enemies, and bullets. I'm surprised I didn't get lost when I was playing the game the first time.

This was my first attempt at remaking something. The whole thing used to work flawlessly. Now there's 20 errors any time I would start up the scene and I can't be bothered to fix any of it. There's just so little of the entire level layout in Boho Youyoumu to work with that the amount of time it would take to create something worthwhile would be as much time as creating the game I wanted to from scratch.

I thought that inserting my own character into the level would make for an interesting test. It certainly was interesting, but in a horrible way. There are huge level layout problems when you try to expand a one tile character - Youmu - into a three tile space. None of the platforms, crawlspaces, or even the general layout of the entire game was built for that. In response I started adapting the character to the level, the level to the character, something inbetween, and realized nothing about this would actually work right because the levels themselves are boring.

If this game won't work, how about something a bit closer to the mark? Say... a game that only had a single apparent flaw on the surface?


I am a huge fan of the combo randomizer of Super Metroid and A Link To the Past. It's such a fun experience to switch games and get items that could be the past and future version of a related character. I am also a huge fan of ROM hacks for Super Metroid and play new ones periodically. A few of them are so good that I keep them around, and two of them are so good they could pass as an enhanced sequel of the original.
 
Randomizers for games appear when there's enough interest for them. Randomizers for a rom hack on the other hand... I didn't think it would ever happen. The characters were the right size, the world was there, and even though it was one of the best games I have played, I couldn't randomize it. I'm sure you can see where this is going.
 
I knew that I wasn't going to be satisfied by making most of this project. It was either going to be a huge learning project, or it was going to end up as a complete remake of a hack of a masterpiece of a game. I bared down and focused hard on the most technical aspects of the hack.
 
The method I was using before to create the level wasn't nearly fast enough to satisfy my urge to create quickly. Fortunately, Super Metroid has a number of tools that can help with the level creation process. SMILE (Super Metroid Integrated Level Editor) can open up the ROM itself and let you edit level data such as tiles, terrain, enemy placement, and more esoteric elements such as PLMs. Here's what an extracted level looks like:


I saved every single level that I could out of SMILE. Any room that was edited manually and was too obscure for the program to open was manually stitched together with screenshots, and all of the rooms were sorted by area. I also sliced up all of the tiles in the game and imported them into Unity; there are 571 tiles in all. I could pull up each level and arrange them properly, then place all of the tiles manually, but this was also too tedious and slow for me.

Unity has the ability to directly compare colors on a pixel that's loaded anywhere, including files on disk. If you compare a group of pixels in a screenshot to another group of pixels in a file, well... it just takes a bit of magic to automatically place tiles in the scene. Here's how I'm doing it currently. It's not commented or done yet, but I'm very proud of the result. I would estimate that it cut down the amount of work from a few days to a few hours just for the main area.
Look at this level. Isn't it neat? Wouldn't you say my obsession's complete?

This was the second attempt at remaking a game. I didn't get very far into it, and I think I gave up after a couple weeks. Or years. Some of the enemies in Super Metroid have unique behavior and recreating them wasn't what I wanted to do yet, and having an accurate world to test my characters was much more of a strength than I had anticipated. I finally have a proper tuning ground for testing different character abilities and tools.

This attempt was mixed into the same project as the first one. I didn't particularly want to rip out the relevant code and I figured the first attempt was just a learning project at this point, so I could build on the thing in a weird space that has all kinds of cruft involved.

The third attempt was also in the same project, but had a new goal. The entire thing was getting bloated to the point of being unusable, and I had my eyes set on a new prize. That combo randomizer is such a fun experience, what if I could do that with three games? I wracked my brain for something suitable and came up with a very tempting idea: vehicle combat upgrades. 
 
There's an NES game named Blaster Master that has a few flaws but is otherwise a lot of fun. I hurriedly wrote up some ideas, played through the game, started the rest of the research and...
It has a remake. IT HAS A REMAKE?!?!
 
I spent the next few hours playing the remake, and such a fine remake it was. Every one of the flaws the old game had was addressed, from adding a save system to redoing some of the crud that top-down segments ran with. They even added a story. How could I do something that had already been done better than I could do?

I couldn't. I can't. It's too much fun and I've played it 8 times now.

There was only one thing I could do with all of the everything I had made and was depending on. I took all of the code, textures, prefabs, materials, concepts, examples, and unfinished things and put them in one place. It took a lot longer than I expected to wrap everything up in a nice package, and even longer to decouple all the assumptions from the ideas. 

212 megabytes of code, textures, and prefabs

This base project is being shared across all of my projects. Other creators will refer to something similar as an engine, when in reality the program you're building on is the engine and the thing you've made is a framework or a skeleton. It's the foundation of a working game or a prototype in and of itself.
 
The best part about this process is that I am not working from scratch. I can simply drop in the project and get to work. Adjust a script here, import a screenshot there, rig up an animation that I've never done before... and suddenly we have a working prototype. It takes more time to analyze a game and stitch together screenshots than it does to import everything after the fact.
 
The worst part about this process is that I have been working on it for so long that it feels like it's taken on a life of its own. The entire thing has the potential to drag me down into depths unto which the lord himself shuns. There is so much history and so much work put into this that I am afraid of what I have made. It's an incomplete mess that still wants to have enemy behavior and pathfinding and mario styled powerups and slopes sonic would be proud of.

I may need to spend more time on the system itself. Not just for the sake of the system, but to polish it up and bring out the full potential of everything a fully-realized level creation engine can be. I can't decide if that fits in the best or the worst part of the project. Maybe both.

I was going to wait and show off the BaseProject some time in the future. Maybe tease out a thing or two, comment on the history, have a full write up somewhere, and show off some of my great coding skills. I don't think that's appropriate for what's happening here. I have so much potential and so much time invested into the base project, and yet I feel like I've done so little with it.
 
Parting Thoughts
 
Some super metroid hacks have a randomizer now. Hyper Metroid, Project Base, and Z-Factor are all great fun to begin with. I'm not keen on randomizing Z-Factor but the others are great.
 
There's a folder with every note on every game that I've ever played with the idea of re-making, cross-randomizing, or just pulling apart because it wasn't good enough. There's detailed notes for re-creating Boho Youyoumu with proper level layouts, various Touhou fangame items, general writeups on 20XX and AM2R, UI mockups for cross-randomized maps, and a breakdown of a card mechanic that builds rooms out of templates.

Circa 9/17/2017

A great tool to go with the auto-build of a level would be a program that can automatically map out a level in a game as you play it, along with any tiles that the game has. I may look into this sometime in the future.

I may go over the entire project in detail at a later date. The project still needs some fixing up and there's quite a few parts tied to other people's work, like Anima2D and a pathfinding tutorial. This project wasn't ever intended to see the light of day and it certainly reflects that.

 
This is the third attempt at writing this post. Trying to explain my feelings with words has made everything real in a way that is hard to accept. I have more time and emotions invested in this project than possibly anything else in my entire life and it's both my greatest failure and my greatest strength in the past five years.

If I can pull off something real with this... just maybe, I won't have to give up yet.

Self Reflection, Avatar Reflection

It started as a joke. One day I decided that my game development was going poorly because I was too attached to my characters. If I messed a...