Tuesday, December 22, 2009

Work In Progress: Side-scrolling game

It's about time to present my latest hobby project here. I'm developing a small 2D side-scrolling game, which will be used in a university experiment. The people who take the experiment (which will be 'recruited' all over the internet) have to play the game, and provide input data for the experiment by means of in-game measures and a survey. This data will be processed and presented in a university paper.

I can not disclose anything about the actual subject of the experiment. But for me, it boils down to this: I have pretty much carte blanche for the whole game concept, which made me quite happy but nervous at the same time. Failure is not an option...

I made the following design choices for the game:
  • Casual game, similar to many flash games
  • About 10 to 15 minutes of gameplay time (which is long enough for the experiment)
  • Side scrolling 2D platform game
  • Fit for all ages: no blood and gore this time...
  • Easy controls
  • Two levels: Tutorial level + Real level
  • No complicated story line
  • Free sound effects (plenty of good ones on the web)
  • Royalty-free music from the free domain (which saves me weeks of composing-time!)
  • Fullscreen (resolution fixed at 1024 x 768)
## Technical talk starts here ##

I use the folowing technology for the development of the game:
  • Microsoft Visual Studio 2008 (With the Resharper plugin - there's simply no life without it!)
  • XNA Gamestudio 3.1
  • Farseer physics engine
  • Mercury particle engine
 The time I can dedicate to this project is very limited. There's not much time for second thoughts. I try to pick  an approach that works and go with it. Despite that, I try my best to keep  my code organized. It's a constant tradeoff between code quality and time, but so far I'm still satisfied with most of the design. The constant refactoring really pays off: adding new objects to the game domain takes almost no time, since all the behaviour is utterly generified. The use of the physics library also helps a great deal with this. I'm also somewhat proud that most of the code is clean domain code, not cluttered by engine details. Theoretically, I could copy the domain code, and reuse it in a completely different environment.

## End of technical talk #

The lesson learned so far: I could look at this limitations and time constraints as serious fun wasters, but I don't. Rather, I see them as a challenge. Complicated problems long for creative solutions, and that's what I like most...

As for progress: I'd give the game a 35% completion  rating. But this is a loose estimate. I'm picking up some speed in the last week since the game has to be finished in about 2 months.

I can't provide any screenshots yet... But I will, soon enough :-)

After the experiment is over, I will keep the "game engine" as a "pet project" to play around with, and/or reuse it in another game. In a later stage, I might even open source it...

No comments:

Post a Comment