I always strive to advance my own knowledge, so that I can work at the very forefront of technological innovation and development. I'm keen and interested in learning new technologies or techniques, in particular lower level systems and optimizations, and have become a very quick learner and therefore an not phased when faced with a unknown technology. I work calmly in a high pace / high stress working situations.
I have a vast amount of experience of working with live, heavily networked and content heavy products. I enjoy throwing myself into any area of development and help those around me so that we may reach the best possible solution, not just the best technically but the best when balanced against business value, maintenance cost and flexibility. I have recruited and built various tech teams, onboarded them and provided them with technical direction.
I have experience in the following:
Languages: C, C++, C#, Golang, Java, Zig, Assembly (ARM), Javascript, Python, SQL, GLSL, LUA
Technologies: Unity3D (3.4 -> 2022.3), Godot, (worked with a number of other engines in non-commerical capacity)
Tools: Git, SVN, P4, Visual Studio, Rider, Intellij, VS Code, PyCharm, XCode, Android Studio
I'm currently open to new opportunities, and would very much enjoy a new challenge.
Tim Leader
[email protected]Professional Projects
Lava Labs
Lava Labs — developers of A Far Away Realm (AFAR). Our team operates across the UK, Sweden and the Netherlands and consists of some of the most talented minds the games industry has to offer. Together, we draw on years of experience at leading companies in our industry.
Lead Core Tech Developer
April 2022 to Now
- Built the required infrastructure, to allow for writing game logic in lua, which can then be ran in a number of different places:
- embedded in the client - which makes it easy for any of our unity developers to iterate on (especially with the hot reloading) / debug the game logic
- run in a simulation - the game logic can also be ran many times with simulated user input, this can help gives us insight into how the game balance will play out
- run on the server - the final place in which the game logic will run, to give us server authoritative game logic
- I built most of the Mobile Game infrastructure / core systems, this included:
- Build System - Versioning, Configuring, CI Job, etc..
- Configuration - A flexible configuration system, where configuration can come from file, remote file (http download), or even a webpage where we can select from a collection of preset configurations
- Signin - A signin system that supports GooglePlayGames, GameCenter and Anonymous
- Rewarded Video Ads - A system to handle server side rewarding from video ads
- In-App Purchasing - GooglePlay, Apple, Samsung
- Notifications - Push / Local Notifications using FCM and APNS
- Networking - Reliable Networking interface, including built-in network fuzzing
- We had our own inhouse analytics system, which meant we had a very sizeable pool of data to analyse, We inspected our own data using Python's Pandas and Streamlit libraries.
- Deterministic networking model, implemented the networking for a online multiplayer, party royale game
- Built various games / prototypes ranging from top down base builders, idle clickers to a party royale game
Technologies
C#, Golang, C++, Java, SQL, JavaScript, Python, Unity3D, Teamcity, LUA, Gradle, Android NDK, CG Shaders / GLSL, HTTP, TCP, Websockets, Appium, NUnit, Nakama, Photon, Sqlite, Postgres
Platforms
Android (Googleplay, Samsung), iOS
Links
Lockwood Publishing
Since we came to life in 2009, Lockwood has evolved into one of Europe's top mobile game developers. We are a multi-award winning, independent company, and our staff enjoy flexibility, autonomy and collaborate together using the latest softwares.
Technical Director (Client)
Mar 2020 to April 2022
- Worked with the Head of Development and Engineering Director to improve and plan for future team structure, and refine existing processes
- Worked with our in house recruiter and various leads in the Client department to hire new members for our teams and even new teams, this included carrying out the interviews, developing coding tests and evaluating candidates test results, and identifying candidate fit within the culture of the company and role.
- Worked with various teams to build out our roadmaps
- Performing code reviews and providing technical direction / assistance where required
- Creating initial POC of our HLS Video Streaming solution, which informed / directed our final shipped solution
- Prototyped LUA integration in the Client
- Lots of profiling / optimizations / crash investigations and fixing
- Working with Build Engineers to optimize and improve our VCS and CI systems
Lead Client Developer
Jan 2018 to Mar 2020
- Worked with Head of QA to build a QA Automation team, and ran technical direction with this team initially to get them up and running.
- Worked with Lead Backend Engineer to implement a stable websocket connection with the client.
- Introduced an embedded DB for use across the app
- Worked with UI team to develop a downloadable UI solution
- Prototyped a data binding solution which the UI Team later integrated into their UI Solution
- Investigated and prototyped HTTP2 and a streamed downloaded / caching solution
- Took ownership and eventually rewrote our MP3 streaming and Shoutcast stream support
Lead Core Tech Developer
Feb 2016 to Jan 2018
- Overseed the conversion of our Avatar generation code in C++, which I later had to complete the integration into game which involve numerous tweaks and optimizations.
- Prototyped a VR feature for Avakin, which later lead us to bringing onboard another studio to pursue the DaydreamVR version of the game (unfortunately this was later cancelled)
- This role involved focusing more on the foundation tech, while maintaining and advancing the
- Worked with Princple Network Engineer to develop the foundation of what we now call our gameframework, included a custom content pipeline.
- Overseed the migration between unity versions, which included automated validation of 20,000 virtual item after re-export.
- Investigated Bink2 integration in the client.
- Integrated WebP and Snappy, where I built a multi-teir caching solution which would help us more aggressively keep only the on screen UI imagery in VRAM, while keeping download size to a minimum
- Wrote various foundation code, eg. generic async handles, to make async code easier to write and interface with.
Programmer
Aug 2013 to Feb 2016
- This role involves programming in a modern game development environment, assisting with the mentoring of new members to the team. The role also requires strong communication with the art and management team to develop content pipelines and tuition around the game capabilities and game engine.
- Worked alongside another skilled engineer to put together a CI / Build Solution for our content pipeline and client builds, later we brought on board a build engineer to manage and continue advancing the infrastructure we put together.
- Took ownership of an externally developed NodeJS server.
- Put together tooling to help Developers and QA test the app with various configurations.
- Worked alongside environment artists to develop new and extend existing shaders to give the artists more ability to produce better visual results at a lower cost.
- Maintained and advanced our realtime server for AvakinLife, working through various scalibility issues, through doing this I also interacted with SQL (Postgresql and MySQL) and Redis
- Prototyped a Lobby Server that would work alongside our realtime server.
Junior Programmer
May 2012 to Aug 2013
- This role involved quickly adapting myself to the team's standards. Gaining a good understanding of the current codebase and its direction.
- Ported existing Avakin applications to Android and iOS
Technologies
C#, C++, Obj-C, Java, SQL, JavaScript, Python, Unity3D, Jenkins, Protobuf, LUA, Gradle, Makefiles, Maven, Android NDK, CG Shaders / GLSL, HTTP, TCP, Websockets, Appium, NUnit, NodeJS, Redis, HLS Video Streaming, WebP, Snappy, VR
Platforms
Android (Googleplay, Amazon), iOS, Facebook Gameroom
Links
Nerfgames
An indie game studios that me a good friend founded, while we were still students at university.
Technical Director
April 2010 to May 2012
The majority of projects undertaken within NerfGames can be found at nerfgames.co.uk. Most were developed in C# and XNA 4.0. One of these projects is the NerfCore which is an in house games engine that is designed to replace, optimise and enhance many areas of XNA and make programming games for XBOX, PC and WP7 quicker and easier to implement more feature rich content. Throughout these projects SVN and then later TFS where used to make version control easy while working as a team on the same codebase.
This role within this small Independent game studio, had me mainly focused around core development, including core graphics programming. Though the role also extended to develop the company website, professional networking at attended events, team management, research and project management.
Technologies
C#, Java, HLSL, DirectX XNA, PHP, SQL HTTP
Platforms
Windows, XBOX 360, WP7, Android
Nottingham Trent University
Researcher (Cave Mapping)
This project was done for the Nottingham Cave Survey. Laser scanner's datasets were the point of interest for this project as this data could only be displayed as a pre-computed non-interactive video or a static virtual tour if wanted in real-time. The aim of this project was to establish a workflow for putting the scanner's datasets into a real-time environment such as a modern day game engine like Unreal Engine 3.
Technologies
UE3, XNA, C#, MeshLabs
Dissertation - Frequency Texture Mapping
This project involves implementing frequency-space textures on modern hardware in order to investigate if it is now possible to use this at real-time in order to remove aliasing from texture sampling. This project has involved heavy use of frequency-space transforms, to transform the 2D textures into frequency-space and synthesize the textures back from frequency-space.
Technologies
C++, OpenGL, GLSL, C#
Personal Projects
Unity Automation Playground
Overview
An end to end implementation of running appium automation tests on a Unity3D project. This project was aimed to help me understand the Jenkins Pipelines and Appium, and it was also aimed to provide me with an implementation that I could easily port across to any future project with ease.
Technologies
Jenkins, Jenkins Pipeline, Docker, Unity3D, Appium, Device Farms, NUnit, Golang
Platforms
Linux
Source
Raspberry Pi Pico - Soundbox (in progress)
Overview
????
Technologies
C, RaspberryPi Pico, JTag Debugging, Electronics, Soldering
Platforms
RaspberryPi Pico
N64-Demo (in progress)
Overview
Most recent personal project is to build a vertical slice for the N64 hardware, so far I have got the official SDK with some tweaks up and running in docker that will compile Zig code for N64.
Below I have listed a subset of the challenges I faced:
- Skeletal Animations
- Geometry Skinning
- GDB debugging of n64 game running in cen64 emulator
- Unity3D based Content Pipeline
- And many more...
Technologies
C, C#, Docker, Unity3D
Platforms
N64
GBA-Demo
Overview
This GBA demo is vertical slice built from the ground up, point and click adventure style demo with 3d entities over pre-rendered 2d backgrounds, also including video playback and 3d audio. The demo is based on an existing game made by Ben 'Yahtzee' Croshaw, 7 Days a Skeptic. This is a personal project to aid developing my own skillset, inspiration / desire for this project came about after seeing Raylight Studio's Blue Roses GBA Tech, in particular the Resident Evil 2 tech demo.
Below I have listed a subset of the challenges I faced:
- Writing a custom malloc from the ground up to support the GBA's two different areas of RAM, also an apreication of memory alignment and DMA.
- GDB debugging.
- Fixed point numbers / maths and LUTs to help with divides and trig
- 3D software renderer, some parts of which has been converted to asm where needed, also have included self modifying code to get some extra speed
- 3D Audio engine, mixing, investigations around DPCM with Huffman encoding but it did make sense.
- Video Playback, ported an open smacker decoding library to GBA, decided on the route after investigating a number of other options
- Makefiles / Linkerscripts, so that we can ensure the various code and data can be placed in the right location.
- Unity3D based Content Pipeline
- And many more...
Technologies
C, ARM Assembly, C#, Makefiles, GDB, GCC, SDL2, Unity3D
Platforms
GBA, Windows
Source
Outrun (Android Port)
Overview
Took a Outrun ROM system and ported it to android, the big challenge here was making the right decisions where and what to wrap, in the end decided to use a android version of SDL and a subset of Boost.
Technologies
C++, SDL, Android NDK
Platforms
Android
Source
Took part in a fair few game jams, we usually pursued game ideas that would involve some form of networking to produce a more fun / social experience.
We attended a number of more local game jams, and also a the more well known Global Game Jam for a number of year.
Technologies
C#, XNA