Dyslexic
LowFPS

Game Developer & Junior Software Engineer

Thomas Yates

Creating immersive experiences through code and creativity

What I Do

Combining technical skills with creative vision

My Journey

Key milestones in my development career

💼 November 2025
Joined BuiltByUp ↗

Became a Junior Software Engineer

🏆 July 2025
First Game Jam ↗

Created Rot&Root, a physics-based zombie farming tower defense game. Built with Unity featuring full Steam multiplayer integration in just one week.

🎓 2024

Joined Access Creative College

Started my journey in game development education

Projects I've Worked On

A selection of my work

🌱

Rot&Root

A physics-based zombie farming tower defense game created during a week-long game jam. Features full Steam multiplayer integration, unique physics-driven gameplay mechanics, and cooperative survival. Defend your farm against waves of the undead.

UnityC#MultiplayerSteam
View Project ↗
🥋

SBG Shropshire

Full website development for SBG Shropshire, a Brazilian Jiu-Jitsu and martial arts gym. Built a modern, responsive site with class schedules, membership information, instructor profiles, and an integrated contact system.

Web DevelopmentPHPVue.js
View Project ↗
🌐

Portfolio Website

This interactive portfolio showcasing my work and skills. Features particle animations, smooth scroll effects, responsive design, and a custom conveyor-style project showcase. Built with modern web technologies for optimal performance.

AstroTypeScriptTailwindGSAP
View Project ↗
🏋️

Gymtribe

A comprehensive gym management platform currently in active development. Features member management, class scheduling, payment processing, and analytics dashboards. Building a scalable solution for fitness businesses of all sizes.

Vue.jsTypeScriptPHPWIP
View Project ↗
🥊

SBG Crewe

Website development for SBG Crewe martial arts gym. Created a clean, professional online presence with training information, class timetables, and easy-to-use enquiry forms. Optimized for mobile users and local SEO.

Web DevelopmentPHPVue.js
View Project ↗
🌱

Rot&Root

A physics-based zombie farming tower defense game created during a week-long game jam. Features full Steam multiplayer integration, unique physics-driven gameplay mechanics, and cooperative survival. Defend your farm against waves of the undead.

UnityC#MultiplayerSteam
View Project ↗
🥋

SBG Shropshire

Full website development for SBG Shropshire, a Brazilian Jiu-Jitsu and martial arts gym. Built a modern, responsive site with class schedules, membership information, instructor profiles, and an integrated contact system.

Web DevelopmentPHPVue.js
View Project ↗
🌐

Portfolio Website

This interactive portfolio showcasing my work and skills. Features particle animations, smooth scroll effects, responsive design, and a custom conveyor-style project showcase. Built with modern web technologies for optimal performance.

AstroTypeScriptTailwindGSAP
View Project ↗
🏋️

Gymtribe

A comprehensive gym management platform currently in active development. Features member management, class scheduling, payment processing, and analytics dashboards. Building a scalable solution for fitness businesses of all sizes.

Vue.jsTypeScriptPHPWIP
View Project ↗
🥊

SBG Crewe

Website development for SBG Crewe martial arts gym. Created a clean, professional online presence with training information, class timetables, and easy-to-use enquiry forms. Optimized for mobile users and local SEO.

Web DevelopmentPHPVue.js
View Project ↗
🌱

Rot&Root

A physics-based zombie farming tower defense game created during a week-long game jam. Features full Steam multiplayer integration, unique physics-driven gameplay mechanics, and cooperative survival. Defend your farm against waves of the undead.

UnityC#MultiplayerSteam
View Project ↗
🥋

SBG Shropshire

Full website development for SBG Shropshire, a Brazilian Jiu-Jitsu and martial arts gym. Built a modern, responsive site with class schedules, membership information, instructor profiles, and an integrated contact system.

Web DevelopmentPHPVue.js
View Project ↗
🌐

Portfolio Website

This interactive portfolio showcasing my work and skills. Features particle animations, smooth scroll effects, responsive design, and a custom conveyor-style project showcase. Built with modern web technologies for optimal performance.

AstroTypeScriptTailwindGSAP
View Project ↗
🏋️

Gymtribe

A comprehensive gym management platform currently in active development. Features member management, class scheduling, payment processing, and analytics dashboards. Building a scalable solution for fitness businesses of all sizes.

Vue.jsTypeScriptPHPWIP
View Project ↗
🥊

SBG Crewe

Website development for SBG Crewe martial arts gym. Created a clean, professional online presence with training information, class timetables, and easy-to-use enquiry forms. Optimized for mobile users and local SEO.

Web DevelopmentPHPVue.js
View Project ↗
Swipe to explore

Languages I Know

The programming languages in my toolkit

C#
Python
C++
GDScript
JavaScript
TypeScript
PHP
Vue
HTML/CSS
SQL
Primary
Proficient
Learning

Code Samples

A glimpse into how I write code

Unity
C#
public class PlayerController : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 5f;
    private Rigidbody rb;

    void Start() => rb = GetComponent<Rigidbody>();

    void FixedUpdate()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 move = new Vector3(h, 0, v);
        rb.MovePosition(rb.position + move * moveSpeed * Time.fixedDeltaTime);
    }
}
Vue 3
Vue
<template>
  <div class="project-grid">
    <ProjectCard
      v-for="project in filteredProjects"
      :key="project.id"
      :project="project"
      @click="openProject(project)"
    />
  </div>
</template>

<script setup lang="ts">
import { ref, computed } from 'vue'
import type { Project } from '@/types'

const projects = ref<Project[]>([])
const filter = ref('all')

const filteredProjects = computed(() =>
  filter.value === 'all'
    ? projects.value
    : projects.value.filter(p => p.category === filter.value)
)
</script>
Unreal Engine
C++
void AWeaponBase::Fire()
{
    if (!CanFire()) return;

    FHitResult Hit;
    FVector Start = MuzzleComponent->GetComponentLocation();
    FVector End = Start + (GetActorForwardVector() * Range);

    FCollisionQueryParams Params;
    Params.AddIgnoredActor(this);
    Params.AddIgnoredActor(GetOwner());

    if (GetWorld()->LineTraceSingleByChannel(Hit, Start, End, ECC_Visibility, Params))
    {
        if (AActor* HitActor = Hit.GetActor())
        {
            UGameplayStatics::ApplyDamage(HitActor, Damage, GetInstigatorController(), this, DamageType);
        }
    }
    CurrentAmmo--;
}
Unreal Visual
Blueprint
Unreal Blueprint

Let's Connect

Interested in working together or just want to chat? Feel free to reach out.