About two months ago I decided that I had really had enough of my old job and I wanted to do something that I could be enthusiastic about. I have been at university for about 14 years. I picked up a few degrees and jobs along the way. I was finally a researcher in applied mathematics.
But I realized that I was not content. I harboured thoughts of working in industry -- a mortal sin in the academy.
I decided to make games.
I've played them all my life and they are pretty much the only thing that have continually pushed my buttons. I have done a lot of programming, although very little computer science. I mainly worked on high-performance number crunching, which is useful but one-sided when it comes to learning about programming. So my first real programming language was fortran 77, the language of kings!
Subsequently I learned C and C++ and recently I have begun to suppliment that with java.
So I wanted to get into the industry but my problem is how? I have some interesting degrees (bachelor of engineering, master of science (zoology), doctor of philosophy (mathematics)) and I have worked on some interesting projects (detection and localization of prey by nocturnal fish using ANNs; modelling the dynamics of a marginal ice zone around antarctica), but I've got nothing to actually show those I'd like to work with.
That's partly why I have started this journal.
I need to get a demo together and this is the beginning. Following the advice of people in the forums, I'm going to play on my strengths (maths and physics) and hope to demonstrate that my skills will be useful for making games.
So here's the outline of my plan.
Firstly, I wanted to develop a simple 2D pursuit game or game fragment. The idea here is to start with something that is fairly simple but something that I can build on with later projects. Also, the important thing I want to demonstrate with this project is the AI. In short, the player has to evade the computer players (probably cars or robots). The computer player actions will initially be determined using a FSM that I will extend later with a neural network. Finally, I would very much like to beef up the computer players with a Bayesian network with the potential to learn at runtime.
Possible twists in the game could be a punctuate chase and fire kind of pursuit where the computer players cannot simply charge the player and the player cannot just dash for the goal.
The second project will be a little extension of the first. The game this time is in space and it is a dogfight. The twist here is that there will be graviational effects that make straight flying difficult. Furthermore, the players are resource limited (but can recharge with time). The aim of this project again focuses on the AI side of things, by having a schedule of goals for the computer player that are controlled by either an FSM or a neural network. However, navigation in this environment and the constant threat of being shot at makes for some interesting decision making.
The third project is a yacht racing game in the spirit of the america's cup (but without the courts and lawyers, which some would argue is not in the spirit of the america's cup but, hey). There are some interesting physics in this project. There will be two primary forces affect the boat speed: wind and swell. Here I hope to incorporate some previous work that I did on sea-ice dynamics to describe the effect of wave action on the boats. Also, the wind field will be shifting and the boats are affected by the winds according to a generic "polar". The aim of the game is to beat with opponent around a set of buoys by making better use of the wind and choosing the appropriate boat to race in (slower and heavier for larger swell, lighter and faster for small swell). The dynamics are pretty nonlinear so getting a decent AI for the computer player will be challenging I think.
I'm planning to do all of this in java. One of the reasons for using java is that I'm jumping around between OS a lot lately and it is nice not to worry about that affecting the code. Also, since my experience is mainly in procedural languages, I wanted to demonstrate an understanding of OOP.
So that's my plan in broad strokes. More details to follow.