“Wheeeeeew.” That pretty much sums it up.
I just finished my final semester, of my final year, of the incredibly demanding Comp Sci/Games Tech course at Murdoch. It should really be called Software Engineering/Simulations because we do so much more industry-aligned big-project programming than probably any course around Perth.
It has been so demanding that I’ve barely had time to scratch myself all semester – let alone maintain this blog. Here’s a quick rundown of what’s been happening.
Virtual Environments (aka the one where you write a physics engine, an affordance system, and an emotion-based AI)
So we took our game engine from first semester (Centurion Engine), ripped out the ODE physics, and got to work designing our own physics engine. I worked on wrapping Bullet Physics for the collision detection – the dynamics part of our physics engine was completely hand-coded. I also worked on revamping areas of the engine that could use some work, modelling the environment (Murdoch Tavern), implementing a better/proper font system, among a number of other things.
What an experience. We could have spent the whole 12 weeks just tweaking the physics to get it perfect. All the little (necessary) hacks that are used to make the simulation look more realistic, all interact and affect the overall simulation in subtly different ways. It all came together really nicely in the end, and towards the end our previous emphasis on design iterations allowed us to capitalise and implement chrome features quickly and easily.
Plus the Tavern is in space now… Yep.
The Driving Simulator (aka the one where you have to present your product to the entire school, alumni and industry guests)
So this was a lot of fun. Some of it painful, but fun nonetheless. I don’t think I could’ve survived the semester without the awesome team I was part of. We all worked really well together, had a variety of different strengths, and always kept the mood happy – even in the darkest of days. So thanks, guys.
We were assigned to the notorious Driving Simulator project. Notorious because it has a history of being re-written every few iterations. We decided to not go down that route. We decided to knuckle down, put our game faces on, and wrangle us some existing codebase. That’s about the time the pain began.
Learning the codebase took some time. Designing our extensions took some time. The unit requirements to have heaps of documentation – took some time. Time is not something that your typical games-tech student has a great deal of. That was about the time the pain really settled in and made itself a nice little cosy corner to curl up in.
As for the project extensions themselves, we firstly had to design a flexible AI system that would create realistic driver behaviours. The next major requirement was for some form of driver-physiology monitoring – in our case through an arduino microprocessor-powered physiological sensor array. Finally, the entire system had to be cleaned up and made more stable.
Stability was quite an issue. We didn’t know what worked and what didn’t when we came into the project. Student documentation is never going to be perfect. So we dedicated some time to evaluating the system to see what we were actually working with. This was a valuable decision, for us and hopefully for future iterations.
Many hundreds of pages of documentation later – many thousands of lines of C++, lua, and XML later – we actually managed to do what we set out to. The pain turned to elation as we overcame the challenges thrown at us. We had done it. We had added functionality to the driving sim.
Operating Systems (aka the one where you actually learn how to use linux)
This one was actually quite interesting. It would have been nice to be able to focus more on it, without the ever-present immense workload from the other two units looming overhead. We went back to C. We learned how to while(1)fork();. We wrote a fairly complex, functioning Shell program ( I called mine EggShell). I learned the awesome power of the makefile. How did I survive, all those years ago, compiling my change-making C programming assignment without “make” ?
The End (aka a new beginning)
So that’s it for games tech & comp sci, for me. It’s been a pretty crazy ride, not one that I expected to be taking when I signed up for the double-major, but one that I am exceedingly grateful that I took. I have to admit I will miss the place, the course, and the people there. Now, to look to the future….