Showing posts with label Alisia Dragoon. Show all posts
Showing posts with label Alisia Dragoon. Show all posts

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!

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?

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.

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