Henry: A Brief Value Analysis

Henry Williams




Figure 1: Henry in his natural habitat.




Abstract

In this paper we propose Henry, a software developer. Our benchmarks find that Henry is a fantastic programmer and a joy to work with. Disclaimer: These conclusions may be slightly biased.



1 Introduction

Henry greatly enjoys performance-oriented programming. He started making games in 2011, which led to interests in real-time constrained fields such as physics simulation and graphics. Nearing the completion of his degree, given his skillset and affinity for money, he naturally gravitated towards a position in high-frequency trading (HFT).


2 Previous Work

Henry has been working at Tradebot, one of the oldest HFT firms, since June 2022. He spends most of his time building out the company's C++ research infrastructure, but is no stranger to the production trading system. He has been put on hold with NASDAQ several times. Do not hesitate if you have further inquiries about this experience. [LinkedIn]


3 Starboard

Starboard is a large open-world multiplayer game that has been developed casually over nearly 8 years using Unity/C#. It was officially "postponed" in 2023 but is secretly still being worked on. Because Henry is tired of writing about himself in the third person, this paper will henceforth be written in the first person.


3.1 Procedural Animation

Trying to code natural movement for creatures is a lot of fun. This crab, for example, uses inverse kinematics to calculate leg transformations given the context of his body and the surrounding terrain.



Figure 2: Crustacean animation.



3.2 Stability Base Building



Figure 3: Undesirable behavior.



I was always a little bothered by the floating trees in Minecraft. Bored one day in lecture, I sketched out an algorithm to prevent "floating islands" with the base building system in Starboard, and eventually made it open source [GitHub]. Each component of the structure is treated as a node in a graph, propagating stability updates as pieces are added and removed, using collision detection to calculate edges. This is computed asynchronously across multiple frames in the game to prevent latency spikes.



Figure 4: Building a pier that collapses once it's no longer connected to land.



3.3 Procedural Generation

Until recently, I was detailing every island in the game by hand, which gave me full creative control but also took a lot of time. I made a tool to automate much of this process, generating an entire resource-filled island from just a rough model and some generation parameters.



Figure 5: Automatic detailing given different input parameters.




Figure 6: Example of a refinement pass; removing plants where they cannot survive.



3.4 Water

Gerstner waves can be implemented with the fast Fourier transform to simulate the surface of an ocean in real-time. This relatively straightforward project becomes much more interesting if you want the simulation to be influenced by multiple clients (e.g. the wakes of several boats) and synchronized across the network. I originally used a great open source project called Crest, but I needed my ocean to run on a headless server without a GPU, which isn't possible with Crest. There are no decent open source solutions at the moment, so I'm working on my own.



Figure 7: A boat sampling the height of the water to calculate buoyancy physics.



4 Voxels

I've always been fascinated by voxels, where scene data is organized on a 3D grid. Having such a pure representation of the world makes so many cool physics & graphics optimizations possible.


4.1 Isosurface Extraction

Given a uniform scalar density field, several algorithms exist to generate an isosurface for it. My undergraduate reserach project explored using these techniques to visualize MRI scans. I similarly applied this knowledge to create a high-resolution real-time sculpting toy. With some clever chunking logic, the isosurface algorithm becomes somewhat naively parallelizable, enabling it to run quite well on a modern laptop without a GPU.



Figure 8: Playing around with virtual clay using 16 threads.



5 Future Work

I've started work on parallel physics engine and raytracing prototypes to turn my sculpting toy into a something a little more substantial. Both of these projects benefit dramatically from well structured volumetric data, and the implementation details can look quite different than those of traditional techniques. This work is still in its early stages, but I'm very excited to be working on it for the next few years.

I'm also determined to win the 28th IOCCC, whenever that opens.