Filesystems and Level Loading

This is a bit technical about using abstract filesystems for assets storage of games (CuteGod) and the idea of having a continuous world loading for Ponies Among Us.

One of the things I noticed with CuteGod is that I couldn't really package updates to the game without needing someone to install all 25 MiB worth of graphics and sounds. Obviously, the most logical approach is to break apart the installer into two parts: game system and graphics. But, you really want to only have one installer for Windows, so I thought an updater program would make it easier. That way, they can install the game, then click "Update" to get the latest graphics and sounds. So, if I made a change to the graphics, then I could just update a website and anyone who hits update will get the newest and greatest graphics.

All because I want/need to expand on Danc's wonderful work to fit the additional features or graphical elements.

Originally, I was planning on a XML file for each file, probably built up by SVN, and use that to download individual files. Then, I was reading through a good article about using filesystems in games and remembered that I already use PhysicsFS as my base library. Instead of making a really fancy system, why not just have a single zip archive that can be throw into an installer, downloaded from the Internet, or downloaded separately. It won't have the microupdating (if one file updates, you don't need all 25 MiB) that the individual file has, but it will have the simplicity of a single file. A third approach is to allow the micromanagement and write the update tool to do a in-place replacement of the files within the archive. That way, the install directory is relatively neat, it doesn't chew up inodes (file entries) but still allows for a precise update when I make little changes.

Not sure what I want to do, but I think having a framework for updating is probably going to be one of those tiny components that would really help both games. Being able to build up assets and update them dynamically seems like a good idea (even if 4E6 won't let you do network stuff). And I might be able to get a bit more agile with my development and testing.

Ponies is going to cause me more trouble. I'm going to be throwing a couple different technologies into the game and it occured to me that I really should make the "game mode" part of CuteGod more generic. That is the part that lets you switch from the main menu to the play mode and around again. I already have it pretty well ironed out, so why not use what I already developed?

Of course, that leads into the wonderful mess of levels. My original plan for Ponies was to have multiple connected levels. Then I was playing Kyntt Stories (it is a free game and I highly recommend it) and I kept wanting a continuous world instead of those damn screen changes. Obviously, if that bothers me then, it probably will bother me with Ponies which is going to be set up the same way. Plus, I got to reading some articles about level loading and it got me to thinking. I wonder how hard it would be to make a pluggable system that can handle a flexible, 2D platform world like Ponies? Is it worth it or should I just go for huge levels or interspersed levels with a overhead map? Part of me thinks I should go with the most basic system, mainly because I already lost two of my six months for this project. The other tells me to write the game I want to play.

Of course, if I go with a procedural generated "stage" that will make things that much more complicated. I had an idea that the basic game could have expansions. If you add locations to a given place, it would expand it into multiple branches and forks to make sure all your connections are properly placed. But, that makes continuous worlds nearly impossible. Or at least really damn hard.

Things to keep my thoughts working while I finish up my novel. I hate it when I have all these wonderful ideas, but I still have to write or program them. Everything is perfectly formed in my head until that magic point I sit down in front of the computer and start to type.

This next month is going to be interesting.

Case of the Morning Zombies (NaNoWriMo, 47,389 of 50,000 words)
Case of the Morning Zombies (47,389 of 75,000 words)