I'm a professional developer specialising in anything .NET who has recently decided to take up game development as a hobby again. Up until the start of the year I hadn't actually touched any code out of work for a long time and hadn't done any kind of game development since the age of about 14 (that's around 11 years ago). However, recently I found unity3d and it's opened my eyes to what is truly possible and so after a couple of months playing around I committed myself to my first game idea.
Planning Planning Planning
The reason I think I failed so miserably in my younger days was that I just wanted to get stuck in and I had no plan of attack or implementation strategy. I have to admit this hasn't really changed; I'm a do-er, I like to see results and I'm motivated by witnessing my own achievements. This is great in work where I am regularly tasked with quick delivery and juggling multiple projects but in a hobby project with limited time to commit I realised motivation would be the greatest challenge. At the same time I didn't want to over do it, this was supposed to be fun and so what and when I finish a project shouldn't be of the greatest importance.
With this in mind I firstly came up with 3 key milestones I new I had to hit:
- Develop a prototype - Focus on core functionality and game mechanics;
- Develop a polished demo - Focus on how I want my game to look and refactoring code from step 1;
- Deliver the *final version - Focus on level design and tweaking features already implemented in steps 1 & 2.
[size=2]*Final being a first stable version
Now these are fairly high level goals but they are the key phases of my game as I see it. Between steps 2 & 3 there will about a month gap where I unleash my creation on the world, acquire feedback and build that in to the next step. At the end of step 3 the process becomes a more iterative cycle of alpha / beta testing until I'm happy enough to unveil v1.0 to the wider world.
Each of these goals then get broken up in to their own sets of milestones which I manage via trello (https://trello.com/)
Above is a screenshot of my trello pad for the development of step 1. As I venture further and further in to development these are going to get bigger and less maintanable but for now trello is awesome. I have set my trello up as follows:
- 4 lists To Do, Doing, Done and On Hold.
- The On Hold list allows me to think up a feature that is nice to have but doesn't really fit in with the scope of what I am trying to complete to achieve my goal (as an example above, adding audio was a nice to have but not required for the first proof of concept). Eventually all On Hold items get completed or moved to the next step, this way none fall by the wayside.
- The cards are roughly in the order that I want to do them in. I don't put all the easy stuff in necessarily first because it is good to scatter "quick wins" throughout development to keep motivated.
- The cards are labelled with various combinations of colours - green means I can complete as of now red means the card is dependent on the completion of another card and the in between colours are different severities. Blue and Purple are reserved to mark a card as requiring an asset that I have not yet either purchased/downloaded or found.
- Due dates - These are very loosely set and are more to ensure that I achieve something in the little time I have to dedicate to the project. Pushing back a date on one card so I can complete another card for me is not an indication of failure. Sitting at my laptop and watching youtube videos is.
The important thing here is that the level of planning I have undertaken gives me structure but everything is subject to change. If something takes me an entire day when I expected it to take a couple of hours it doesn't matter if I've achieved a goal and I'm happy with it.
So this is all great on paper but how is it going? Well I have just finished step 1, I have a working prototype a good amount of base code and something tangible to talk about (which is why I have begun blogging). In terms of timescales on weekdays I can devote approximately 4-6 hours to development, I also have mammoth weekend sessions a couple of times a month meaning I probably dedicate 18-28 hours a month to the project. Step 1 from starting up unity to now has probably taken 2 months, so I'll get to delivering an actual final game just before I retire.
In my next blog I'll discuss lessons learned from the first phase of development and share some more tips I picked up along the way.
I'd like to think people will read this "series" and find it somewhat useful; however my real agenda is two fold 1) It's a great motivator, especially if people comment and show interest (otherwise I am talking to myself) 2) I have been out of the developer community for a long time despite being a developer full time; I used to be very active and I'd like to become more active again.
I look forward to seeing you all again for part 2 (which will be much more exciting I promise).