Another final year module from my degree, “Small Business Start-Up” required us to work together in groups of 5 or 6 and identify a market opportunity for a large company, then develop a business proposal that pitched a viable product or service idea to them, which would allow sustained market growth into that niche.
In response to this assignment criteria, my group designed a Facebook application intended for the attention of Games Workshop Ltd., which would supplement their Warhammer franchise. I worked with fellow students Alec Vickers, Chris Lord, Jonny McCormack and Mark Campbell on this module. We received an “A+” grade for our efforts.
One of our final year university modules was called “Languages, Platforms & Tools”. This module featured lecture material on compilers and interpreters, along with debates about various programming topics. The coursework required us to produce a simple application in a programming language that we knew well, and then port it to another mainstream language that we did not know at all. The bulk of the work, however, was a written report that compared the chosen languages.
As you may have guessed from the title of this post, the primary language I chose was C#, and the secondary language was Python. The application I made with these languages was a simple clone of Asteroids, so I utilised the XNA 4.0 Framework with C#, and a library known as Pygame 1.9.1 with Python 2.7 to handle the graphics for the game in each case. My report discussed the histories of both languages and contrasted their features. I also included a developer diary that reviewed the progress of my implementations. I was given a “B+” for my work.
As another part of the “Advanced 3D Graphics Programming” module assessment, each student had to give a 20 minute presentation to the entire class about a given graphics-related subject, which we could not choose ourselves. Also, we only had one week’s notice to prepare our talk. My subject was “Real-Time Anti-Aliasing”, and I discussed the causes and effects of aliasing in computer graphics, along with the techniques used to address the problem.
This was a final year university assignment for our “Network Programming” module. We were required to produce a simple network-capable application with a suitable programming language such as C#. I chose to make Battleships in Java, a language that I was unfamiliar with and therefore had to learn as I went along. I received a “B+” grade overall for my work on this module.
This post continues with the technical details of this project.
For the “Advanced 3D Graphics Programming” module in the final year of my university degree, we were given an open-ended assignment whereby we could choose to create a tech-demo of any graphics technique that we wanted, and attempt to enhance it in some way (in terms of performance, quality, or by combining it with other techniques). After some deliberation, I chose to create a particle effect system using a traditional “billboarding” technique in DirectX 9 with C++. I then demonstrated the performance benefit that could be gained by reproducing the exact same effect with “point sprites” instead, and wrote a report to document my findings. My work received a “B+” grade overall.
An x86 (Windows) executable of this application is available from the following link if you’d like to try it out.
For our “Console Development” module in the second year of my university degree, we had to produce a tech-demo for the Sony PlayStation Portable using industry-standard development kits.
I wrote a “flocking” algorithm in C, optimised to use the PSP’s VFPU (Vector Floating Point Unit) for increased performance with inline MIPS Assembly. The boids have a simple 3D wireframe mesh, but their movement is limited to a 2D plane. My coursework was awarded with a “B-” grade.
The algorithm is based on Craig Reynolds‘ steering behaviours, a widely published article from GDC 1999. Here’s a video of it in action, recorded directly from the VGA output of the development kit:
This is another of my second year university assignments for a module called “Applied Game Development”. We were grouped into teams of 5 or 6 students, and tasked with producing a space trading and combat game on the PC using Emergent’s Gamebryo engine. Our game was called “Exosphere“, and our team was called “N²O Studios”.
Within our teams, we were expected to assign ourselves specific roles, such as Project Manager, Programmer, Audio Engineer, and so on (although all of us contributed to the code-base). The Project Manager, for example, had the responsibility of scheduling our project using a Gantt Chart. I was the Designer for my team, and produced the design documentation for our game along with the GUI. I also programmed many prototype gameplay features.
We were required to use industry-standard tools like source control, and provide input using an Xbox 360 controller. Besides that, the assignment specification was kept deliberately vague – instead, we were given frequent feature requests, which we had to implement and demonstrate as milestone deliverables on a weekly basis.
The format of this module was intended to provide us with a sample of what to expect when working in the games industry (since we had not yet been on placement at this point). To keep track of which team members were developing what, we organised bi-weekly meetings and produced a wiki where we could document our progress. The team’s attendance and attitude to this assignment was of a very high standard, and we received an “A-” grade for this coursework.
The design documentation that I wrote for Exosphere is available for download from the following link: