C# vs. Python

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.

A screenshot of the Asteroids Clone (Python version).

Download

Languages, Platforms & Tools – Report (.PDF, 485 KB).

XNA Asteroids Clone – x86 Executable (.ZIP, 25 KB).

I aim to compile and upload an executable of the Python version at a later time.

Continue reading “C# vs. Python”

Advertisements

Networked Battleships

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.

A screenshot of the Battleships game.

This post continues with the technical details of this project.

Continue reading “Networked Battleships”

DirectX 9: Particle Effects

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.

Download

An x86 (Windows) executable of this application is available from the following link if you’d like to try it out.

Particles App – x86 Executable (.ZIP, 25.8 KB)

Read on for the technical details of this project.

Continue reading “DirectX 9: Particle Effects”

PSP: Flocking Boids

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.

PSP Boids

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:

Read on for the details of this project.

Continue reading “PSP: Flocking Boids”

Gamebryo: Space Trading & Combat Game

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.

Download

The design documentation that I wrote for Exosphere is available for download from the following link:

Exosphere – Design Documentation (.ZIP, 1.3 MB)

Unfortunately, I do not have an executable of the game available at this time. Continue reading to find out more about the features of this project.

Continue reading “Gamebryo: Space Trading & Combat Game”