Picture of me

About Jacob Taylor

Who am I?

Hello! I'm Jacob, a Senior Gameplay Programmer currently working at Cloud Imperium Games. I'm passionate about delivering fun and high quality gameplay features to my players and efficient internal workflows to my colleagues. At CIG I've had the pleasure of creating new gameplay features, maintaining existing features, and building tools for designers and other developers to use.

When I'm not making games I'm often playing them, and have been greatly inspired by the works of Wube software, Coffee Stain Studios, and Re-logic, who've made some of my favourite games to-date. I'm a huge fan of the social aspect of cooperative and multiplayer games, and love to be part of creating those experiences for players.

Other than games I enjoy singing, working out, martial arts, scuba diving and generally experiencing new things. My curiosity has led me to fly planes, gyrocopters, and helicopters, try indoor skydiving, bouldering, and surfboarding, and even blacksmithing my own sword! I'm always looking for more activities and experiences to expand my world view.

How did I get here?

I've been interested in technology and games for my whole life, but got hooked on programming during my Computing A-level. The challenge and creative freedom programming presented was like nothing I'd experienced before, and since then I've known that it's a programmer's life for me! I went on to study a BSc in Computer Science at Warwick University to give me a firm knowledge of the fundamentals, followed by a Software Development internship at Amazon for some real world experience. I then took on an MSc in Computer Games Technology to help me specialize in games, and from there I was on to Cloud Imperium Games to kickstart my career.

What's next?

My goal is to become a Lead programmer capable of mentoring teammates, designing complex features, and managing the workload and schedule of the team. To work towards this I learn from talented colleagues through code reviews and discussions, work closely with designers to ensure we strike the best possible balance between creative vision and technical feasibility, and engage with producers to help triage issues, schedule work, and run meetings.

Portfolio

Star Citizen

Me presenting at CitCon 2024

For over four years now I've been working on Star Citizen, a massive scale high fidelity sci-fi MMO. My work has been a mix of building new gameplay features such as Loot Generation, Hull Scraping and Structural Salvage, and maintaining and expanding upon existing features such as the Room System and Harvestable System.

Currently I'm working on building the Crafting System which you can watch me present to thousands of our players in our Citizen Con 2024 presentation!

When building new features I've dealt with the challenges of managing dependencies (VFX, SFX, Art, UI), iterative design, and the compromises needed to make things work in a multiplayer persistent MMO. I've also managed the scheduling challenges brought on by the need to provide support for existing features and systems while simultaneously developing new ones. Throughout my work I pride myself in putting the needs of my colleagues first: a new feature is always a collaborative effort so it's vital that I provide excellent tools and documentation to allow designers and other dependencies to use my code to its full potential.

I always make time for mentoring more junior developers, making sure people know they can come to me with questions at any time. When I need to give feedback I feel it's important to carefully explain why I'm suggesting a change rather than just dictating what changes to make, as this helps my mentees to build their skills and knowledge faster.

Vulture ship performing Structural Salvage gameplay Vulture ship performing Structural Salvage gameplay

Feature spotlight: Structural Salvage

The Structural Salvage feature encompasses the gameplay of two salvage ships, the Vulture and the Reclaimer, and is how they break apart the wrecks of other ships into smaller pieces and extract a sellable resource from them. I was the singular gameplay programmer responsible for this feature along with three gameplay designers on my team. We had to deliver this feature on a very tight timeline and work closely with almost every dependency team in the company (Vehicle Art, Vehicle Design, VFX, SFX, Narrative) to ensure that every aspect of it was as good as possible in the given time.

My responsibilities on this feature included:

  • Deriving a technical design for a complex feature to ship on a challenging timeline, including sub-feature prioritization and scope negotiation with Production
  • Programming multiplayer gameplay involving physics object detection and destruction
  • Programming responsive user input with networking to other machines
  • Programming UI, VFX and SFX hooks into the gameplay so that these dependencies can display / trigger their outputs at the correct time and with modulation from gameplay parameters
  • Responding to rapidly evolving requirements from Design and other dependencies
  • Providing a suite of development tools, design parameters and debugging visualizations to facilitate balancing efforts by the designers
  • Ensuring the system was flexible enough to support the use-cases of both vehicles in an efficient and easily configurable manner

Voxel Framework for Unity (MSc Project)

Voxel desert biome at dusk Voxel snow biome

My final master's project was the creation of a voxel framework for Unity. From an academic perspective it was designed to compare several voxel algorithms and datastructures (including Greedy Meshing and Octrees), but I also wanted it to be an extensible framework for the development of a Minecraft-like game. The project took place over three months, and gave me great experience developing a large and complex system with Unity.

The major focuses of the project were performance and extensibility; the former was achieved through the Unity Job System (and Burst Compiler) for parallelism, and the latter was achieved with careful architectural design and extensive use of Scriptable Objects for data driven configuration. The result is that you can define new voxel types, biomes, and trees, and change world generation settings all through the Unity editor. The game runs smoothly with lighting and meshing updates in real time as voxels are placed and broken.

Key Features

  • Procedural terrain based on Simplex noise (including trees, caves and ores)
  • Support for multiple voxel types with distinct textures, including transparency
  • Support for rotatable/orientable voxel types (e.g. logs can be placed vertically or horizontally)
  • Voxel-based lighting baked into the meshes, with separate channels for sunlight and dynamic lights (and customized shaders to support this)
  • Use of the Unity Job System and Burst Compiler to parallelize and accelerate procedural generation, meshing and light propagation algorithms
  • Configurable voxel types, biomes and trees via Scriptable Objects
  • Basic UI and inventory system with drag-and-drop features
  • Extensive use of unit tests through the Unity Test Framework, and a custom performance testing implementation for comparing different algorithms and datastructures

Orbital (Side Project) Play Now!

Orbital gameplay

Orbital is an Arcade Shooter / Tower Defense hybrid developed in Unity, in which you must defend your planet from incoming hordes of aliens.

Orbital was designed for one of my master's modules, following a brief to make a demo for a free casual game. After spending some time creating a design document, the initial demo was created in 7 days.

I continued to work on it in my spare time, and it has been released as a work-in-progress on itch.io.

Key Features

  • Detailed unit stats, buffs and upgrades system using Scriptable Objects
  • Self-made spritesheet animation
  • Multiple enemy types with varied behaviors
  • Predictive targeting
  • Full object pooling

CV

Download pdf (Click Here) or view in browser below.

Your browser does not support in-page pdfs. Click here to download the file instead.