I’ve been doing some level design lately. It’s great to finally start producing actual game content that will be used in the final product. I’ve been working on this game on and off since 2007 after taking just one semester of programming and it has really come a long way. I must admit though, for as strong as my programming skills are my level design skills need to be leveled up.
I find it hard to design levels for a long period of time. Keeping my perspective fresh is the hardest part it seems, but I figure that will come with practice. The best I can do now is work on design here and there and step away from it often. It’s almost a relief when I realize I need to code something for a level since coding is something I can do well, even for extended periods of time.
Either way, be prepared for some new Moldering videos or pictures (or at least details) in the near future.
I was playing Borderlands all day the other day now that school is out of session and I discovered a neat glitch. The glitch allows players to skip rounds of enemies in the Mad Moxxi’s Underdome Riot DLC (a round-based tournament-style game mode). It got me thinking about how the inner workings of the game must operate; I figured out what checks their code must be doing simply by playing the game, and then the cogs started turning in my head. As a result some neat ideas for Moldering started popping in my head. One of these ideas was how to create a simplified system for “global objects.”
A global object in Moldering refers to any object which is independent of the map it is on. This means that any one of these objects designated a “global object” can move off the screen and into other maps. Not only that, but they won’t “reset” when a map is reloaded. So, for example, I can push a global box 7 maps over and it will stay there. Previously, whenever a map was reloaded it would re-instantiate each object stored in the map file corresponding to that map and as a result the map objects could not save their state through this (only a limited number of maps are in memory at any given time to save resources).
In order to designate an object as global, I also wrote the code and interfaces necessary to specify which objects are global and which are not in the Moldering Level Editor. Now, all that is left is to work out a few bugs with moving objects between maps of differing sizes.
The maps in moldering are stored as plain text files. This has its pros and cons. For one, it’s easy during development to make simple changes without the level editor. However, anyone can edit text files. So, rather than letting any Tom, Dick, and Harry edit the maps at their whim, I implemented some VERY basic map encryption.
Basically I serialized a class that stores all the maps after changing the maps to their hex representation. If anyone was planning to “break the code”, they’d figure it out anyway, but this will still prevent most people from cheating. By removing the temptation by one layer I think I improved the integrity of both the game’s maps, and completing the game; someone who says they beat the game likely did not alter the maps.
Besides, I do plan to release the level editor after some time, and with it the tools to pack and unpack maps. So, people will be able to edit the game and pack their own maps eventually. However, the officially released map packs will be that much more unalterable, and people won’t easily cheat or accidentally break the game.
No new screenshots this time, but rather a short update to let you know what we’ve been working on.
At this point we haven’t publicly announced all the features of Moldering. However, as much as I’m going to say about one of the features is that I’ve been working on a separate movement engine for a small sub-section of the game. I haven’t gotten this movement just right so I’ve been working on a few other things to pass the time. Included are:
Full-screen support
Scrolling images (to simulate parallax scrolling where we want images to loop)
Tweaking the particle engine
and, fixing odds and ends here and there
I’d show some screen shots but it would give away too much, and besides, who really gets excited about “programmers art?” :P
Ah… the life of a game developer. It has it’s ups and it has it’s downs. I toiled away the good part of the day fixing a very minor bug that most people wouldn’t even notice. Instead of being productive and attending to matters in the real world I spent six hours making the player move the same speed when moving up slopes from the left vs from the right.
Regardless, I got it fixed, so, that’s out of the way. But, I need to spend my time better. Yesterday I spent maybe an hour implementing a brand new feature (hooks the player can grab on to), which was extremely rewarding. It can be very gratifying when implementing something cool goes smoothly. It’s why I develop games. However, a few days like today, here and there, are inevitable.
More about the hooks though. If you’ve played Donkey Kong you probably have a good idea of what I’m talking about. For those of you who don’t know, I added hooks to the game that the player can jump to and from. They act like grapple points for climbing up to higher areas. They work awesome, and are awesome, and I’m really happy with how they came out. More news to follow.
I wasn’t happy with the movement in Moldering, and the keyboard wasn’t cutting it for testing it and tweaking it just right, so, I installed a library for controller input and I added support for gamepads to Moldering. At the moment I’ve only tested it on an XBox 360 controller, but theoretically it should work with any controller. The way I see it, if you’re not using a 360 controller to play your games on your computer, you should be. However, I will do rigorous testing to ensure that any gamepad I can throw at it will work just fine.
Speaking of the movement engine, it’s really starting to feel responsive and immersive. You get a sense that you’re actually controlling our little alien. It took a bit of work, and I had to cut some of his ability to make him less maneuverable (he used to be way too powerful, broken in fact) but it gives a sense that you’re the little guy up against big odds. Entering into a large area with lots of things to climb should give the player a sense of “this looks impossible, but I know I can do it!” That’s the feeling I’m going for, and one of my favorite feelings that exploration-based games can deliver.
It’s high time I posted some kind of demo. And since I’m applying for scholarships I figured I’d kill two birds with a single stone and post the game online as a sort of demonstration of my skills, while allowing anyone interested who’s been following the project to get a sneak peak.
The actual game content such as levels, cutscenes, and music is not included, so it’s not even at alpha stage; however, anyone interested in seeing how the game has been progressing will get a chance to try out a tech demo that shows some of the game’s features while showing off how solid the engine is.
CONTROLS:
S Jump Up Save at Save Tree (the tree you start at) Backspace Restart if you have died
If you can find them, I left in additional controls used for debugging that aren’t going to be in the final version. However, I figured they might be fun to play with.
Without further ado, please follow the link below to download the first public “pre-alpha” demo:
NOTE: Java is needed to run Moldering. Also, it may ask you to install OpenAL which Moldering uses to render all the sounds. After the installation is complete you will need to run the Moldering jar again.
-James
P.S. I linked to the forum page for the project so anyone who wishes to leave comments or data about bugs can sign up and do so. If you just want the link to the download look for the link in the bottom of the forum post.
Here’s a screenshot of the Dark Forest that we’ve been holding off from publishing. There’s a few things we’ve been keeping secret and now is a good of time as any to release something new.
The Dark Forest is going to have three main layers: the ground level of the forest, the caverns underneath, and the top of the canopy. The Dark Forest is a maze-like area in which the player moves back and forth through the brush and among the layers, solving puzzles in an effort to find their way through once having left the Water Cavern.
-James
Jul
30
2009
Some quick Updates:
Here’s a quick preview of some new enemies I added to the Moldering world. I’ve used the stock graphics and drew some basic sprites just to get things up and running.
On other news I’ve had some success and some problems with Ogg. I’ve gotten tracks to successfully loop and stop when finished without crashing the system or looping the last second or so. However, there’s a small lag when the track is first loaded and when it starts over.
I wonder, does this have to do with Ogg streaming, is it OpenAL, or something entirely different?
Updated by: James Daniello and Zach ZebrowskiFollow the process of developing an indie game from the ground up. We'll be posting videos, photos, and information about the game and its development as we create it.