Finlay Laidlaw

Games Programmer

Hi, I’m Finlay

I’m a Dundee-based games programmer who believes in writing clean code that serves others. I enjoy making good tools, fixing tricky bugs, finding new methods, and working with other skilled professionals to bring ideas into reality.

I am confident in my C++ and Unreal Engine 5 skills, with professional experience at Sumo Digital and 1st class honours in BSc (Hons) Computer Games Technology at Abertay. I have made mods, participated in game jams, the Grads in Games Rising Star Programming challenge, and Abertay’s DARE Academy.

I like games, reading sci-fi/fantasy, and learning about physics and science. Some games that inspire me today: Deltarune, Sifu, Outer Wilds, Celeste, and Hardspace: Shipbreaker.

I’m looking for work as a games programmer either locally in Dundee or remote. I can also work hybrid in Edinburgh, depending on the details.

⇓ Download CV ⇓

C++

  • Modern C++, up to C++23
  • Safe memory management with smart pointers
  • Error handling with expected or exceptions
  • Clean coding practices (encapsulation, DRY, good names, etc.)
  • Learning and integrating new libraries as needed
  • If you want to see some of my code, look here.

Unreal Engine 5

  • 3Cs: Enhanced Input and Mover
  • UI programming: Common UI, UMG, Editor Menu Extensions, and Slate
  • Tools programming: implementing undo/redo support, integrating with RewindDebugger, and various minor debug features
  • Multiplayer: C++ Game Framework (PlayerState, GameMode, etc.), RPCs, fixing networking bugs
  • Architecture: Using Subsystems, using Actors and Actor Components, designing new systems.

Soft Skills

  • Working in large and small teams
  • Researching and learning independently as needed
  • Communicating with others to solve problems
  • Using professional workflows: Jira, CI/CD, code review, and adhering to coding standards
  • Using a variety of resources to solve problems: documentation, blog-posts, reading source-code

Engine Level

  • Graphics programming: DirectX11, OpenGL, shader programming, compute shaders, shadow mapping, normal maps, instanced rendering.
  • Scene and object management
  • Low level networking
  • Using physics, audio, input, and windowing libraries

Miscellaneous

  • Some experience with Godot and Unity in game jams
  • Some C, C#, Python, and Typescript experience
  • Some HTML/CSS experience (this website is hand-made)

Finlay is a fantastic programmer to work with. He’s got a great attitude, is extremely fast and capable at prototyping, and isn’t afraid to speak up and make suggestions to improve the features he is working on. He’s also really engaged and delivers work extremely quickly.

I’d happily work with Finlay again in the future, and have no doubt he has a bright future ahead of him in the games industry.

—Thomas Chase, Senior Principle 3Cs Designer at Sumo Digital Sheffield (Source)

Sumo Digital Placement (1 year)

Placement Programmer

  • Join an in-development project as a programmer
  • Understand an existing code-base from reading source-code
  • Program for Unreal Engine 5 using C++ and Blueprints
  • Use Jira for task management and Miro for creating documentation
  • Use Swarm for code review
  • Use Perforce with UGS for source control

Project D5 (Gamemodes Team)

  • Join the gamemodes team: implementing features, fixing bugs, owning and maintaining systems
  • Fix bugs affecting gamemodes, including UI, networking, and Game Ability System related
  • Implement new gameplay features based on requests or specifications
  • Fix bugs and complete tasks listed in Jira without needing additional support
  • Own two gamemodes, fixing bugs and implementing new features as required
  • Harden Blueprint prototypes, and convert them C++

Unannounced Unreal Engine 5 Project (3Cs Team)

  • Join the 3Cs team, working mostly on character movement and combat
  • Work with Unreal’s Mover system to for player character locomotion
  • Implement locomotion debugging visualisations with Rewind Debugger and line drawing
  • Implement player combat and movement abilities
  • Implement prototype abilities from a specification, iterating with designer feedback
  • Work with sound designer to specify and implement hooks for character sounds
  • Implement prototype user interfaces with UMG

Heldritch Rush

Unreal Engine 5 Programmer

  • Set technical direction for Unreal Engine 5 project
  • Manage tasks, assist, and review work of other programmers
  • Program in C++ and Blueprints, with native systems supporting Blueprint scripting
  • Using Git and Trello

Input and UI

  • Develop input and UI system using Common UI and Enhanced Input
  • Create custom Slate widget for input rebinding interface
  • Support KBM and gamepad, with input rebinding

AI & Navigation

  • Create State Trees for ranged and melee enemies
  • Create custom State Tree Component that pulls enemy configuration from a Data Table
  • Create centralised enemy positioning system using Environmental Queries

Animation Blueprints & Materials

  • Implement Animation Blueprint for main character, blending locomotion and combat animations
  • Use Chooser to switch between weapon animations
  • Program custom materials for animated lights

Tools

  • Create Unreal Engine 5 tools with a focus on ease-of-use for designers
  • Insert loadout configuration menu in editor using Unreal’s Menu Extensions
  • Create spline-locomotion system for an on-rails shooter, including locational event system
  • Make enemy and weapon values driven by Data Tables

BSc (Hons) Computer Games Technology

Games Technology Student

  • Creating many game projects and demoes
  • Multi-disciplinary collaboration
  • Programming: Primarily C++, but also TypeScript and Python
  • Engine programming: scene/object management and creating usable APIs
  • Graphics Programming: DirectX11, OpenGL, shadow maps, compute shaders
  • Network programming: TCP/UDP, researching and implementing roll back for player movement
  • Mathematics: rigid-body physics, splines, collisions, and intersections

Embedding Games in QR Codes

Web Developer

  • Create a 2D game engine and editor interface with TypeScript and WebAssembly
  • Package a website into a Progressive Web App
  • Port PPMd (prediction by partial matching) compression software to the web with WebAssembly
  • Create a 2D level editor that uses Unicode characters for graphics
  • Create a WebGL renderer for 2D character graphics
  • Serialise and compress game data into a QR code to allow for offline storage and transfer
  • Write documentation for game engine and editor
  • Integrate Lua scripting into a web-based game engine
  • Write a dissertation on my project and present it orally

Braise Satan

Unreal Engine 5 Programmer

  • Collaborate with designers, producers, artists, and other programmers to create a game
  • Program a first-person cooking game in Unreal Engine 5, from initial concept to EGX stand and (non-commercial) Steam release
  • Use C++ and Blueprints to implement features
  • Implement physics based item interaction and item snapping system
  • Manage game state across rounds with dynamic level elements
  • Implement cooking mechanics: chopping (skill check), cooking, frying, and mincing
  • Implement tutorial with object highlighting and NPC dialogue system
  • Create custom C++ latent Blueprint node to ease tutorial creation
  • Implement controller support, including aim-assist for item interaction
  • Use Git and Jira

AURIONNAUT

Developer

  • Participate in Grads in Games Rising Star Programming challenge
  • Extend existing DirectX and Windows API based framework
  • Implement font and UI rendering using DirectXTK
  • Implement instanced rendering for particles
  • Integrate PhysX into an existing framework
  • Implement audio support with SFX and music support
  • Create abstract interfaces to isolate underlying implementation
  • Implement procedurally generated trading market using Perlin noise
  • Create enemy ship AI with (6DoF)

Undertale for the NES

Developer

  • Port a fight from Undertale to the NES
  • Program a demo in 6502 assembly
  • Create sprite and game state machine to organise game logic
  • Convert pixel art graphics to be compliant with NES constraints
  • Integrate sound engine for fight music
All Posts