Update: this blog is no longer active. For new posts and RSS subscriptions, please go to http://saintgimp.org.
I’ve been working on a personal project off and on for awhile now. It’s called GenesisEngine and it’s a program that generates and renders a procedurally-generated planet. I can take in the view down at ground level with the terrain generated at ~1-meter precision, or I can zoom all the way out into high orbit and see the entire planet at once. This requires relatively little memory and no storage because the whole landscape is generated on demand via fractal algorithms.
Now that I’ve got it to a decent alpha state where it renders mildly interesting terrain I decided to throw it up on GitHub for public amusement. I don’t have any grand plans for this project; it’s just a little laboratory where I can experiment with new code design ideas or new tools, and in the process maybe build something that looks cool and teaches me more about graphics and other stuff that I’m interested in. It’s already been a useful experience for me because I’ve taken several concepts that I read about, tried them out in GenesisEngine, and incorporated them into my code bases at work.
Along the way I plan to blog about the lessons I learn. I’m certainly not blazing any new trails here; I’m just picking up good ideas from people who are much smarter than me and implementing them in a non-trivial project. I hope my successes and failures, and the source code itself, might be of use to others who want to learn.
The code can be found at at http://github.com/SaintGimp/GenesisEngine. Git is another thing I’ve been learning about thanks to GenesisEngine. It’s well worth the time to explore either Git or Mercurial or both if you’re not already familiar with distributed version control systems. It’s slightly bewildering at first to a Perforce/TFS guy but I’m beginning to see what people are so excited about.
If you want to download and build it you’ll first need to install Visual Studio 2008 (you can use the C# Express Edition if you like) and XNA Game Studio 3.1. Everything else should be included in the repository. You should probably check the README file for additional information.
I want to emphasize a couple of points:
Ok, is that enough caveats, self-deprecations, and disclaimers? Anyway, here are a few screenshots to illustrate what I’ve got so far. There’s no texturing or atmosphere yet so think “ice moon”. The red lines mark the boundaries of the individual terrain patches.
On the ground:
At airplane level: