Sean Smith
Gameplay Programmer & Game Designer
My Work
Honours project (2023)
For my Honours project, I created an online first person shooter with utilizing non-Euclidean space in Unity. The game uses 3D world-wrapping, meaning players are able to leave the map and seamlessly re-enter it on the opposite side in all 3 dimensions.
​
I taught myself industry standard networking techniques to create a seamless and robust online experience. The game utilizes a server authoritative model where clients send their movement and shooting inputs to the server and the server handles the logic and game state. Client side prediction is implemented so clients always feel an instant response to inputs. There is also a custom prediction model to predict the position of other clients. This proved to be the crux of the project as the method for the 3D world wrapping was to teleport players once they reach the boundary of the map, thus predicting their new position was challenging.
​
Below is a video of the game working online over a LAN network and the dissertation I wrote exploring how modern networking techniques can be used to create an online game in non-Euclidean space. As much as I enjoyed the technical challenge of creating the online functionality for the game, my true passion lies in the level design which is why I am planning to continue the project further.
​
The GitHub repository is also available below.
Prior to creating the online functionality for my honours project, I created an offline version for an earlier audio programming module. In this project, I created an immersive audio system featuring a custom designing doppler effect system. This can be seen when players passing walls when falling. It also features 3D sounds for each sound effects.
Much more information on how the project was created can be found in the report below. The audio in the video below is from the perspective of the player on the left. The GitHub repository is also available. The project received an A+.
DeliveRodent (PC Game, 2023)
DeliveRodent is a frantic fast paced local multiplayer game inspired by Crazy Taxi and Mario Kart. The goal of the game is to pickup and deliver food in a small open world map, however other players are able to steal the food and claim the delivery for themselves. It was developed by myself and 7 others for a group project during our 3rd year at Abertay University. We took the game to DARE Academy and won the runners up award.
Programming
​
Because of my experience in Unity, I was assigned the role of lead programmer. I was responsible for helping the other programmers get familiar with Unity and making sure everything ran smoothly, with as few GitHub conflicts as possible.
I was responsible for creating the car physics, which was a very rewarding process as it went through lots of iteration and improvement. During the time developing the game, we would receive advice and feedback from industry professionals due to the game being mentored in the Abertay module and because the game was entered into DARE academy where we got more time to work on the game and meet more industry professionals.
​
The video on the left below shows an early version of the car using an invisible rolling sphere and a single raycast to rotate the car to the surface below it. The video to the right shows the car using four raycasts, one for each wheel. An invisible plane is constantly updated, with each corner's position set to the point where the wheel's raycast hits. The car is then rotated to align with the surface of that plane. More smoothing was added over time but this was the car system that was used for the game.
​
The entire GitHub repository is not publicly available but I have linked the car controller script I created below.
Design
​
​​Due to the small size of the team, everyone had a say in the design of the game. The key design points that changed that I strongly advocated for were:
​​
-
Making it so there's only one food delivery at one time - Originally, there were multiple food deliveries at a time. This made the game a lot more confusing as the players would have multiple arrows to follow that they were able to switch between. It was also confusing as they wouldn't know if an arrow was pointing to a pickup point, delivery point or a player with a delivery. It also led to players interacting less as they would often be doing their own deliveries and seeing each other less.
-
Spawning the next food delivery nearest to the losing player - A problem we found hard to solve was dealing with feedback loops. Commonly in casual party games such as ours, there are negative feedback loops to allow less skilled players to have a better chance of winning. For instance, in Mario Kart, players who are losing are given more powerful items whilst players who are winning receive less powerful items. We did add an item system quite late into the game to try and nullify this issue but I don't think it received enough fine tuning. An idea, I had before was to spawn the next delivery nearest to the losing player and to reward players who pick up a delivery with points.
-
Simplifying the scoring system - For a long time, the amount of money (points) a player received after completing a delivery would depend on factors such as how far the delivery was and how quickly the delivered it. Although I saw the reasoning for this, since it rewards players for retaining the food and being quick, I strongly advised against it. This was for a few reasons: the player doesn't control how far away the next delivery will be, as it is randomly selected. Additionally, if the player needs to take a detour to deliver the food in order to avoid other players, they shouldn't be incentivized not to. It also was confusing as each time a player would score they would be given a different amount, always with a decimal and would not understand exactly why. In the end, I convinced the team to change it so you get £1 when you pickup a delivery and £3 when you complete a delivery.
There were many other design problems we solved as a team such as making the map smaller so players are more likely to interact and removing the mini map as players were not using it.
Climbing Project (University Project, 2021)
As a part of my university course, we were tasked to make a game mechanic in Unreal Engine 5. I was inspired by games such as The Legend of Zelda: Breath of the Wild, Shadow of the Colossus and Sable to make a free climbing system where the player can climb on any surface.
​
There is a stamina system where stamina drains faster depending on how steep the surface is. The stamina also drains when the player jumps. The player can jump up or off the wall depending on their key input and camera angle.
​
It was my first time using Unreal, I used mixamo.com for the animations and set up blend trees. The project took roughly 4 months and was all coded with C++. There is a link to the more detailed report on how the project was made as well as the GitHub repository. The project received an A+.
Parkour Fiesta (Mobile Game, 2020)
Parkour Fiesta is a mobile game that was released on androids and iOS devices. It was created by me and my brother and we began work on it at the 2020 Global Game Jam. My brother was responsible for the 3D models and UI, we used Mixamo.com for the animations and I was responsible for the gameplay programming, animation programming and game design.
On its original release, the player would automatically run forwards and move left and right by tilting the phone and jump and slide by swiping up and down. After release, we received a publishing offer from Ketchapp Games and reworked the game with their feedback to make it more casual.
Unfortunately, the game didn't reach high enough metrics on the soft launch and was subsequently abandoned. That is the version seen below on the right, the original mobile version is seen below on the left. The original version is no longer available on either the App Store or Google Player Store.
Cowboy Drop (Mobile Game, 2018)
Cowboy Drop was the first game I made using Unity. It was originally a college project but I continued to work on it after.
​
The game's goal is simple: stay on the platform as long as possible whilst getting points for shooting aliens. Obstacles fall from the sky and block your shots. Big aliens will spawn and push everything off.
It was released on iPhones and Androids with leaderboards, however is no longer available there. There is an older version my Itch.io page: Cowboys, Aliens and Falling Cowboys by seansmith (itch.io)
Game Jams
I have participated in lots of game jams, they're a great opportunity to test new ideas quickly and are just a lot of fun. I've done a few with my brother that can be found in the link below: