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.

Monday, December 21, 2020

Reclamation Project - Part 4: Movement Analysis (Alisia Dragoon)

Alisia has four movement mechanics: walking, crouching, turning around, and jumping. Let's take a look at each one.

Walking, Crouching, and Turning Around

Alisia walking speed is 2 pixels per frame. There's a quirk in the movement where the first frame of movement is only one pixel. This is likely to account for the change from a standing to a walking sprite. A single pixel of movement in one frame isn't noticeable, so this might just be a bug.

Alisia can start and stop walking with no acceleration or momentum at all. The main mechanic that interrupts this is turning around. If you're pressing right and decide to turn left, Alisia will spend 10 frames horizontally locked in place while the turning animation plays.

Alisia can also instantly crouch any time she is walking. She can return to a standing position after 10 frames have passed. Any time after this point she will stand instantly, but a mistaken tap for a couple frames will stick her to the ground for 1/6 of a second. Crouching's main advantage is that the player's hitbox is smaller, allowing her to dodge attacks that would otherwise hit her.

Jumping

Jump time: 52 frames
Jump speed: +4 pixels per frame, decreases by one on frames 11, 16, 21, 29, 32, 36, and 41
Jump height: 69 pixels
Jump width: 106 pixels
Jump ratio: 0.75
Last input frame: 20

 
 Visual plot of jump data

Figuring out how to calculate jump height on a character can be a bit tricky. Alisia's jumping sprite doesn't change her leg position, so I picked a single pixel and tracked that across the entire jump. Each change in position was measured against the previous one and manually plotted in GIMP. I had to double-check each keyframe to make sure that the velocity was changing and to get a good idea of how the visual interacted with the controls.

Jump ratio is calculated by taking half of the jump length and dividing that by the jump height. The higher that number, the flatter the curve appears. The last estimated frame for controlling jump height is a guess; I'm not interested in replicating the movement exactly, just in getting an idea of how it works. Other stats should be self-explanatory

This whole process isn't hard... but it is tedious. Creating the chart took around 45 minutes from start to finish.

 
Tracking pixel

Jump mechanics can be divided up into three parts. These are divided up into boost, hang time, and fall, which are red, green, and purple respectively.

Boost is the most important part, as the player has direct control over this period. Many games with a platforming system have a mechanic where holding the button longer lets the player jump higher. Older games tend to do this in a more obvious way, cutting off upward momentum directly after the button is released.

Momentum at the top of a jump is called "hang time". In general, this is the period of time where the character hangs out in the air before they begin to fall but after any control the player has relinquished. Some games will go out of their way to extend control all the way into this phase. Having that sort of control tends towards cartoony physics.

Fall happens on the downward direction. All control over the vertical direction has been lost and gravity takes over.

Because of the way hang time works, her minimum jump curve looks like this:


Alisia's jump appears to be a smooth ballistic arc. While she does jump lower when the button is released sooner, she still jumps in an arc that looks reasonable because the cutoff of boost still has upward momentum. The game doesn't differentiate between hang time and fall from a mechanical standpoint, but falling animations do play on the way down.

Jumping and walking control independently. The player has full control over how the player moves sideways in the same way as walking happens, down to getting stuck in the air with a turning animation.

Subjectively, Alisia feels like she falls a bit faster than she rises. She also appears to jump higher than she. The graph shows that she loses speed a lot quicker on the way down than the way up and is better at jumping up than out. The entire jump feels basic and a bit quirky, but it works. That doesn't mean I have to like it.

One advantage to a low jump ratio is that your character is a lot better at jumping over incoming projectiles. Another advantage is better vertical movement. Neither of these ideas are present. There's only one set of projectiles in the entire game all the way at the final boss to jump over and platforming is full of small, incremental jumps.

Contrast that with the crouch mechanic: Having a hard 10 frames where you're stuck on the ground means that you've committed to the choice, but have access to it immediately. There's a lot of enemies that pull out spears or fly directly at your head. These enemies are sprinkled throughout the game from the beginning to the end

 
Single hop stairs

The way I would describe this type of movement is "serviceable". The focus in this game is on combat and reflexes. You're able to move the character around with a large amount of flexibility, and the 1/6 second that it takes to turn Alisia around or duck means you have to move forward strategically. It's somewhere between purposeful and twitchy, overall basic, and works well enough. The focus is more on combat anyhow

Final thoughts

Alisia's walking speed is 2 pixels per second. How fast is this compared to the real world? Well... we don't have a ruler to measure the game by. The entire game is set in a high fantasy setting with an emphasis on trying to make things look good. Nothing in-game, in the manual, or from the developers indicates a canon height for any element, and all the sizes for things are wildly off from what we would expect to see by taking a hike anywhere.

My best guess based on this screen is that Alisia is very small, perhaps thumb sized. The alternative is that she's human sized and her entire world is full of gigantic trees and bugs. As with anything in a world that plays fast and loose with sizes, we can't really know.

Trying to relate these numbers to a real world situation is like trying to write down how time works in a black hole. We can make some assumptions about how it works based on our math, measurements, and theories, but any attempt to make real use of it will end up breaking your brain, crashing your computer, and eating your soul. Best not to think about that too much.

Scale? Rulers? Who says what is real and what is false?

Sunday, December 20, 2020

Reclamation Project - Part 3: Genesis Analysis Tools

Starting on a journey of dissecting an old game can be a challenge. The easiest way to do this, of course, is simply to play the game in an officially licensed format. For modern gameplay I would suggest using a Genesis Mini and hooking it up to a modern TV. If you're feeling really old school, then you can grab yourself an old Sega Genesis/Mega Drive and a copy of any cartridge and you'll be good to go.

Just playing the game is not enough for me. I want to tear the game apart all the way down to its roots. Every aspect, every little detail, and every bit is going to be examined. There could be useful data hidden inside the game, and at one point I had considered hacking as a slap-fix for my own fix. What we're going to need is a dump of the game, otherwise known as a ROM.

From a legal perspective, if you own a copy of the game you can make backups of that game for archival purposes in most countries. That idea has been tested to varying degrees across the world, and while having a backup copy of a game for archival or other purposes is seen as legal, downloading a game from the internet is not.

Here's an overview on how to dump games from an old cartridge
Here's a writeup on how to dump games from a Genesis mini


With a legal copy of a ROM in hand, the next step is to analyze it. For our purposes, being able to change what a console would do at runtime should be enough. We're going to need more than a standard emulator for that purpose

Gens Re-recording is a great tool for examining how the game is structured piece by piece. We can turn on and off different rendering layers, record videos, and play back a series of inputs. I'll be using this one most throughout the project.

Disabling sprites is simple and effective

For more technical analysis, we're going to need an emulator with more potent debugging powers. Gens KMod can bring up multiple debuggers, from the CPU to the sound card. It's ideal for ROM hacking. For my purposes, I'm looking at how the game is running in the background and finding useful data in the debugger.

Some Genesis games store sound files in their ROM as uncompressed data. You can open up a ROM in Audacity as raw data. Import the entire ROM with 6 channels and use KMod to determine the frequency of the sound. That frequency should be found below; you may need to slow down or stop the emulator's playback to find out exactly what you need.


Alisia Dragoon seems to have all of its music stored as custom data instead of something easier, unfortunately. This may apply more for future games


The last piece of the puzzle is something for analyzing footage after the fact. VirtualDub is a simple and free video player that lets us precisely control each frame, scrub forward and backward through the footage, and make easier miniature videos for the blog. Paired with game movie and AVI output from Gens Re-recording, that should be all we need for the bulk of this.

Virtualdub in all its basic glory

Thursday, December 17, 2020

Reclamation Project - Part 2: Initial Impressions (Alisia Dragoon)

 Alisia Dragoon. A game that makes me nostalgic for a time I never had. Let's jump right in.

Ah yes, the good old days. I'm a bit disappointed that there isn't a blaring S E G A right at the front screen, but the animated shine is a nice touch.


The logo fades out onto a scrolling background reminiscent of Mayan mythology. The music has a nice folksy tone to it, but also has that characteristic genesis grunge mixed in. The background seems somewhat important and impossible to read properly... until it reaches this.

I'm guessing there's an epic story somewhere in here referencing characters and stories in the game. There's a lot of polish in the title screen alone; this should be fun!

I haven't played a Genesis game in quite awhile, but I know two things about these games: we can take a look at the controls and difficulty is probably hidden in the options. There's an entire discussion to be had about asking players to pick a difficulty right at the start of a game, but luckily we don't have to make that choice in older games; it's already been set at a default for us.

Normal and Hard is a bit unusual for difficulty. If the game has a difficulty setting, you can usually pick easy. Most difficulty modes are just the number of starting lives or maximum health anyhow, so we'll leave this alone. I'm much more interested in the controls - monster select, thunder, jump. All of the other control types have jump not on the C button, which is a bit disappointing, but the default looks fine anyhow.

Enough plot contrivances, let me get to the game!

Wait, what was that? There was some kind of bouncy sound effect and a bunch of sparkles and something? I had to restart the game and get a proper screenshot just to see what went on; the animation happened in less than a second

Alisia, of course! I didn't know she could fly. I'm impressed... by the amount of speed she can put out, of course. Not the legs showing all the way up to the hips or size of the bust or anything, I swear!

We don't have full control over the character to begin with. Notice the demo marker; that only appears when the player is trying to take control during a cutscene. Instead of getting right into the gameplay we watch Alisia walk in from the side of a large structure that resembles a castle. There's a nice sunny day in the background and the music positively drips with adventure. 

I like the idea of setting up the scene by bringing me in from the outside world into this fantasy land. It has the feeling of being transported into an unfamiliar land, brimming with danger and excitement. The cutscene goes on for just long enough that I drop my guard and...

We're under attack! I have control! I have no idea what the controls are, there's nowhere to experiment, push random buttons!

Ah, I see a problem. You can't see the problem or the character at all in this screenshot because the character is flashing on and off rapidly to represent an invincibility window. I've never really liked this technique because of the kind of headaches I can get from watching them for too long, but just taking a bit of damage should be fine. 

Thunder is something I'm a bit more worried about. The whole attack alternates between multiple sprites with the same kind of alternating flashing missing frames that invincibility causes. I'm sure it looked better on CRT TVs, but it's one of those things that hasn't aged well. We have a lot more awareness about what flashing lights can do to people nowadays.

On the UI there is a bar that charges over time. It decharges fairly slowly while in use, recharges quickly up to the yellow mark, and slowly after that. When it's full and you push the thunder button...

A huge swathe of thunder moves in two arcs from front to back and front again. It's flashing like the other thunder attack, but isn't so bad. In fact nothing of these flashing attacks really bother me, so I should be fine playing this game for a few hours. Let's move on...

Almost forgot about the monster select button.

Neat. I have a dragon and a fireball. There's also another dragon and a winged lizard. Each of them seem to be different for one reason or another, and they also appear to have their own health bar and maybe level. The arrows next to the monster's level also resemble the lightning bar under Alisia's health, so that's probably an attack.

Thunder homes in on enemies. These green creatures come flying out of the side of the screen in groups of 10 and thunder takes them all out in a second. Running and instantly zapping everything that can possibly come your way is definitely the best part of the game. You're going to be spending a lot of time doing this, so it's best that the core gameplay is the best part.

Alisia's dragon buddy seems to change color as they get damaged. That's a good way of showing the player that they need to take care of their pet without relying entirely on the UI.

On my first playthrough I got to this point and promptly lost. It's not that far into the level so I'm not too torn about that. Besides, these kinds of games have a life system so I can just start up from the beginning again and...

Oh.

That's pretty brutal. Very few games will take an arcade style game and end it immediately on the first loss. I can't say I'm happy with that idea. It smells... off. There aren't any good reasons to be this punishing in a game that you have confidence in.

There are only a few reasons I can think of to do this:
1. Artistic vision
2. Lack of development time to implement systems
3. Artificial difficulty enhancement
4. Artificial extension of game time

There are some other problems later on in the game that will make the answer to this oddity more clear. For now, take it as a sign of what's to come.

Sunday, December 13, 2020

Reclamation Project - Part 1: Finding an Interest

Sometimes we blunder into things by accident. Other times we are looking for something to fill our lives, and don't know what we want to do. Still other times we have a lot going on in our lives and just haven't made room for anything. What's important is to recognize an opportunity when it comes up, even if it's not what you expect. That's what happened to me anyway.

I've been taking a lot of mental notes about what interests me. I've probably spent the last two years floating around, aimless and unfocused. I would float from idea to idea, pulling a bit at the strings, seeing what it could do, finding myself not really enjoying myself, and drifting off to the next one.

One of the floating tangents took me over to the Youtube channel Games Done Quick. I do rather enjoy speedruns. They're a great way to pass the time while learning about the pure skill and dedication that people put into something as wonderful as a video game. Between their main events - AGDQ and SGDQ - the channel posts other content in the form of a "hotfix".

The one that caught my attention was the Gauntlet. I've been looking for longer and longer videos to deal with my poor situation. They're great for drowning out background noise, and sometimes I find unexpected things. The entire gauntlet is around 25 hours long; good for a few days at least.

The gauntlet was a bit surprising. There are a variety of games played per video, and each one is played by someone who hasn't played the game before. The games themselves were generally bad. What's worse, the hosts were giving out save states to make a scenario in a game that could be difficult, horrible, or just plain long.

For the entire first video, I was completely enraptured. How could other people be playing horrible games in such a bizarre way while racing against each other? There were so many games I hadn't played in here, so I started taking down names and doing a bit of research on each one.

Sega Genesis games are my weak spot. I'm sure that I'm so fond of bad games because the quality of games on the Genesis was so wild. You never really knew what you were getting before you started the game. Was it the best game on the system, or was it complete trash? More likely was that it was experimental and somewhere inbetween the two.

I've been keeping a list of all the games I've never seen before that interest me. I thought I'd start with something familiar, but new. I'm always up for new things, even if the novelty doesn't last very long and I end up somewhere else in a few minutes. I've got plenty of time; what else do I have to lose?

The first game I tried was Alisia Dragoon. I died almost immediately, but the second playthrough went very well. It's the kind of game where you have a lot of dumb fun for awhile. The beginning was a bit boring and repetitive, but it seems more about learning the game so you can push forward. The second level was ostensibly a continuation of the first, but instead of traversing a field you would dive into a ruin. There were multiple side paths to take, each with goodies, and I learned very quickly that those goodies were making the game easier.

At the end of stage two there as a giant... ball? Plot happened, the ball floated off, and I had a mission: Survive to fight a wizard that shoots flaming dragons that will probably kill me. I tore across the country side, jumped into an air ship that had eyes, and promptly jumped off after a short stage. I really wanted to see more of the ship creature thing, but that was for another time.

The rest of that journey went into a generic cave, further into a generic lava cave, and I lost on stage 6. The game only has one life, with one or two scattered around, so I expected this to be somewhat difficult.

No problem, let's try again. Explore every nook and cranny, make sure I have all the dragons in line, and I'll beat the game in no time. The third time taught me about how the different dragon minions worked and how powerful lightning upgrades could be. Wonderful; I was improving.

I shot my way up to where I was and past it. The game itself started to become unforgiving, but I figured that was just the game building towards something. The boss of stage 6 took a bit too long to beat though... and it killed me the previous time, so I figured it was just designed a bit poorly. I waltzed into stage 7, spent roughly a minute climing some stairs up to the boss... and had my butt handed to me.

The fourth time would be my last try. The difficulty after stage 6 spiked up so high that it broke my sense of fun. It broke the play conditioning that had led up to that area. In fact, I'd wager that the game itself was designed in such a way to extend playtime by ramping the difficulty up way too far.

I looked for cheat codes just to finish off the game. The game actually has a debug mode that lets you have invincibility, choose what powerups you have, and skip stages. Perfect, I can get back to where I was and try again. Turn on invincibility (which doesn't stop damage, it just prevents you from losing at 0 health) for good measure and see how bad the end of this game actually is.

The boss in the middle of stage 7 is almost the end of the game. There's a difficult platforming section between that boss and stage 8, which didn't appear anywhere else in the game and involved platforms that moved in patterns that would kick you off at the end.

In stage 8, what I thought was the last boss was an even higher difficulty spike. The wizard from earlier had returned, and congratulated me on surviving the journey. The fight was challenging, frustrating, and I learned how to beat it; everything I would want in an arcade style boss. Then the wizard's ball woke up, and...

It was a hunk of meat. Dumb, boring, poor patterns, and a damage sponge. Nothing about this boss was worthwhile, and it had so much health that I spent longer just fighting the thing than I did on the previous stage. The entire lead-up to this epic moment was deflated over the course of a sad, grueling, endurance battle. Blehhhhhhhhhhhhhh! This is boring, give me something better!

It was at this moment I knew. This was a game that I had a lot of fun playing. The music is great, the combat is satisfying in the kind of dumb way that old arcade games used to be, and I had a glimpse into a world that wanted to be more than it was. Up until stage 7 there were a few warts, and the difficulty has some weird spikes and troughs that take balance and twist it up in a wrench, but after that point... I knew.

Alisia Dragoon had my attention. Now it has my interest.

It took 24 hours to figure out what I wanted to do. I sketched out a character related to the heroine, I did a bit of looking into unused content, I even grabbed a debugging device to look at the game in detail. None of that was enough. I wanted more... much more. In fact, this is what I had been looking for more than anything else. I'm going to rip this game apart all the way down to its fabric of existence and rebuild it in a way that brings out all of its untapped potential.

This project is something that's exciting in a way that's hard to describe. It's the kind of feeling that cuts through the fog, opens the skies, and shines a light on something that was left in a bygone era of my life. It's a kind of self-fulling prophecy, motivating itself to happen in a way that's impossible to describe properly. More than anything else, there's an itch I need to scratch.

Saturday, December 12, 2020

Reclamation Project - Inception

There's an itch somewhere in the back of my mind that I haven't been able to scratch for a long time. It's that kind of creative problem solving itch that comes up whenever you look at something and say "I can make that, but better." It's a pernicious feeling, one that gets deep under my skin and shows me everything I don't want to see about the experience I'm having.

This feeling only comes up when there's a game or related experience I'm having that is fun or enjoyable in a lot of respects, but falls flat on its face in others. It's like a guilty pleasure; I'm having fun with the game and also having my way with the game at the same time. I don't often go back to a poor quality game unless it's particularly bad. Each time that happens it calls to me and says "why do you like me when I'm like this?"

I think the first time I scratched this itch was when I started modding Minecraft. By all accounts Minecraft is not a bad game. At worst, it was an incomplete game with a lot of potential. So much potential in fact that I could take what appeared to be a basic block game and make it better. Not just better though... I could do something so worthwhile with it that I could make the experience my own.

For context, Minecraft is nothing like it was back in the early 2010s. Today you can easily mine out the bottom of the world with a max-sized beacon and a pickaxe enchanted to the hilt. Most players have multiple double-chests full of cobblestone or dirt or whatever other resources they can get. There's a huge variety of biomes to explore and multiple mobs to see or fight. Minecraft itself is a complete experience. I don't want to work on that.

Minecraft in its early days was wholly unfinished. This was an era where you could spend gobs of time and in-game resources on building a castle, only to have it consume your entire being for a month as you struggle to gather everything needed for that perfect idea of a castle you had. You have to go mine individual blocks of stone, farm sheep for wool, grow a farm and chop each individual log for wood, and building all of the infrastructure for a base in a starting area could take as long as the build itself.

I played Minecraft for a month before really diving in with code. Three of those weeks were spent thinking about just how bad the experience felt. Every single thing in beta 1.5 was time consuming to a fault. I could get what I wanted in the game... eventually... sort of. The selection of blocks was limited, tools were slow, and anything resembling progression just wasn't there.

It's telling that I played a game that had such an ugly presentation for 3 weeks before diving into anything. I absolutely loved the game, and hated it at the same time. It was wonderful, ugly, amazing, and tedious. I very much wanted to play the game for everything that it was worth, not for what I was getting. Comparing beta 1.5 to the current 1.16 version, I would say that you had about 5% of the experience that you do now without accounting for mods of any kind, content or server.

There were four main problems I kept running into. The first one was simple: there wasn't enough variety in the blocks of the game to let me make the builds I actually wanted. That was also simple to fix: install mods that had a variety of blocks to play with.

The second problem was one I didn't find a good answer to, at first. Building anything was slow, tedious, and boring. It wasn't the building itself that was slow, but the gathering of resources. Creative mode was not a good solution either, as anything I built felt like it was just a free floating construct instead of a castle that had any meaning.

The third problem was with Minecraft's combat. Everything was too simple, and too obnoxious at the same time. I had resolved to solve that problem after I had worked on the second, but found a great alternative later. A combination of mods that encouraged exploration and the Little Maid Mob gave combat a more strategic element, one that had me working as a commander of an army storming a castle instead of a lone idiot waving around a sharp stick. The Magic Maiden modpack was my favorite way to play purely because of the maids and the dungeons.

The fourth problem resolved itself over time. I came to learn that Minecraft wasn't a game that lent itself very well to goals. I guess this was more of a problem that kept me wondering why the heck I kept playing a "game" that had no real win condition. This isn't something that beating the dragon fixed, as you just went right back into the world afterwards. The problem resolved itself by becoming irrelevant, and I carried on.

The second problem is the main motivation behind Tinkers Construct. I wanted to improve the game in such a way that it made it fun for me to play. I wanted to dig out an entire quarry or a mineshaft by hand, but a single diamond pickaxe with no enchantments was unacceptable. I could feel something deep inside my mind gnawing at the prospect of building a castle in a real way... the right way. Something that didn't stink of horribly horrible horribleness despite the lovely castle I was living in.

My first attempts were rather bad, I'll admit, and there were a lot of times I felt like I could keep doing better than I was already doing. That single minded push to make this thing better was so much better motivation than I could possibly describe here. It wasn't a consuming motivation either; things came in, code went out, I evaluated and shared with the internet, and it started over again. The feeling of building something was fun, but it didn't scratch that itch.

I don't think the itch was really scratched until I had finally built the Smeltery and everything that it represented. Mod version 1.3.0 was when I felt like I had made something worthwhile. I was proud, I was happy, and most importantly the itch had been scratched. No longer would I have to spend buckets of time gathering resources for a castle. I could spend what was the right amount: one bucket of time on resources, five buckets of time on building. The balance was perfect, the progression was sound, and the feel of Minecraft was right. All was finally right in the world.

My motivation for improving the mod dropped pretty quickly after that. There was still a lot left to do, however, and Minecraft itself could still be improved. I would say that version 1.7 was where the game felt 50% complete compared to how it is today. Unfortunately, Mojang broke the game in half underneath the waves and I wasn't done with the work I wanted to do... but the game was done with me. I'd had enough, and I still haven't been able to motivate myself to work on Minecraft again.

If I did want to work on something like Tinkers Construct again, I think the following would have to be present:
1. The experience is fun and memorable
2. The experience is fundamentally flawed in a way that is disappointing or maddening
3. The act of solving a problem with the experience itself is a worthwhile endeavor.

Drawing out the potential in a game is usually the goal here, but I have been known to do this for some other things. It's like I want to see the good in the world, and if that good doesn't exist in the creative work I'm looking at then I want to make it myself.

I definitely don't want to make Tinkers Construct again. Let's make something else instead, and let's do it from a different perspective. There are so many older games that I look at and think "I want to play a better version of this game". It's easy to say that a game hasn't aged well, but it's a lot harder to say why it hasn't. You can point at technology, at being a product of its time, or just made from a team that didn't have enough skill to pull it off. 

To that I say: I will do better. Let's get started.

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...