An interactive artwork based on Conway's Game of Life. 'Alive' cells can be painted onto the grid with the cursor and will leave rainbow trails as they evolve, deform and eventually blink out of existence.
Long, long ago, I decided year 12 wasn't confusing and stressful enough, so I set out to self-teach myself Java. This Spirograph program was the result. Was it a programming masterpiece? Hardly, but I finished it, it looked amazing, and that was good enough for me.
I originally put this one together for a research report, with the aim of visualising the advantages and disadvantages of common pathfinding implementations. It was fascinating to observe what happens when a breadth-first algorithm is employed to map a small, enclosed maze; or when a depth-first algorithm is thrown into an open environment with concave obstacles. Though A* came out on top (no suprise), the ideal algorithm was almost entirely dependant on the size, structure and granularity of the environment.
Swinburne was somewhat of an outlier: rather than Python - the more traditional choice - they started us off on Pascal. Since I love fractals, this was one of my first creations. The twist to this story is that, though we all made fun of Pascal, I ended up landing a full-time placement programming in Delphi, Pascal's object-oriented cousin. Life comes at you fast.
This was supposed to be a fairly straightfoward project, but I ended up learning the hard way about floating-point errors and NaN poisoning. I considered it character building.
Smoke and Mirrors
A small proof-of-concept game. Bounce around lasers with strategically-positioned mirrors, split breams to get the colour you're after. This involved putting together a simple collision-detection and reflection system, which in turn involved making the ultimate sacrifice: re-learning basic trigonometry.
Unnamed Gravity Game
An unnamed, experimental game. Guide a ball to the exit of each level using only the power of nearby gravity wells. At the time, I'd just been introduced to the idea of manually managing pointers - my debugging technique consisted of throwing in more astrixes until it worked. This had a suprising success rate.