top of page

Personal Projects

Prototype

This is an ongoing project that I work on in my free time. The project initially started out as a means to practice my coding ability and to write a networking solution using C#, I did this to develop my understanding on the subject further. 

​

The project matured into something I am working on using a professional development cycle as my tool for practice started becoming a prototype. I have created a few tools to help with development and they have saved me a good bit of time so far. For example, as this project is multiple Unity projects, I have created a system where shared code is synced across projects and created a tool to keep synchronisation. My server project also requires a stripped-down version of multiplayer maps for authoritative networking, to do this, I created a tool that can export a map in its most basic form to a standard unity asset which can then be imported into the server. This process removes a lot of items from the scene that would slow server performance keeping only what is needed. Another tool is the save editor that simply allows you to create, view and edit a save file for the game ahead of time without launching the game, this allowed me to test my code but also allows for fabricating a save for testing when I have more complexity. 

​

A key part of this project is the C# networking system I have created, I decided to do this for educational purposes but I am sticking to using my system as it’s taught me a lot already and I am encountering more problems to overcome. Currently, I am creating a system where dynamic scene objects remain synchronous across clients and maintaining authority on the headless server, the idea to overcome this problem is simple but a clean implementation is a fun challenge. The idea is to be able to create a map without having to do anything special and for it to work as design expect. My current work-in-progress solution is, on level load, cache all dynamic objects in the scene and if we’re on a client, add them to a manager. This managers purpose is to handle moving the items based on network messages with the use of client prediction and reconciliation.  

This project is still ongoing and lots of the code is still very prototype. 

Source can be found on Github

Caramel Engine

Caramel Engine is a lite editor engine, the product of my idea to turn an assignment submission into a project that I will continue to develop. Featuring a easy-to-understand ECS system akin to what engines such as Unity and Unreal use and taking advantage of multiple libraries such as Dear ImGui, an intermediate UI library, and assimp, a powerful model loading library. Caramel currently uses OpenGL to render the scene however this is to change as my skills in graphics programming improve.

​

This project is my first attempt to apply what I have been learning for the past three years into a project I can be proud of and use to further improve my C++ and engine development skills. This project started after I realised my interest in game development with C++ and how powerful it can be. My final plans with this project is to eventually create a small 3D game, I believe doing this will help me understand the process of making and game and will allow me to refine it.

68747470733a2f2f692e696d6775722e636f6d2f

More information can be found on the readme of my repository linked below

Under the bus

Under the bus is a family party game I created as part of a team for a final assignment submission. For this project, I worked on researching and creating the framework for Unity to allow the other programmers to quickly create network enabled minigames while also optimising the use of it throughout. I also created two minigames myself however they never made it into the final release for COMX as time didn't allow for them to be complete enough. I also worked a lot on the actual flow of the game and controlling Unitys' LLAPI through it all however none of this was particularly challenging like creating the network framework. I also created an easy to use customisation system for players and the designers allowing them to add new items/characters with ease.

​

Other than programming I offered a lot of ideas for minigames and help with networking to the rest of my team. I am very proud of this game and my team, we did a great job and we all improved a lot!

60334412_2599759203587167_37517492856249

Source code is unavailable as this is a shared project however feel free to watch the trailer! I'll also link to a video of my friend/team member playing through the game below.

Indie Development

Dungeoneer is a prototype mobile game I developed in Unity for an assignment submission while at University. I was inspired by games such as Eye of the Beholder and Legend of Grimrock as I personally enjoy these games, however I also wanted to trial the control scheme of these games for mobile as personally I don't believe joysticks are always the best approach for mobile games requiring this two plane movement.

 

Complete with beautiful programmer art, I believe this prototype to have been successful! I feel this way because playing this very limited prototype has showed me there is possibility for games like Eye of the Beholder to work really well on mobile devices. This is another project I plan to develop in my free time as it has already taught me some useful things such as procedural generation and gave me my first step into AI.

screen_2560x1440_2018-12-04_14-34-11.png

A website with a blog and links to the app can be found below

GBA Game

"Dark Dungeon" is a Gameboy Advanced game I created for a University assignment. While this project is older that the others listed on this page, I am still proud of what I managed to make a year before the time of writing this. This project was my first step into lower level programming, written with C++, I developed a very simple game for a limited system. I had a lot of fun creating a game for such a limited system as it really challenged me to change how I think about games programming. This project really helped me understand how to write efficient/performant code and the perks of saving on performance for other systems. For example, I attempted to write a system to allow me to track active sprites and tiles however this required a lot of memory that I couldn't afford, I eventually attempted at using the individual bits in an array of bytes to track if they're being used or not along with functionality like dynamically tracking or freeing sprites/tiles. While this is no longer that impressive to me and my skills at bit manipulation have greatly improved since, this sparked my interest in writing powerful and efficient code and has helped me develop project since.

GBA.png

The repository of this project can be found on my github linked below

bottom of page