Jonathan Wood Portfolio

Projects

Zero G Arena

Zero G Arena is a fully released PC game that I developed over the course of about three and a half years. It's an online multiplayer competitive shooter game with unique zero gravity mechanics.

Zero G Arena on Steam

Technology:

Achievements:

RoboMaster University AI Challenge

As soon as I started my degree at the University of Liverpool I got involved in the RoboMaster University AI Challenge with the Coding and Robotics Society. This sparked my interest in autonomous mobile robotics. In the first year I taught myself ROS programming in order to contribute to the middleware glueing the whole system together. I also spearheaded the development of a simulation which was to be used for training neural networks for the strategy component as well as general testing. In the second year I have been made team captain. This has been an invaluable learning experience from the point of view of project management and leadership. Unfortunately our actual participation in the competition is set to have been postponed by COVID-19 for two years running but the real value is of course in the skills learned along the way.

See below the video section of our team's technical proposal for the 2021 competition. This demonstrates the aforementioned simulation.

Projects with Cassette

During 2019 and 2020, I worked on a number of projects for Cassette, a department within the marketing company TRO.

2020

Heart rate monitoring VR game

Cassette hired me to build a VR game which was linked to a Fitbit for heart rate monitoring. In short: The user had to assemble a bridge in VR (essentially a jigsaw puzzle) which would collapse if their heart rate went above a certain threshold. The purpose was to increase the user's awareness of their heart rate as part of a study. The VR game component was for Oculus Quest and was built with the Unreal Engine. I had not developed for Fitbit before but learned to do so on the fly in order to produce the heart rate monitoring app. I also developed a third component which was a native Android app which relayed the heart rate from the fitbit to the VR app over a local network connection. This was necessary as the Fitbit would only talk to its paired smartphone. I was essentially hired to implement the whole system myself, barring the art work. Here's a demo of the game more-or-less finished in terms of functionality but before its final art pass.

Panorama-based web experiences

I worked part time for Cassette alongside my studies (Computer Science at the University of Liverpool) on a project built around the PlayCanvas game engine for the web. In short, this project was based on creating high-fidelity, apparently 3d scenes by using static panoramic images rendered in Unreal. I worked on a system to export 3d scenes from Unreal to this panorama format and also did some work in PlayCanvas, which required me to learn it on the fly and rapidly become acquainted with JavaScript. This project provided an interesting view on coordinate systems when exporting from one game engine to the other. It was also interesting to work with more experienced web and PlayCanvas developers.

2019

All of the projects I worked on for Cassette in 2019 were built with the Unreal Engine and I was generally working as part of a small team.

BMW i-racing

This was a simple racing game for BMW which was featured at Formula E races.

More information about BMW i-racing on the Cassette website

My responsibilities on this project included:

BMW Explore Autonomy

This was another application for BMW. This one was designed to inform people at Formula E races about autonomous driving. It featured a touchscreen display on which a physical model of a car could be placed for interactive sections.

More information about BMW Explore Autonomy on the Cassette website

My responsibilities on this project included:

This project was essentially a series of scripted sequences with relatively little interactivity. What interactivity there was, however, did complicate matters somewhat. In particular, some sections would require the user to move the physical car model in order to proceed to the next section. In some of these sections the car was "moving" (via scrolling of the virtual world, not movement of the physical model) which necessitated a dynamic world layout via a tiling system. The unpredictable timing of events also served to make the scripted sequences a lot trickier to implement than anticipated. Nonetheless, we completed the project and subsequent revisions on schedule.

Porsche Colour and Play

This was an augmented-reality iPad application for Porsche which was featured at the Goodwood Festival of Speed. Users would colour in a picture of a Porsche car and then, after pointing the iPad's camera at their picture, the app would render a 3d version of the car, coloured in the way they had coloured their picture. They could then interact with the car in various ways and print off a picture of their custom-coloured Porsche.

Here is a Linkedin post by Cassette in which you can see the app in action.

My responsibilities on this project included:

Pathway

This is virtual reality training app for healthcare professionals. I did not see this one to completion due to my plan to go to university but got to work on the framework for the application.

More information about Pathway on the Cassette website

Some of my responsibilities on this project included:

Personal Projects

I have undertaken a large number of projects in my spare time, for practice and/or for fun. Some of these are on my Github: https://github.com/Jonwod. I will outline some of these that are the most complete or otherwise interesting in some way.

Space Game

A simple physics-based 2D game made with C++ and SFML. This was one of my very first programming projects and essentially my first non-trivial project using C++. As you'd expect, the code is awful, but it was an invaluable learning experience. The objective was to implement as much of the functionality as possible "from scratch" (barring the task of getting images on screen, for which I used SFML). I optimistically tried to invent my own collision detection algorithm. As you can see from the video, it sort of worked, although it was a bit unreliable and slow.

Here's the source code on Github

Technology

Simple Evolution Simulator

A fun little side project that I embarked upon for a brief break from Zero G Arena. I wanted to make a simulated environment with (imperfectly) self-replicating organisms. I did actually achieve this, although the result wasn't as interesting as I'd hoped. I would have liked to develop the project further (and I'm sure I'll do something like this again), but felt I needed to get back to Zero G Arena.

Here's the source code on Github

Technology

Other minor projects

Here is a collection of some of my smaller projects, which are notable simply for being finished (although 'finished' is a somewhat ambiguous term).