Desert Island

Last semester’s big coursework was a DirectX 11 graphics project written in C++. The project was to visualize a desert island within a globe. The software had to cycle through four seasons and show off a bunch of advanced graphical techniques, which we learned how to implement as we went along.

The trickiest parts of the project (or at least, the parts I spent the most time on) were the particle systems and the shadow mapping technique. Both required a lot of fiddling to produce a result I was happy with. I’m also pleased with how the water turned out; initially I went for a Wind Waker-like effect that added reflection, refraction and a distortion effect on the surf, and I also threw in a wave movement at the last minute for good measure.

The weakest effect is probably the sea mist, as it isn’t really visible when the camera is inside the globe. The solution would be to add a screen-space effect that adds a certain amount of grey to each fragment depending on their distance from the camera, but only when the camera is inside the globe.

Update: A couple of months later I went back and made the visuals look more appealing, and also added some ambient sound to the video. You can see the original video on my YouTube channel.

SEED progress report

For the past six weeks I’ve been working at SEED software, working one day a week in a team of four to develop an asset coverage map. Using the Scrum development methodology, we’ve just finished our second sprint and started our third. Here’s where we’re at:


What the image above shows is the parts of the Middlesbrough area that can and can’t be reached by fire station assets within 15 minutes. Green areas are accessible within the government-specified time, and red areas are not. Don’t panic though: the above image is generated using limited test data. More areas should become green when we get our hands on a real snapshot of fire brigade data.

The process of generating this map image is rather complex; we’re building on two years worth of previous work. The base project that we started with was a routing system that selects the fire brigade assets closest to an incident and suggests to a command and control centre officer that they should be routed to the incident. It does this by using an A* algorithm on each asset to find the quickest route to the incident, and then it compares the travel times to see which asset is closest.

The most useful part of the routing system for us was its ability to load an entire database over a network into RAM. This allowed us to write a form of Dijkstra’s algorithm that, given an asset location, searches through a linked list of route nodes until the travel time of the asset has exceeded 15 minutes. This gives us a list of every reachable route node, the locations of which we can then render onto a map.

There’s a lot more to it. Rendering the map is a complicated process that involves a grid system, colour weighting, and a bit of Minesweeper tech; and I haven’t even mentioned that we’ll be sending the data over a network and rendering the map on a website with the use of OpenLayers.

Disregarding technical stuff, the project requires a great deal of oversight and management. As I mentioned previously we’ve been following the Scrum development methodology, and so far it’s working brilliantly. Using Microsoft Team Foundation Server we can keep track of our progress from wherever we are, but we’ve also dedicated our whiteboard to the task:


It always surprises me how much I enjoy the project management aspect when working in teams. Getting an overview from each team member and being able to see the big picture is very satisfying. It also aids the decision making process, especially in the event of the customer changing the project requirements. Something that happens very frequently in our line of work.

Yesterday we presented the results of our second sprint to our customers in the form of a demo. The customers were able to play with the rendered map in the OpenLayers interface on a simple webpage, and they were extremely pleased with what they saw. So much, in fact, that they felt it would be ready to demo to the Cleveland Fire Brigade service after Christmas, once we’ve spruced it up for such a purpose.

None of this would have been possible without the fantastic team I’ve been working with. Knowing that we all put our best effort in each and every day is immensely gratifying, and that knowledge keeps me going despite the challenges that lay ahead of us. So cheers guys. šŸ˜‰

Three Thing Game

I added a projects page where people can see my handiwork. It just has one thing on it at the moment though.

TheĀ Three Thing GameĀ competitionĀ is rapidly approaching. It’s a 24 hour game development session where the game you create is centred around three things chosen by the organisers. In March our team was called For One Night Only, as we (jokingly) expected the night to be so horrendous that we’d fall to infighting and never do it again. As it turned out we had great fun.

Our three things were Juggling, Birds and Mayhem. Because a team member and I had been playing too much Advance Wars/Fire Emblem recently, we decided to go for a turn-based strategy RPG game that incorporated our three words. We weren’t completely crazy; we knew that strategy RPGs do not get developed overnight, we just wanted to get a basic grid fighting system in place.

Unfortunately our idea was still too ambitious. We encountered a gameplay-breaking bug with the character movement system around 1AM which we couldn’t fix, tired as we were. We started implementing as many other features as we could, but as 6AM approached we realised we were running too far behind to catch up for the 9AM deadline, and threw in the towel.

Despite the failure I’m happy to report that every team member was still smiling at the end, and no arguments had taken place. Part of the reason I think was that we went in with two intentions.

1) Have fun.
2) It isn’t about winning. It’s about learning how to use the PlayStation Suite SDK (now known as PlayStation Mobile).

As we gear up for the next TTG, it’s important to keep these intentions in mind. Our new team name, The Runners Up, reflects this. This time around we would like to finish our game, and so we’ve chosen an idea that is scalable while still giving us plenty of experience with our chosen technology, the Kinect.