This is the first article in a series on Game Project Management. I’ve been working on the design concepts for a strategy/simulation game and finally decided on the goals for my first project for the site:

Design a Map Editor – I’ve always been interested in procedurally generated maps – they allow for limitless content and can work well if they don’t seem formula or break because of the game mechanics. To that end, I’d like to develop a Map Editor that I can use to create map packages that describe how a map should be generated and what resources to use to represent it in a game world. The first step in any type of coding project is creating a solid design so that I understand the full specifications ahead of doing any actual programming.

Research the Cocoa API – I’m no pro when it comes to Cocoa programming. In fact, the only experience I have with it is some prototypes that I created for a travel app I was building for the iPhone. I have a general idea of what types of objects I’ll need to use, but once I finish the design I’ll be able to fully research the libraries that I need to use to create my app.

Brush up on Objective-C – the whole messaging component seemed to be the core way to control things from what I remember; however, I’ll definintely need to re-read Learning Objective-C: A Primer to brush up on my knowledge of how the basic functionality of the language works.

Create a Roadmap with Milestones – it’s important to be able to track your progress and make consistent steady steps to your goal functionality. I plan on creating a roadmap to detail what features will be added to the Map Editor and a set of milestones with due dates to track my progress.

Program the App and Implement Core Features – once I’ve set up my milestones for the project, it’s time to get down to the business of actually coding the features. It’s important to focus on core functionality first – hopefully I’ve set up my roadmap properly to focus on the important functions first so that I can get to the next, very important step in the development chain.

QA to Test for Bugs and Design Issues – when I say QA here, I’m referring to Quality Assurance. That is the department in a company that is responsible for making sure that the product you put out meets all customer expectations and works as it is intended. This is a crucially important part of the process and is often underemphasized by programmers who tend to enjoy designing cool things and coding them – but can’t be bothered with actually testing their own products to see whether they work and more importantly actually are cool. It’s easy to fall into this pit and I do myself often. Thankfully I have an A+ QA team that I work with at my full-time job. Unfortunately, that means I’m going to have to step up my game on this step a lot.

Iterate on the App Until it is Feature Complete – steps four and five get repeated again and again until the app finally reaches the point where it has all of the functionality required for a release. At this point, I will have reached my goal of creating a Mac OS X Cocoa App tool to assist in my game development.

I mentioned before that the reason I’m trying to create a Map Editor is because I’d like to use if to a strategy/simulation game that I’m working on. This tool could actually be adapted and used for another game that I’m working on the concept for as well. Because of that, I’m going to make sure to make the code as extensible as possible – the reason I’m going to make the code extensible rather than try to create one app to handle both games is that it’s better design. Why better you ask? Well, by keeping each app as lightweight as possible, I can focus on making each Map Editor work well for each specific project. At the same time, by making the code components modular, I can extend as much of the functionality as I want across the different apps. At least that is the plan.