Here are some software projects I have worked on in the last few years. This does not include any work I have done for other organisations.
Jan 2022
C
Work In Progress
A cross-platform multiplayer video game implemented from scratch, including a custom 3D renderer and encrypted network protocol.
October 2021
C
https://github.com/benhenshaw/concrete (WIP)
A web server implemented in C with the goal of being fast and stable. The basis of the design is that all potentially dangerous (or slow) actions are performed at start-up (binding sockets, file IO, memory allocations), and after this point the software can be left alone and expected to work correctly.
Feb 2021
JS, WebGL
https://dowling.cc/resonance
https://dowling.cc/geometric
Two collaborations with Edward Dowling on some graphics experiments. One is a visualisation of resonance based on observations of a Chladni plate experiment. The other is an exploration of generating geometric patterns according to various rules observed in Islamic tilework. The former is implemented entirely in a WebGL shader, the latter is implemented in JS using the Canvas API.
May 2020
C
https://github.com/benhenshaw/bootleg3d
A software renderer for simple 3D graphics in a single file, written in C. It aims to provide a simple API, with a small and easy to modify code base.
Mid 2019
C, SDL
Dissertation for MA Playable Experience Design. An online space which explores how virtual places (even when very minimally designed) can feel memorable and real to those who experience them.
April 2019
C
A persistent virtual space using simple stateless procedural generation, inhabited by spaceships that tell your their thoughts as you fly by.
February 2019
C
https://github.com/benhenshaw/breakfast
Serial communication library for UNIX (macOS, Linux, BSD) and Windows. I wanted a simple cross-platform way to communicate with via USB with an Arduino (though it also works with any standard serial device), so I wrote this.
January 2019
Go, JavaScript
https://github.com/benhenshaw/screenplay
A text-based (and web-based) multi-player improvisational real-time text adventure game (and “engine”). Each player is given a character profile and a set of goals which they have to try to fulfil. The initial demo was built with a single scenario, but the project was constructed with the goal of supporting many different stories, each with its own set of characters and verbs. I used the explicit goals to incentivise role-play by rewarding players for the use of a character’s catch-phrase or for employing their speech patterns.
December 2018
C, WinSock, BSD Sockets
https://github.com/benhenshaw/quick_udp
A small cross-platform library that allows easy sending and receiving of UDP packets.
Mid 2018
C, SDL
https://github.com/benhenshaw/labyrinth
A software-rendered 2.5D FPS (in the style of Wolfenstein 3D) with network multi-player.
Early–Mid 2018
C, SDL
https://github.com/benhenshaw/rhythm
Dissertation project for BSc Games Programming at Goldsmiths, University of London. It’s a simple rhythm game, implemented in C with the intent to build as many components of the software myself within the time constraints. In the end I wrote a memory allocator, software renderer, audio mixer, asset file reading and writing, and the game-play code for this project myself.
Early 2018
Escape Room (with supporting software in C)
An escape room built around the concept of limited communication. Players are split into two separate rooms and must use various limited communication channels to solve puzzles together. Built during my BSc in Games Programming.
Mid 2017
Lua, Löve2D, LuaSocket
https://salty.itch.io/magichands
See my GitHub repositories for more.