My PhD

Overview

In a nutshell, I wrote my doctoral thesis on netcode for MMOs. The work I did during (and before) my PhD eventually turned into libfabric.

My thesis

The title of my thesis was "Peer-to-peer update dissemination in browser-based networked virtual environments". You can read the full thing here. That's a bit of a mouthful, so let's break it down back-to-front:

A key insight with this work is a separation of the control plane from the data plane (think SDNs). Ask yourself: which parts actually really need to be decentralised and which parts don't? Don't fall into the trap of decentralising things just for the sake of it!

Code, evaluation framework, network trace datasets, etc, are all open source.

Goal

My ultimate vision, beyond the PhD, was (and still is) to build decentralised virtual worlds. My original motivation was one of practicality; I wanted to build multiplayer games and host permanent game servers, but had no money. Later, I would learn that the primary pain points for large-scale multiplayer games are not around operational costs, but rather player acquisition. This did not however put me off the elegance of my vision. I felt like these systems needed to be built not to solve any big immediate underlying problem, but because they would open up a possibility space for indie developers that may create a new class of games. I wanted to build cars, not faster horses!

Origins

I had been very interested in this area even before my PhD. I finished my Masters in 2014 and was already experimenting with the seeds of this work. I was working on this research entirely on my own as there wasn't really anybody at my university in the same area. Most related work was around a decade old (for reasons I explore in my thesis), and the few authors I could communicate with had long since moved on to unrelated big tech jobs. My supervisor was helpful in a research/academic/writing capacity, but not so much in a technical capacity, as it wasn't his speciality.

I feel like interest in this area might have rekindled a bit with all the web3 hype (which I do have some thoughts on) so if you'd like to collaborate, let's chat!

Future work

Things I might add onto this work in the future if there's a real demand: