Video not loading? Watch it on YouTube

James Cunningham

Software Engineer

Software engineer living and working in Great Malvern since May 2022. I graduated from the University of Sussex with first-class honours in Computing for Digital Media and Games BSc and in my current position, I am doing firmware development using embedded C/C++

I am excited about game development and spend much of my free time working on personal game projects or looking to improve my game development skills through online courses. I am confident with Unity/C# and UE5/C++, but am also comfortable creating games without a game engine (e.g. using SFML).

I am seeking an entry-level games programming job so I can work on larger, published games, and so that I can work in an environment which will challenge me to constantly learn and improve my work.

Samsara (May 2025 – Present)

I was accepted onto a 120+ hour bootcamp with INFINITY27 to work on a new enemy for the upcoming title Samsara. I completed this over the course of 8 weeks while continuing to work full time as a Software Engineer.

Since completing the bootcamp, I have accepted a 3-month contract position with INFINITY27, which I will spend further developing the enemy, adding polish, and improving optimisation.

  • Designed, prototyped, and iteratively improved the Preta Skulker enemy in blueprints, before converting key areas to C++ to optimise performance.
  • Developed in Unreal 5.4 and Visual Studio, managed version control with Perforce and UGS, and used Parsec to connect to studio laptops for remote working.
  • Measured progress through a series of Level of Fidelity (LoF) checks and regular stand-up meetings.

Grey Sols (Feb 2025)

A Dark Souls inspired action combat game built in UE5 with C++. In this project, I followed clean code principles and generally avoided inheritance, instead separating functionality into different logical components (e.g. LockOn Component, Trace Component, Combat Component, Block Component, Player Actions Component, Stats Component).

  • Combat system – Lock on to enemy, block incoming attacks, use trace component with anim notify states to detect if attacks hit only during relevant sections of animation
  • Boss AI – player detection with pawn sensing, different attack modes managed with a behaviour tree/blackboard, AI move requests
  • Player and boss animation blueprints parented to custom AnimInstance override classes, using blend spaces for movement animations
    • Player using Layered blend per bone to play block animation simultaneously
    • Boss animations managed in state machine
  • Simple health and stamina system – player and enemy have stats component to track current and max health, stamina queried by PlayerActionsComponent for sprint and roll and by BlockComponent for blocking
  • Integrated C++ with some basic blueprints – callable functions (e.g. for movement on input), read/write UPROPERTIES, assignable delegates for broadcasting events

TOITRIS (Feb 2025)

It’s Tetris – exactly like you’ve seen it before! After getting the basic gameplay working, I completely refactored the code to be more scalable and easier to understand.

  • Menu System – Every screen implements the IScreen interface and the World keeps track of the current screen with a unique_ptr<IScreen>, and through polymorphism, uses    this to call the relevant functions on the current screen. As such, creating and switching to new screens is easy.
  • Screen Factory – A simple implementation of the factory pattern which takes in an enum for the desired screen and returns a unique_ptr to the newly created screen.
  • KeyHandlers – stores a dictionary of keys against a custom KeyHandler class which takes a function parameter, so can quickly and easily define custom key press behaviour for each screen.
  • Observable/IObserver – Observable is a class that can notify classes implementing the IObserver interface when events happen. The GameScreen uses it to notify the ScoreManager when the player clears lines.

Click here to view the GitHub repo.

Kitten Quest (Jun 2024)

This Unity project was built with multi-disciplinary team of 5 people. You play as a group of cats who are trying to navigate through a dungeon. As the sole developer, I programmed 3 different input methods which you can use to move the cats:

  • Drawn gestures ($1 unistroke recognizer)
  • Typed words 
  • Timed key presses

In the early conception stages, I also made a prototype for speech input, but we decided against including it.

Crusty Pirate (Jan 2025)

The third project I completed as part of a UE5 C++ course; the first two being a driving game and a top-down shooter. I used Paper2D and PaperZD plugins UE5 with C++. This was a great beginner overview that got me comfortable with the Unreal editor and writing C++ for Unreal.

  • The maps were created with tile sets and tile maps
  • Player and enemy movement is controlled with the character movement component
  • Animations are handled using ABPs with state machines, animation states, jump nodes, and animation overrides.
  • Other features such as items (health potion etc.), and transitioning to other levels, variables (e.g. health) persisting between levels.

Click here to view the GitHub repo.

Golfery (Jul 2023)

Shoot targets at arrows. Get the arrow to strike as close to the center as possible while trying to keep the number of shots you take under par.

Made solo in 48 hours for GMTK Jam 2023.

Click here to look at some code.

Third Power (Sep 2022)

In this action puzzler, you must change between forms with different abilities to get from one level to the next. Made as a team of 15 people over a short 3-month period.

Currently available on Steam.

Click here to view the GitHub repo.

Unreal Shooter (Jun 2023)

A simple third person shooter built with C++ in Unreal Engine. Uses custom AI built with behaviour trees/blackboard and character animations with anim graphs, blend spaces and animation overrides.

Learn more about my Unreal learning journey.

From Evil (Apr 2023)

I started From Evil as a small project for Ludum Dare 53 (theme “Delivery”), but soon realised I wanted to commit more than a weekend to developing this speedrunning action game set in hell.

Fuel Run (Nov 2021)

Collect fuel cans and dodge traffic cones if you want to keep driving! I designed and produced this original hypercasual game in 1 week.

View code snippets and download the apk from my GitHub.