Lessons learnt from Three Thing Game

Uncle Mikes Recursive Prolog Party Team Photo

We made some Mike Brayshaw masks during the night and took a team photo showing off our three things.

Well, the competition is over now, congratulations to the winners. The Infamous Two Sirs came in first place with their PS Vita game, and my good friends John and Russels team came in second place with their Sheep Killing Windows Phone Game, Shear Carnage. That’s a huge success for some first years. 🙂

Our project didn’t go quite so well, but I still feel it was a great experiance due to having so much fun over the night as well as learning many lessons which have changed my ideas about coding and development in general, as well as teamwork.

The team we had was good, Rob is amazing at Graphic Design, and I think Sean, Nick and I are pretty good programmers, but none of us had ever worked in a development team before and its so much different to single-programmer programming, much more different than we had realised previous to this competition.

Collaborating on one code base is difficult, we essentially all had to have an identicle copy of every part of the code even though all of us were constantly making changes, emailing stuff to each other and using memory sticks simply doesn’t cut it.

Earlier in the week this hadn’t been an issue as we all had totally seperate jobs to work on; Myself on the menu, Nick on the invasion game, and Sean on some classes related to weapon management, rob of course didn’t touch any code. However, in the competition when we needed to get all of these modules to work together and then needed to tweak each we came undone, Nick or I would make a change to our section of the code and it would totally break any progress sean had made one the weapon management or visa versa.

This constant anhillation of each others progress understandably upset people, I feel especially sorry for sean who had his code broken at least 10 times by changes either Nick or myself had implemented.

The teams who did well used a system called “Subversion Visual SVN”, which the university provides for projects like this. The system basically allows you to back-up your code to one central repository and “commit” changes to a code base the whole team use. This means every memeber of the team always has the most up to date files. Earlier in the week I had looked at SVN, but I must admit I didn’t really realise its potential, especially having taken 20 odd minutes to initially set it up and using it on my own rather than in a team. Now I understand its use… Its a great idea! 😛

So, I’ve learnt to use Subversioning in team projects, and possibly my own in order to have constant back-ups. I also learnt how to modulate code, and why this is a good idea.

In sweepy cleaner at the moment I have code like:

protected override void Update()
{
           if(gameState == GameState.Menu)
           {
                 if(finger.Intersects(playButton))
                 {
                         DoSomething();
                 }
                 if(finger.Intersects(highscoreButton))
                 {
                         DoSomething();
                         DoSomethingElse(playButton)
                 }
                 //More ifs, elses, method calls
           }
           if(gameState == GameState.Game)
           {
               //More ifs, elses, method calls
               //More ifs, elses, method calls
               //More ifs, elses, method calls
           }
}

Over the course of the week I’ve found that having code like

protected override void Update()
{
           if(gameState == GameState.Menu)
           {
                   MenuClass.Update();
           }
           else
           {
                   if(gameState == GameState.Game)
                   {
                           GameClass.Update();
                   }
           }
}

Is better. Rather than having all my program logic within a huge method, I have classes for each state with their own Initialize, LoadContent, Update & Draw methods which get called when required.

One of the learning objectives of my Module 08120, Programming 2, is to learn how to effectively use classes. I’ve certainly got that one covered over the last week.

In conclusion I feel Three Thing Game was a success, its made me a better programmer and has made me realise how fundementally different programming in a team is to working alone. I think next time we will be much better prepared to produce a genuinly good game. Having said that, this weekends game, Granddad Invasion: Battle of the Gas Works, wasn’t as much of a failure as I think our team felt it was in the last few hours of the 24-hour development time. We did actually have a genuinly fun, humorous game with setting and highscore and a kick-ass menu and story behind it. We also had great fun making it over the course of the week previous and the 24 hours.

Thanks to everyone who took part and/or took part in the Live Blog for making it so much fun :). I think next year I will do a live video stream.

Danny

Advertisements

Tags: , , , , , , , , , , , , ,

Trackbacks / Pingbacks

  1. Why do we fall, Bruce? « Roberto Crocombe - March 19, 2012

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s