Hugo Scott-Slade Full Stack & Game Developer

Demeo
  • VR
  • Steam
  • iOS
  • Playstation

Demeo is a cross-platform cooperative adventure for up to four players that recreates all of the magic and camaraderie of gathering around a tabletop with friends to do battle against the forces of evil.

Requiring strategy, cunning and teamwork, Demeo is a journey through a fantasy world that only the bravest band of heroes can survive. Adventurers, it’s time to unite!

I was on the team responsible for the social space for this game and additionally collaborated on memory optimization. I was the lead developer for certain features as well as helping on general issues.

A key focus of this project was creating a solid core with reusable features for future social lobbies. This was one of the reasons I was hired and brought onto this team. I worked with the team to make this vision a reality.

I have organized the work I did into different sections highlighting some of the key points for each. For a fuller picture of my role & responsibilities please get in touch using the links at the top of the page.

Arcade Machine

We had a playable arcade machine which ran custom games (made in PICO-8).

I reworked this machine to meet performance requirements and change it's networking approach. The previous approach required a game to be fully deterministic and when joining a room it would have to simulate every frame of the game to 'catch-up' which often caused 20+ seconds of loading. It also had a constant performance cost even when not interacting with the game to keep it in sync. The new approach synced only the information to sync the visuals + audio rather than recreating the whole game, and it only ran when needed.

  • New networking solution to sync entire game in ~10-150 bytes
  • No loading time cost.
  • Performance cost was reduced to 15% of previous implementation.
  • Performance cost only paid while viewing the game rather than constantly.
  • Reduced fidelity version while in distance to also save performance.
  • Developed entirely as a project independent package for reuse in future social spaces.
  • Added new content and fixed bugs in custom game 'Hauntlet'.
Custom IK

The game used FinalIK to simulate our torso position but for our 12 players this cost 2ms every frame on Quest 1. I wrote a custom IK solver which focussed just on our requirements and performance budgets.

  • Performance improved 10x on worst-performing target device.
  • Solved issues with skeleton in unrealistic positions during fast movement.
Optimization

A lot of work was needed to meet our requirement of 12 players on a Quest 1. This covered CPU, GPU, Memory and Networking. As we were a separate team from the main game we diligently managed our memory usage so we had no impact on the game.

  • I identified memory issues with the main game which were causing crashes on Quest 1. I worked closely with the game team to reduce their memory usage and ensure my team could work without external issues.
  • Optimized many visual elements to reduce memory usage, draw calls and shader cost without impacting visuals.
  • Created custom VFX to replace costly VFX.
  • Custom performance widget in Editor and on device for tracking performance across CPU, Memory and Networking.
  • Rewrote networked physics syncing to save bandwidth.
  • UI optimization for both performance and memory usage.
Packages

I was primarily brought into the team for my expertise with packages and modular code. The team had worked on a social space previously but it was highly coupled to the previous game. There was a need to create something more modular and reusable to allow integration with future games.

The new social space was underway when I joined the team but we worked on a few areas:

  • Core features of a social space moved into a package.
  • New features were created as packages by default.
  • Iteratively refined each package and created a common interface for extensibility & reusability.
  • Packages I created were adopted on a company-wide level.
  • I contributed to several existing company projects to add new features and fix bugs.
  • The team was able to now maintain multiple live games at once. Bugs and fixes from one game were able to be shared.
Painting Room

We added a feature for painting models from the game in realtime with other players.

I worked solo on the prototype then worked with the team to integrate into production.

  • Multiple different brushes and tools. Each with haptics, brush direction & pressure sensitivity.
  • Painting worked in realtime so you could see what all players were painting as it happened.
  • Worked entirely on CPU as no GPU budget available.
  • Various networking methods used to sync data in the smallest size possible and keep within bandwidth budget.
  • Developed entirely as a project independent package for reuse in future social spaces.
  • Work was exstensively documented. I ran a workshop with the team to onboard them to the feature and how it worked.
Tools

I wrote several tools for the Unity editor to improve the teams workflow and give us more time to focus on our tasks.

  • Manage multiple Unity editors to get into custom multiplayer games
  • Customise rendering behaviours per platform
  • New and expanded debug tools within game