Persona 5 Royal Combat Project

🎮 Persona 5 Royal Combat Project

A personal project where I replicate the Persona 5 Royal Turn-Based Combat system as best I can for fun.



Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: PC


This project is a side project where I intended to make the Persona 5 combat system in Unity to test my skills a bit as I have no idea if I’ll mange it. The development of this project will be only in small chunks so I will be updating this page with the latest progress as I go.

There will be builds & some source code down the line, but the project is still early days so I have nothing that is ready for the public just yet.


Multi Scene

🟣 Multi Scene

A multi-scene workflow/tool for using multiple scenes in one go in Unity.


Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: Unity
Studio: 🔗 Carter Games


Multi scene is a scene management tool I first developed while in my job as Fumb Games & later took on as a personal project to release. The idea is to make working with multi scene workflows a bit easier in Unity with a few editor tools & systems.


The development of the tool started with the 🎮 Merge Motors project at Fumb Games, with the game split into 2 main scene groups with an extra group for entering the game. This proved to help a little with merge conflicts and more, however did prove to not be overly useful for the studio at the time as most projects just had 1 developer and the art team hovering between projects. That didn’t stop me from going on to develop it further, having used it in a variety of personal projects that I haven’t released. Its most useful for bigger titles on platforms with more resources like PC. While mobile does work, it does take a little longer to long on older devices that can hinder the game overall.

Currently the tool has a fair few features that include:

  • Multi scene management
    • Loads groups of scenes together
    • Some helper methods for getting if a scene is loaded
    • Events for when scenes are loaded
    • All static
  • Scene grouping system
    • Scriptable object based
    • Custom inspector for ease of use
    • Group scenes together to be loaded by the manager
  • Scene group loader window with categories & sorting
    • Load a scene group in the editor at the press of a button via a custom editor window
    • Organise & group scene groups together
    • Show or hide groups of scene groups
  • Easy to configure & use
  • Cross scene referencing helper script
    • Use familiar methods such as GetComponent between scenes with a custom version of those methods
  • Custom Awake, Enable & Start interfaces
    • Simulates the normal methods of the same name when all scenes have been loaded
    • Can be used to sync any logic to multi scene loading
  • Do not destory scene accessor
    • Allows access to the do not destroy scene with all cross scene reference methods to match
  • URP camera stacking support between scenes
    • Stack URP camera between scenes

Build Versions

🟢 Build Versions

A build versioning automation solution for Unity.



Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: Unity
Studio: 🔗 Carter Games


This asset is a automation tool that saves developers from needing to manually update their project build numbers. Handy to both manage the version numbers of a project but to also ensure it happens on each build made.


This asset was mostly made while I was at work. I felt the need to make this as I was getting really annoyed at myself for not updating the build number when making builds to test. So I decided to automate it. The actual code to do this is pretty simple, its just a interface implementation really. I had a working version at work really quickly and I found it rather useful. Because of this I decided to check the market for any asset that do this and found only one that does something similar, but saves it differently and wasn’t free.

Because for these factors I decided to make it into a public asset. which is this project, the asset if free like my other assets and requires zero user setup which is thanks to some cool editor scripting that generates the scriptable objects for the user if they don’t exsist. I’m pretty proud with how this turned out and am happy to support it into the future.

Tower Defence Micro Project

🎲 Tower Defence Micro Project

A small test project where I created a few turrets from Emperor: Battle for Dune in a tower defnese styled game.



Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: PC, Mac, Linux


This was a small project where I’d replicate the mechanics of some turrets from some of my childhood RTS games to test my skills a bit. This is the result, I only worked on the project for 2 days as there wasn’t much time to work on it before I started other things so here is just what I managed to make in that time.


Day 2 – Additional Turrets & Code Refactoring

Main Progress:
– Turret rotation Improvements
– Rocket Turret Projectile Improvement.
– Gun Turret Added.
– Popup Turret Added.
– Refactored targeting & shooting to use Interfaces.
– Expanded the map to show off each turret.

Known Issues:
– Turret animations fire off 1 more time than they are meant to.
– Rockets disappear if the target is dead.
– Enemies don’t make it to the target location.
– Turret rotation is erratic sometimes.

This day was focused on improving the rocket turret and adding 2 additional turrets, the Harkonnen Gun Turret & Ordos Popup Turret from Emperor: Battle for Dune. The gun turret is a very simple model as the turret was the only main change from the rocket turret. I got my copy of Emperor: Battle for Dune working this time so I could get a good reference image for both new turrets. The gun turret is by far the best for the dummy enemies so far. The popup turret was a little harder as the turret pops up from the ground when a target is near and then shoots in 3 shots in quick succession. The challenge was mostly with the animation states as it had a lot more than other two turrets. Overall a decent day of work.

Day 1 – Initial Project Setup, Basic Turret & Enemies

Main progress:
– Turret rotation to target.
– Turret shooting.
– Turret idle motion.
– Enemy NavMesh.
– Enemies move to target.

The turret here is based off the Emperor: Battle for Dune Atreides Rocket Turret, I used screenshots that I was able to find online to make a basic model of the turret and then based the movement and shooting from memory. I learnt how to use Blender to model the turret, I had good experience using 3DS Max but my student licence ran out for that a while back. Fortunately there are some great guides out there that helped me get to grips with the interface and I’m quite happy with the model as a is and plan to try and make the other turrets from same game in the future.

Detective Notes

📱 Detective Notes

A clue/cluedo note-taking app.



Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: Android
Studio: 🔗 Carter Games


This app is a replacement for the Clue/Cluedo paper detective notes into a digital form, as simple as that. I made the project public in-case others found it useful which many did.


This is a personal project, as when playing a game of camp cluedo with family I found it hard to read my notes, So I looked for an app. Which there were some for android, but none for IOS which most of my family uses. The app was based on an android app which I used for a bit, it was simple and I realised I could make similar app in a short period of time. I knew it wouldn’t be hard and could be done in a few days. It went rather well, I didn’t run into any major problems which was a nice change.

While this project was meant to be just for me, I have since decided to remake the project and plan to release it to the Google Play Store in the near future. The reason I’m remaking the project is because it is incredibily similar to its competitors on the market and I want my version to stand out. Most other apps on the market for this game were a bit crowded, had ads and didn’t look all that great. I aimed to make a modern looking app that was easy to us. I feel I succeeded as the app is one of my most popular projects as of writing.

C.W.I.S

🎮 C.W.I.S

A survival game where you shoot down missiles.



Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: PC, Mac, Linux
Jam Theme: Climbing
Jam Length: 3 Days


C.W.I.S is a tatical survival game where you fend off endless waves of missiles heading right for you. How do you stop these missiles? with a C.W.I.S ofcourse! Your ship has two of these, one at the bow and another at the stern. While these can shoot missiles out of the sky with ease, they have limited ammo and can easily overheat. As you play you can shoot supply crates to get ammo and rank up your weapons over time when they make successful kills.


This jam was a nice one, though the theme made it a bit harder to work with. Climbing meant a lot of games would involving going up and down, so I went for an alternative idea using ranking up as the main idea for the game. The development process went reasonably after I got the main mechanics working. A full break down of my throughs will be in a video at the top of this page.

I picked up a few new skills such as:

  • Online leaderboards (via php/MySQL)
  • Game Minimap Implementation

This was a rated game jam and I finished around the middle of the pack. Doing well in some categories and worse in others. The worst being theme adherance, which I can see why lots didn’t see it, but I wanted to make something that was more abstract with climbing through the ranks being my interpretation. I was still happy with how the game turned out and it got played a fair bit which was nice.


After the jam I took a break from the project but came back to it several times as I likes the core concept of the game. I started the first remake around when I was looking for work and in my first job which was in game QA testing. After gaining my first programming role I ditched the project to focus on picking up new skills from work and trying them out instead.

However I decided to come back to the project again in 2022 to release the game as a proper small game. I’ve even gone out of my comfort zone to make a development log of the progress made at the same time. The series can be seen to the here and the new game pages can be viewed below.

Leaderboard Manager

🟡 Leaderboard Manager

A local leaderboard solution for Unity.


Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: Unity
Studio: 🔗 Carter Games


This asset is a local leaderboard solution for developers to make simple leaderboards to their games. It started out as a personal solution to the problem, but after a few interations I decided to make it public as well for all to use.


The Leaderboard Manager asset was designed to allow users to add leaderboards to their games with ease. Like most of the asset I have developed so far, this asset was targeted at beginner developers who might need a little help with some minor functionality. I worked on the asset for a couple of weeks during August 2020, with the aim to release it by the end of the month. The development of the asset was rather simple and problem free. However I did go ahead after I had spent some time in my industry job going through the asset and making it way better.

The latest 2.x version has a lot cleaner code with the option to have multiply leaderboard and more options to display the results with both a standard text & TextMeshPro display script provided. I also did a much better job with the documentaion, scripting refernece & changelog.

Crushing

🎮 Crushing

A survival game where you dodge crushers.



Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: Android
Studio: 🔗 Carter Games


Crushing! is an endless survival game where you control and orb which is surrounded by crushers on all sides, your objective is the guide the orb away from the crushers for as long as possible.


This project was initially just a filler project to give me something to think about over the Christmas break of 2019-20. I had lost a family member and had their funeral shortly after and my mood was not the happiest, especially with my last semester coming up. I was updating my portfolio as I did most breaks, and noticed I had a lack of store released projects. Hence I came up with a simple concept for a mobile game and went about making it.

Initially I was wanted to add all of these amazing features into the game as you tend to think when starting a new project, these included:

  • Enemies that would spawn and target you.
  • Economy that would be collected as the player moved around the game scene.
  • Death recovery, where the player could shield against a crush or recover post death for watching an advert or something.

I made a start on a lot of these features in the early days as well as making a basic movement system where the player could tap and drag the player around to dodge the crushers. While this movement system worked, I would it to not be the best system as the player could easily break out of bounds as well as restricting the view for the player on smaller devices as their finger needed to be on the screen the whole time to move.

Shortly after making a prototype I had to direct my focus back onto my university work as my final major project was coming up. Though I later returned to the project after finishing my degree in early June 2020. This first thing I did was remove most of the code I had already made and refactored the remaining code to use the new standards I had been getting into including namespaces and interfaces.

One of the biggest challenges I had around this time was with the google play services, this was due to it being completely new to me. After watching a few tutorials on the matter I was able to install the plugin and then hit my next problem. When following tutorials you had to authenticate the user before you could use the services, I had it all setup, but it was not working! After a couple of weeks of troubleshooting it turned out to be a build setting that was causing the problem and all was fine.

Overall this was a nice project to work on and allowed me to experiment a little with new features

Displace

🎮 Displace

A photography heist game prototype.



Summary

Role: Programmer
Team Size: 2
Engie: Unity
Platforms: PC, Mac, Linux
Jam Theme: Two of: Connections, Heist, Utopia
Jam Length: 4 Days


Who says you can’t shoot all of your problems away, in this game you can literally! A wall built in your path, a lazer stopping you robbing the bank? Well no more! The displacement camera 5000 sends all your problems to a parallel universe where its there problem now…


Awards


Approach & Post Motrem

This was a week long game jam at my university during my final year. I took part as I was ahead on most of my modules and had some time free that I felt I should use to add to my portfolio.

As this was a game jam, I pretty much worked on every aspect of the game with the exception being the games art which I had help with this time around.

The jam was about encouraging collaboration and required that everyone work in a team of at least 2 people. Because of this I tried to find someone from the art department to help save time when it came to modelling and texturing assets. By pure luck I ran into an old friend who I almost ended up living with in a house share for my 2nd year of university. As I knew this person a little I asked if she would be interested in working together, and so we did.

This jam was certainly not an easy one, with a theme that made it hard to come up with a good idea. I had recently seen a tutorial on dissolve shaders and had an old project that I was working on for fun that would take and save screenshots of the game to a set folder. My teammate was happy to use this idea and so we did. I felt the teamwork was there and the game came along reasonably given the time we had to work on the project. The final product was a good ‘Proof of concept’ for the game and won the game the award of ‘Game with the Most Potential’ because of it. One day I would like to go back to this project and actually make it into a playable level, as the idea was sound and just needed more time to iron it all out into an actual game.

Audio Manager

🔴 Audio Manager

A game audio management tool for Unity.


Summary

Role: Sole Developer
Team Size: 1
Engie: Unity
Platforms: Unity
Studio: 🔗 Carter Games


The Audio Manager is a scripting solution to help developers implement audio into their games. The asset has several scripts for playing sound effects and music with custom editors to make a easier interface for the user.


The idea behind this project first came about in my second year at university where I started to get into unity editor scripts. We were taught how to make a simple audio manager using 2 lists, a dictionary & a simple play clip function. This became the basis for this asset. After I learnt the script and how it operated I added some additional methods that would play the audio in different ways, such as playing from a specific time or with a delay before being played.

A few months later I was introduced to unity editor scripting by some students in the year above in an optional seminar called VGA (Video Games Academy) which was run by final year students. This seminar inspired me to look further into editor scripting. As I learnt editor scripting, I began making custom editors to make the scripts more appealing in the inspector as well as automating the process of adding clips to the lists. I felt the result is a decent asset, with plenty of options to expand the asset in the future. This was the first version of the asset (1.x).

After having the asset out for a while, I decided to improve it further by making the inspector look better. I also changed the backend from lists to scriptable objects in version (2.x) which also re-worked the whole asset for the better in the backend. This helped keep the data clean and hidden while also making it possible to add even more functionality. This also had some more options for hotswapping audio libraries, a better music player & more. This version has been out for around 2 years with several patch updates to fix bugs found.