Matthew Li

Software engineer with a strong interest in games, networked systems and high performance code. Computer science graduate, amateur illustrator. Australian citizen currently living in Sydney but open to relocation!

C++ C# Python Bash
Unity Unreal
Object-oriented programming Netcode
Git Jira AWS

Software Engineering

Software Engineer Intern at VMware
Feb. 2022 - Jul. 2022 (6 months)

  • Wrote RESTful APIs in the backend of tools for VM creation and packaging. C# .NET
  • Designed and built frontend components for Imager, a tool for creating golden image VMs. Imager entered the top half of VMware's most downloaded experimental tools within months of release. Angular TypeScript CSS
  • Collaborated using the agile methodology in a small team working hybrid. Jira Bamboo Git

Netcode

Multiplayer/online game systems | Realtime distributed systems

P2P Deterministic Lockstep

Demo with an input delay of 6 ticks, artificial latency of 25 ms (50ms ping) and artificial packet loss of 5%. Synchronisation is achieved. Network conditions weren't turbulent enough to cause freezing/locking.

C# Unity DarkRift 2 (messaging library)
  • Created a stripped-down clone of Divekick, a minimalistic multiplayer fighting game
  • Implemented the deterministic lockstep networking model
  • Adopted a peer-to-peer architecture
  • Utilised both reliable and unreliable channels (TCP/UDP)
  • Handled serialisation
  • Simulated latency and packet loss
  • Click here or the section title to view the repository, which has a detailed README

Notes

Detailed notes on netcode protocols, currently detailing P2P deterministic lockstep, P2P rollback and C/S Quake/Source-style snapshots.

Further work in progress!

Generalist Game Development

Bachelor's Thesis: Interfaces in First-Person Shooter Games

  • Compared four industry-standard types of interfaces for activating voice commands in first-person shooter games: non-nested wheel, nested wheel (shown on the left), non-nested list, and nested list
  • Developed a 3D first-person shooter (design, programming, art, audio) C# Unity Blender Photoshop Audacity
  • Deployed a HTTPS server for telemetry Python AWS (EC2)
  • Conducted online playtesting Amazon Mechanical Turk
  • Performed a statistical analysis Python (SciPy, Statsmodels, Numpy, Pandas)
  • In case the reader is interested, I concluded the following. Nested interfaces had a steeper learning curve than their non-nested counterparts. This was expected. However, I didn't find many significant absolute differences in performance (speed, accuracy, effect on gameplay). This may have been a fault of my experimental setup. However, if not, then my results suggest that designers should employ nested interfaces because they offer extra voice commands without notable downsides.

Game Jams

Shmup - Solo (code, art, audio)

Arcade - Solo (code, art, audio)

Point-and-click - Solo (code, art)

Arcade - Solo (code, art)

Arcade - Solo (code, art, audio)

RPG - Solo (code, art)

Stealth - Art

Bullet hell - Solo (code, art)

Community Content

Maps for Krunker - played over 900,000 times

  • Pioneered a subgenre of maps for training movement in Krunker, drawing inspiration from jump/surf maps in Team Fortress 2
  • Featured by the Krunker developers
  • Currently holds the most plays across all maps within their category
  • Wrote a level design document here

Amateur Illustration

Fanart for MapleStory

Hobby illustration

Hobby illustration

Entry for a college charity art auction

Cover art for track Kingdom Come by Surup Thathachar