Category Archive: Year 3

Final Year Project

Final Year Project

As part of the final year of  my BSc Computing degree, I did a personal project to utilise the skills I had learned over the previous years.

My project was entitled “Assessing the suitability of the Google Nexus 7 for games development“.

The project was split into two parts.

  1. Part 1 investigated the Nexus 7 device and the Android Operating system with an eye towards using it as a gameplay platform. This resulted in the creation of the Nexus 7 Workbench application, a simple tool used to showcase some of the technologies and capabilities the device can use such as camera and GPS support.
  2. Part 2 compared and contrasted the differences in developing the same game for the Android platform in two different ways. The methods selected were using the Android SDK and using YoYo Game’s GameMaker Studio application to develop a simple memory game using the same art assets across both development platforms.

Part 1 went in-depth with the hardware of the device. Thanks to the use of various sources such as iFixit and hardware reviews, the individual capabilities of each part of the hardware as well as the reason behind some of the design choices were analysed, experimented with and explained. The final product created for this section was a small app created using Java in the Android SDK that used multiple facets of the hardware such as the camera, the GPS and the suite of sensors available.

Part 2 looked at two different methods of creating games for the Android platform. This was done by using the same basic game (a simple memory game) and creating it using different software packages. Originally the project was going to utilise Unity as one of the two but due to an issue with getting the licenses required to push to Android platforms, GameMaker Studio was used instead. It presents a different challenge to the Android SDK and contrasts its designer/scripting focus against the Android SDK’s programmer focus.

Deliverables

The project delivered three things:

  1. The Android Workbench application
  2. A memory game created for the Android platform using both GameMaker Studio and the Android SDK
  3. A dissertation presenting my findings and showing my methods

My source code and dissertation is available on BitBucket at https://bitbucket.org/michael_charge/final-year-project

Gallery

UnderCurrent

UnderCurrentLogo

As part of my final year, I took part in the Advanced Games Development Module. This module is designed to introduce the various different disciplines (artists, animators, programmers, designers and sound designers) into working with each other to create a working game prototype within 7 months.

I was part of a team working with the Unreal Development Kit, a free version of the Unreal Engine 3. This was selected early in development by the design team as it was the platform they were most comfortable using. This meant that I had to learn UnrealScript as well as creating new gameplay systems.

For this module, I received a 1st. The game is being continued by elements of the team at Hammerhead Interactive.

Download

An executable of the latest build is available at https://share.oculusvr.com/app/undercurrent

Media

UPDATE: UnderCurrent has been making the rounds of various gaming sites after the release of our alpha gameplay video went up

Joystiq: UnderCurrent aims to bring deep sea exploration to Oculus Rift

Polygon: UnderCurrent uses Oculus Rift for a deep sea exploration simulation

PC Gamer: UnderCurrent bringing deep sea exploration to the Oculus Rift

VG247: Oculus Rift goes deep sea diving in UnderCurrent

NBC News: Explore the ocean floor with virtual reality

Alpha Gameplay Video

My main role was in writing a series of gameplay affecting fish that the player would interact with to change their speed or other properties. These are visible in the proof of concept video below.

Gameplay System Proof of Concept

Initial Proof of Concept

Network Programming Projects

ncp_screenshot1

As part of my BSc Computing course at Teesside University, I did two modules that covered networking programming in a chat room with avatars enviroment while utilising Java. These built upon each other and so have been merged into a single project page.

Part 1

In we were briefed to produce a Java TCP/UDP chat server. Before the project started we were provided an interface.

The chat client combined both text chat along with a 2D avatar. Chat messages were location dependant, unless commands such as /shout or /whisper were used. In addition, the server had a hierarchy to it, keeping track of owners and moderators with their own special powers such as setting new mods or silencing users.

Overall I enjoyed programming in Java – it provides a great platform to develop network enabled and multithreaded applications with a very friendly language.

Media

Part 2

In my final year, I took part in a second module using Java to create networked applications. The improvement over the last project was the requirement to be entirely non-blocking and to use another language to as an optional component. By using a framework created for the project by my tutors, I created an alternative to blocking TCP module included as well as adding UDP and limited SSL functionality. For the alternative languages, I used a Java based implementation of Python called Jython to allow me to call Python implementations of TCP and UDP and fulfil that requirement. This is due to Python’s quick and easy syntax.

Overall this project was very useful in teaching how to deal with large projects and granted some limited experience in Python

Download

Both projects’ source code is available on Bitbucket at https://bitbucket.org/michael_charge/networking-projects