Joseph Higgins

Aspiring Game Developer

Projects

This section contains all the projects I have worked on over the years. These include assignments I worked on while at university, and projects I have worked on in my own time out of curiosity and to suit my own interests. If you have any questions about any of the projects on the page please feel free to contact me via any of the methods listed here.

To find my latest projects, please visit my Github profile that I use as source control for all my projects. If you find any bugs/issues with any of these projects please post an issue report on the relevant Github repository or contact me.

Unity Games

This section contains all the games I have developed.

Mechanic Panic

Mechanic Panic is a co-op couch game, designed for all ages. As a team of one to four players, you and your friends must race against the clock to repair and replace parts, paint bodywork and prepare vehicles ready for their test drive so that they can be returned to the customers. Fix up and cash out as many cars as possible to earn cash for upgrades, unlocks in the aim of escaping the system and building your own company. Find out more here

This game currently takes up most of my time, as one of three developers working on the game, there's alot of work left to do. However, I believe we're making good progress and the game is close to being at the standard we'd like. Below is a link to some gameplay footage and a download link of a very early build that we were using for game conventions. The game has come a long way since then but they're still relevant enough to give a good idea of how the game works.

Download
If you wish to know more, please contact me or the contact on the Official Mechanic Panic page.

Crazy Maze

Crazy maze is a couch co-op game (2-4 players) I’m working on with 4 other students at the University of Northampton, 3 are artists and 1 other is another programmer. It’s being made for our Group Project module and we aim to have it published to a website before the end of the academic year. The game itself is built using Unity and all Art assets are created by the 3 artists in the group. Within the game, the players goal is to be the only survivor in the maze. The way to survive is to reach one of the four corners before anyone else and be the only one to survive a round. The maze is randomly generated each time you play, with traps randomly placed as well. There are multiple mechanics and traps that can be used to push the other players into traps and defeat them. In testing the game causes a lot of shouting and the losing players often become very angry at the victors.

If you'd like to try out the game head over to our Itch.io page.

Robot Arm (Inverse Kinematics)

This unity project was created to simply learn and discover how to use Inverse kinematics so that I’d have a better understand of the maths involved and how to apply them into a unity environment. This project allowed me to learn these things and more. The project itself is very simple and has 3 scripts which are described in order of creation. The first was a simple script that calculated the angles needed for the robot’s arms for its ‘hand’ to be on top of position of another object which could be moved. This was the first basic implementation of the inverse kinematics, IK. Then a script was created to move a cube from one container, into another. This was created to demonstrate applications for this technique. And finally, the last script created is shown in the gif on the right, the script moves a constantly respawning cube into stacks on the left-hand side. This demonstrates another use case. Also, the multiple iterations of scripts using IK allowed me to optimise my code and find the most efficient way of doing things.

Download

Genetic 2d Cars

This unity project I created to learn more about unity’s 2d environment and touch on genetic programming. Simply, when scene is begun a set of randomly generated cars are created, with a random car body, randomly placed wheels, random settings on each wheel. They are then set off to see which car will get the furthest up the randomly generated terrain. If the car starts going backwards then it’s removed from the scene. When all cars are removed from the scene the scripts take the top few cars that achieved the furthest distance and then uses those cars to generate the next generation of cars. Then, through this method the best cars should be created and they should slowly achieve greater and greater distance until the maximum limit is reached and the best car that could be designed in this environment is created.

Download

Android Drawing App

This android application was created for my mobile computing assignment where we were tasked in creating a drawing application that allowed users to draw images using their phone. Replicating the basic functionality of Paint from Windows onto Android. This application does facilitate those capabilities and more, including being able to import images stored on the phone allowing the user to modify photo’s they’ve taken and then save the images they create. Unlike paint, this application fully supports the alpha layer so that images can be created with areas of no colour rather than white. This is represented in the app by the grey grid. The interface was a primary focus for this application as it had to be easy enough to access so that the user could repeatedly use tools to change how to modify the canvas, and small enough so that they don’t cover up too much of the screen taking up valuable screen space. The decision was made to use popup menus with a simple tool bar at the bottom of the screen as it minimised screen space the most and was still very usable.

Please contact me if you would like either a working build or source code for this application.

NodeJS Projects

These projects were all built using NodeJS and modules available from NPM. Most of these use Socket.IO that allow direct communication between the client and server facilitating online chats, multiplayer games, etc.

Asteroid Nodes

Asteroid Nodes is a multiplayer asteroids game which is built with NodeJS and Socket.IO. The game is web based and allows players to simply connect to the website and start playing with others. Within the game is a chat system that allows players to communicate. The game is not yet complete and only the players currently work, the asteroids have yet to be implemented into the multiplayer aspect of the game however I aim to have this completed within a relatively small time frame.

To develop this game, I used NodeJS which with the module Express, I was able to create a basic HTTP server that can serve static pages such as html, js and css files. These can be used by the browser and displayed to the user. Then using the socket.io module, I was able to setup a communication between the client and server, allowing two way communication for physics updates for the game and communications for the chat system.
View on GitHub Play

British Hold 'em

British Hold 'em is an online poker game that I and two other developers produced in 48 hours for a Programming Challenge. This game went on to win the competition for 2018, hosted by the computing society at the University of Northampton agaisnt students from all computing courses from the University.


The game itself works using Node.JS with multiple modules installed, including mysql, express, socket.io and bcrypt. The game works using socket.io, which facilitates socket like communication between the client and server making use of web sockets and other technologies. The bulk of the calculations are performed on the server and the relevant data the clients need are simply replicated. This makes it much harder for any cheaters to gain any advantages in playing the game.


The game is currently privately hosted and is available to play at the link below. The version currently hosted at the link is the version that was produced within the 48 hour competition, so expect a few bugs. We will be continuing to work on the project and will push a new build with a lobby system some time soon.

View on GitHub Play

Agari-Nodes

Agar-Nodes is a multiplayer clone of the popular game Agar.io. I created this game to learn how to use socket.io and Express modules within the Node framework. How these two modules work technically are explained in detail in the project above explaining how the asteroid nodes project works. For those who haven’t played Agar.io, when you first connect you’ll be prompted to enter your name. Once entered, you’ll be put into the game and will be competing against the other players also in the game. Collect the small pellets to increase in size, if you are bigger than another player you can absorb them and increase in size. The goal is to be the biggest and defeat everyone. Beware that as you get bigger, you also become slower and it’ll become more difficult to absorb smaller players.

View on GitHub Play

OpenGL Programs

Ray Tracing lighting

This program was built for my Graphics module assignment in year 3. What it does is generate an image of a scene using ray trace techniques to produce an attempt at a photo-realistic lighting model. The program uses the phong shading model for ambient, diffuse and specular lighting and then uses a recursive ray tracing algorithm that calculates all the reflections in the scene. The program was created using C++ and GLUT modules, and was made to be as modular as possible so that parts of the program could easily be swapped out for new better versions. It was built this way as I knew the second assignment would be based on the first so that meant I’d easily be able to modify this code to work for the second assignment with less work than making the project from scratch.

View on GitHub Download

Racing Sun

This game was produced during a Graphics 2D lecture at my university. For the module we had to use GLUT32 with C++ for the final assignment, so to teach my self GLUT and to better understand C++ I developed this game. The game it self is very simple, there are 12 rows with randomly placed squares. The player is constantly moving forward on the rows of squares and must use the arrow keys to move along the rows to avoid the incoming cubes. If the player hits one of the cubes they restart and a new level is generated. The player suceeds by passing all the cubes successfully and reaching the end where the player is reset and the level is regenerated. The game wasn't designed to be fun as a game but as a learning experience it was very helpful to my understanding of GLUT and thus OpenGL.
View on GitHub Download

Sorting Algorithms Visualisations

In an attempt to help my fellow students to understand the sorting algorithms that we must implement in our applications, I decided to create this program which will show the user each step the sorting algorithm makes to complete a sort of a data set. The application supports Bubble sort, Insertion sort and Quick sort, the three most common sort algorithms. Creating this helped them understand how sorting algorithms work, and also helped me improve my C++ and GLUT skills.
View on GitHub Download

Flash Projects

These projects were made in my first year, in my Game Techniques1 module. In these lectures we were tasked with creating flash games using Flash Develop and ActionScript.

Alien Invasion

Alien Invasion was developed as apart of my second assignment for my Game Techniques module. It involved creating a game within flash that was similar to games such as Space Invaders. Alien invasion has 4 levels and 1 continous randomly generated level which constantly spawns random enemies to attack you. Levels 1 through 4 are progressively more difficult with a boss at the end of each. Every time the player kills an enemy they have a chance to drop a power up. There are 3 different power ups, health, shield and energy boost. Health gives the player health, shields protect the player from the next 3 hits and energy increases fire power, rate and speed of the player's ship. At the end of each level the player is given a score which is determined from the number of enemies they were able to kill, and how efficently they could do so.
View on GitHub Play

Websites

The following are websites that I've produced for University, Personal projects and for friends who needed pages building for their game servers. They're all built with either PHP or HTML with CSS and Javascipt.

Mechanic Panic Website

This website is in active development and is updated as the game is updated, along with developer updates and other events related to the development of the game. The website has taken many forms and has changed alot since it was first created in an attempt to create a visually pleasing website, which informs the user about the game we're producing and to get them interested.
View on GitHub Website

Music Orb

While I was learning Javascript, I wanted to learn about Web Audio API. To do this, I developed this website. It's very simple but it taught me how to use the audio API. What this website does is simply play an internet radio and uses the audio stream to generate a circle which visualises the frequencies of the music playing. The result is the orb which grows and shrinks along with the music.
View on GitHub Website

H&J's DarkRP Server Loading Screen

This website was built to serve as the loading screen for a friends Garry's Mod DarkRP Server. The javascript in use is called by the game it self when it loads the page while loading the client's game content. This means that when this page is loaded by the game when connecting to the server, it will activate the loading bar and fill out the relevant form boxes. This tells the player connecting to the server the relevant information about the server and their current status in connecting to the server.
View on GitHub Website

H&J's DarkRP Server Motd

This website was built to serve as the splash page for the server. This page will open the first time the players connect to the server to give information about the server they're playing on. It has very limited features due to the limitations of the HTML loader built into the game however it serves its purpose.
View on GitHub Website

Garry's Mod Addons

The following are addons I've created for the game Garry's Mod using gLua. These addons serve many purposes and are used by a number of servers which are currently active.

Bail System

This addon was designed to allow players to pay for bail to exit jail earlier than they normally could. This was needed as having players not being able to do anything in the game for long periods of time negatively affects the experience and there were no good options available elsewhere on the internet. When a player is arrested they're placed in the jail, and they can pay the bail manager 2.5% of their total wealth or 10,000 Euros, which ever is the largest. This means that the very rich can't easily get away with crimes and that those with no money cannot repeatedly pay for bail the instant they're jailed and go commit another crime.
View on GitHub

Police Department Bank

The bank vault works by calculating the total salaries of everyone on the server, take every government job's salary, every pay tick. It then adds this value to the banks stored cash. Over time the stored cash will increase at a speed depending on the ratio of government jobs active versus citizens active. This is to represent citizens paying taxes which is used to pay for the government jobs. Any extra cash is stored in this bank vault which can be stolen by criminals. The bank it self is heavily guarded with numerous defences that any thief would have to bypass to gain access too. Once they have gained access to the vault, the thieves would collect the cash in boxes and briefcases. They must take these boxes and briefcases of cash far away from the bank, as quickly as possible before the police catch the thieves. If the police catch the thieves and collect the stolen money, they may return the money, however if the thieves escape the money will be released to the thieves and they can take the cash as a reward for beating the government.
View on GitHub