Friday, September 11, 2009

More on the asset pipeline

So I'm still trying to figure out what my asset pipeline is going to be like.  What makes it particularly interesting is this:  the GBA doesn't support files (there are hacks out there to simulate it, but I'd prefer not to use them).  Everything gets packed as data into the single game rom, and run.  The DS, on the other hand (at least for homebrew) has a usable filesystem.  Now you can ignore the filesystem and pack things into the rom like I did for the DS release of Anguna, but working with files can sometimes be a lot nicer -- it sure makes the edit/build/test cycle a lot easier, as you don't have to go through a separate compile step.

The tricky part is thinking about how I might implement both of these.  The core of my existing engine assumes everything exists as structs in C, and references to other data is just via pointers.  (Which is easy when the compiler does all the work for you).  But if I use files, I'll basically need to write a file parser, which will then populate those structs, and create all the pointers between the new structs based on text symbols in the files.  Definitely doable, but a bit more work.  Is it worth it to go to files for the DS but not for GBA? 

The other side of the coin is the argument that, realistically, when editing assets, I'll already have to jump through some hoops to save/export it properly using whatever tool I use.  Why not just make sure my tool also recompiles everything during that step, and let the C compiler do all the work of parsing, populating structs, and creating the pointers?

Review: Super Pitfall

Super Pitfall for the nes is TERRIBLE.  Completely awful.  Interestingly enough, it's given me quite a bit of thought about game design for my next project.

 
I've spent the past 22 years trying really hard to like this game. I mean, this game had the potential to be awesome.  It was a huge world that you could explore freely.  Dungeons and spikes and non-linearity and ladders and treasure.  What could go wrong?  Well, everything.  No matter how much I tried, I always came to the same conclusion:  this game was no fun.
 
So, to be productive, I'll try to think about why it wasn't fun, and what could be done about it.
First, the challenge level was way off.  There are numerous frustrating cheap kills near the beginning of the game.  And there's a ridiculously long time you have to wait between dying and when you get to play again...it's something like 10 seconds of waiting.  Considering your first life may only last about 4 or 5 seconds, it's really annoying to have to wait 10 more before you can play.  
 
Also very frustrating is the fact that, although it's a big open world to explore, you find very little compelling or interesting things.  You wander around collecting gold bars that do nothing.  Scattered around are special items (playing card suits?) that are invisible until you jump in a certain correct spot.  But even when you grab them, there's very little sense of accomplishment.  Why did I grab that?  What's it for?  And do I really have to jump at every single inch of the huge world to see if there's an item hidden nearby?  Overall, I get this feeling of a big huge empty world, filled with nothing but ladders and traps.  I've heard that if you are patient enough to map out the world, it all comes together and the game gets interesting.  But I was never patient enough.  
 
So, theoretically, this game could have been fun if:
 
- There were fewer cheap kills, and the challenge curve  had been a little more appropriate
- Your goals were a little more obvious, so you felt you were making progress or discovering something interesting
- There was a minimap (I love minimaps) to help you keep track of where you've been and where you are.
 
So the things I should learn from Super Pitfall:
 
- A huge world to explore is just frustrating if there's no obvious reward for exploring.  This is the trouble I ran into with the overworld in Anguna.
- A huge world is confusing if there's nothing to help organize your brain.  Forcing players to hand-draw a map is a bad plan -- provide a minimap.  This one is relatively obvious these days, as almost all adventure games do this. (and it was forgivable back then to not have one)
- Have someone else playtest a little to make sure the difficulty curve isn't insane.
- Make sure that secrets aren't hidden in obtuse and stupid ways that just require tons of tedium in trying every single square/block.

Thursday, September 10, 2009

Overhauling the Anguna engine

The nice thing about doing another GBA/DS game is that I already have a working game engine.  There's plenty that I want to change, and a lot that I'd like to clean up (see the previous postmordem posts), but it's nice to have working code that takes care of a lot of the grunt work.

So the past few weeks I've been giving some needed love to the code that drove Anguna.  The first goal was to merge the gba and ds codebases into a single source tree, and just have different make files for the different platforms.  Not for Anguna's sake, but to reuse for the next game.  Of course, some of the stuff (hud, menus, all the code for the DS's second screen) will have to be a bit different for the two platforms, but the majority will be the same.

The next task has been pulling out stuff bit by bit and reorganizing it, reducing coupling when needed, and generally making things less "icky".  Unfortunately, this also means breaking things, so I'm back to that crazy point where I cheer every time I get a sprite to appear correctly on the screen.  It's a bit tedious (especially because I've done this all before), but it's nice to know that as I get this all cleaned up, I'll have a ton of the work done towards my next game (even though I'm still not sure about all the details of said game).  So tonight I managed to get a "black triangle" onto the screen.  It's ugly, but it made me happy:
 
This, my friends, is my black triangle:  That nasty green background is an ugly "level" that properly got loaded by my level loader and screen drawing code.  (Despite the fact that I didn't bother to find good looking tiles to test with).  The green toady guy from Anguna is a stand-in to make sure my character/sprite code still works.  Which it does.  The fun part is that I hadn't even tested the DS version, but just now, while typing this, I compiled the DS build, and ran it, and it showed the exact same thing!
On a completely different note, I've been playing through a lot of the old-school 2d side-scrolling adventure games (mostly for NES, but some others), trying to get ideas for what works well and what doesn't, for what I like and don't like.  So I might have a few posts here basically just reviewing some of the old games, which will help me organize my thoughts.

PRGE 17

I just realized I never did a post after the Portland Retro Game Convention talking about how great it was! The first great part was just ...