Category Archive: University Projects

Network Game Development

SuperNetworkGame

As part of the MProf course at Abertay, I selected to take a module that focused on Network Game Development. Through this module, I aimed to translate the skills I learnt at Teesside into a C++ environment as well as adding a dead reckoning implementation required by the brief.

To fulfil this, I created a multi-player top down shooter called “Super Network Shooting Game”. This game combines local and network multi-player, letting up to 8 players take part in simple top down combat. Each terminal support four controllers (thanks to SDL 2.0’s robust controller integration and Microsoft’s wireless controller receiver).

The network model is server-client, with both machines having players. The server is responsible for starting and ending the game. Required information for both machines (such as start and end messages) are sent via a TCP connection formed when the applications start. Standard game events are transferred via UDP. Linear interpolation is used to mitigate packet loss or delay.

In addition to networking, I used C++11’s multi-threading features to move the TCP and UDP listeners to separate threads to improve performance. This was my first major experience of using multi-threading in C++ environment and took a while to learn, however the application performs well and exits cleanly.

To assist in development, I used several third party libraries to assist:

  • SDL 2.0 was used for the basic framework, particularly the rendering and input elements
  • SDL_Net was used for the network framework, providing a feature packed layer to implement TCP and UDP connections.
  • SDL_Image was used to allow the game to render PNG and JPG images used for sprite sheets
  • SDL_TTF was added to allow the outputting of text – this feature was added after handing the module in.

For this project, I received an A20, the highest mark that Abertay awards for its module grades. After development I look forward to improving this demo, adding additionally game-play features while using it as a test bed for improving my C++ skills in a multi-threaded, multi-machine environment.

Source Code

All source code for this project can be found on my bit-bucket at https://bitbucket.org/michael_charge/super-network-shooting-game

Please note that I have branched off at the version I handed into Abertay which is titled “Handin_Branch” – it is missing the text rendering and some structural improvements.

Third Person Shooter Project

The damage zones outlined on the final model. The largest capsule is the model's collision mesh.

As two separate projects at university, I have been creating a series of demos to test out mechanic ideas for a potential third person shooter project. The overall idea was to bring realistic aspects of certain shooter games (such as location based damage and ballistics) into a touchscreen game. To assist in iteration, the demo was created in Unity, utilising its C# scripting as well as features such as Mecanim for character animation and its robust physics system.

Professional Specialisation

The Professional Specialisation aspect of the project was to focus on gameplay programming and the initial aims were split into three core parts:

  1. A basic third person cover sysytem
  2. Realistic ballistics with the aim of letting designers use real world values
  3. A location based damage system that can affect the player’s gameplay when they are injured.

These objectives went through a process – an investigation into how other games implement them, a rough idea on how they should work in code and then implementation. All three were successfully implemented in a prototype fashion.

  1. The cover system will look for a cover marked object, move the player to the cover position and force the player to crouch.
  2. Ballistics takes in values from real world weapons and outputs the correct kinetic energy. Rounds use a combination of raycast and physical collisions to both impart force and cause bullet effects on the health system from any distance.
  3. Each of the characters in the scene has a location sensitivity health system. This takes kinetic energy values, applies it to the hit location and then deals with the after effects such as knocking a character down or killing them.

 

The finished protoype can be played online at https://dl.dropboxusercontent.com/u/6573563/DemoWebBuilder.html or below. Please note the cover mechanic has been disabled for web player

 

Further details of this projects development can be found here

Innovation Project

The Innovation Project module was based around taking an investigation from initial idea to its conclusion. I decided, to tie in with my third person shooter game, to look at a brief delivered by one of my tutors looking into third person controls in a 3D environment. I implemented to control schemes to compare a touch screen focused scheme with the standard soft joystick option used by many porting companies.

To test these scheme, I created a simple map and a timing utility to chart a players progression through the level. In addition to this, I also created an implementation of the shoot scene with touch screen controls.

As you can see in the image below, I got the final demo working and deployed successfully to both my Nexus 7 tablet and my HTC One phone.

2014-05-12 12.21.02

Further details of this project can be found here

Source Code

Source code for this project can be found on Bit Bucket at https://bitbucket.org/michael_charge/overwatch

 

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

Games Software Development

 

Launcher Image for Navy Game - More Images Coming soon

The brief for this project was to produce a gameplay demo (in some ways a prototype) to a certain specification and using a selected theme. It was to be done in C# and Microsoft’s XNA, a very useful addition to the C# language. The primary focus of the demo is the gameplay rather than any of the other aspects.

I selected to make a vehicle simulation game based around the concept of speed and exploration. Rather than creating the usual driving game through a world, mine is focused on the tasks of a Coast Guard helicopter. In the game, you need to fly round an area of sea, scanning the various ships in order to find any carrying suspicious cargo. This is done by simply hovering near them for a period of time

The game was primarily designed and written to be a highly customisable two player challenge style game, with the players competing with each other for the fastest time. This customisability was accomplished by a launcher tool (coded in Silverlight) with various options that could be tweaked such as number of ship, number of opponents and even the if the game was in two player mode. In the game itself, the helicopter is controlled by an Xbox 360 controller and allows a full range of movement. Ships are scanned by hovering close to them and once all ships have been scanned, the game over screen is displayed including the total time.

Overall, I was happy with this demo. There are a lot of things that could have been improved if I had had more time such as the overall level of polish in the presentation department. I am most disappointed with the animation code as I was unable to get the rotor blades to turn. However, I successfully used XNA, Windows Forms and Silverlight in the same project and made a playable demo.

For this assignment, I received a first (73%) with my tutor applauding the launcher tool, split screen mode and control system.

Controls

Right Stick – controls your heading

Left Stick – controls movement (including strafing)

Left and Right Shoulder Buttons – adjust height

Back – Exits game (Player 1 only)

Downloads

Both compiled and source versions can be found on BitBucket at https://bitbucket.org/michael_charge/navygame-prototype

Media

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

Mobile Games Programming

For my Mobile Games Programming module, the programming component was to create a game based utilising mobile technologies such as Bluetooth and motion controls to play a multiplayer game around Wild West gun-slinging.

For mine, I decided to do a top trumps style game, where players select a hand of cards representing different Wild Western characters. Once selected, players would move the phone in a gun-slinging motion to set readiness. I used Cocos2d for the display of the ingame menus as well as for the sound effects.

Overall I was quite proud of my game. Although I could have done more in terms of using the motion controls and more work could have gone into the art, I thoroughly enjoyed developing for the iOS platform despite some of the oddities of pushing builds to device.

Download

[warning]Due to being developed on iOS, a compiled version is currently unavailable. However, the source code is linked to below. It can not be tested on solely via the simulator due to its Bluetooth requirements.[/warning]

Source code is avaiable on BitBucket at https://bitbucket.org/michael_charge/cowboygame

Media