Here’s a project from a while back that I worked on for a week or two, lost steam, meant to come back to and finish, but never did. It’s got a simple XML-based system for loading in content that was kind of fun to create. Since there’s not too much actual content, the XML system is pretty much the only interesting thing here. 🙂
Called “Generation Ship,” it’s basically “The Oregon Trail” in space. A generation ship is a real theoretical concept that may be used in the future to deliver colonists from Earth to far flung destinations across the galaxy. Assuming faster-than-light travel remains a science fiction fantasy (ha! see what I did there), the only possibility to cross the light years that lie between us and even the nearest star may be generation ships that take hundreds of years, and several generations of people living, reproducing, and dying in transit.
This game is a text adventure that puts the player in the shoes of a generation ship captain. The goal is to get to the destination star with a sufficient number of crew remaining to form a viable colony. Along the way there are many random events that require the captain to make a decision – do you cave in to the mutineers demands (temporarily increasing morale but possibly leading to future supremacy struggles), or jettison them out the airlock (lowering population, the ultimate required commodity of success)?
Along with “The Oregon Trail,” other inspirations are old school text adventures and also the text quests from Space Rangers 2.
Some game design thoughts:
- Content is hard to create! In “Generation Ship” the content is the different random events that may fire and the decisions that could be made by the player at each event. My idea was to write a few lines for each; even that proved pretty difficult. If anyone actually downloads and “plays” you’ll find the selection of events to be rather limited. Lesson: for me, creating the game engine is more interesting than creating content. So that’s what I’ll try to stick with. I love the idea of Minecraft’s infinite, procedurally generated terrain. Great variety and even beauty, but no need for an army of “level designers” to create it.
- Along those same lines … there’s really no way for one guy, no matter how smart or clever or even how much time he has available (barring infinity or a lifetime, I guess) to create a game on par in all aspects with the latest AAA title from Bioware, Blizzard, Rockstar, or whoever. It’s one of those “choose your battles” wisely things. Where are your strengths? What do you like the most about creating games? Focus on those areas.
- Feature creep. I kept on thinking of scenarios that might happen to the generation ship and then outcomes that might result from the player’s decision. Some might directly affect the number of crew members, some their morale, and some their health. I have a different “meter” for each of these. Then there are things like what’s in the ship’s cargo bay, the ship’s speed, and the ship’s condition. Yet more “meters.” But I don’t think they add too much to the experience and could be simplified into just a few meters.
- Who knows about game balance. Right now the frequency of events and in some cases which possible outcome is chosen is random; serious play testing or some kind of simulation would be needed to fine tune the balance.
I think I am beginning to see why there are game designers as well as game programmers, and that the two are not equivalent!
Download “Generation Ship” here: gen.zip. Run wxui.py for the WxPython GUI version or gen.py for the command line version. I warn you that although it is technically complete, it’s more like a skeleton that needs to be fleshed out than a fully formed beast.