While working on the Rendering Team at Rare Ltd between 2015 and 2019 on Sea of Thieves , I was tasked with finding a solution to carve holes in our infinite water mesh used for the ocean. This was a very interesting task that ended up using some uncommon GPU features in a creative way. Demo Rowboat model: https://opengameart.org/content/low-poly-boat , mask mesh made manually in Blender Algorithm…
This series will be about the video game Jurassic Park Trespasser. My goal is to be able to play the game by rewriting its source code in Rust based on the original C++ code base. Hopefully discovering interesting things along the way. Why this project? Not sure why I like this game, I only played it properly once, never finished it but I was amazed by the technical aspects of it. Even with all…
See also Part 1 - Compiling a new executable Part 2 - Running the game for the first time Part 3 - Porting to WebAssembly Part 4 - Final steps Removing GLU dependency GLU is the OpenGL Utility library from SGI. It’s an API with helpful functions that work along with OpenGL. In our project, it’s used to create a view matrix using gluLookAt . So the fix here is just to copy the code for…
See also Part 1 - Compiling a new executable Part 2 - Running the game for the first time Part 3 - Porting to WebAssembly Part 4 - Final steps From part 1, I stopped after successfully compiling a new executable, but will it run? Answer is… NO! Alright, let’s dig into it! D1’s std.file.listdir core.exception.RangeError@src\abagames\tt\barrage.d(110): Range violation…
See also Part 1 - Compiling a new executable Part 2 - Running the game for the first time Part 3 - Porting to WebAssembly Part 4 - Final steps While exploring D recently, I remembered a game I played while at university 15 years ago. For a long time, I couldn’t remember the name at all, only that it was from a Japanese developer. After some search wrangling, I finally managed to find the…
Disclaimer This article is now obsolete as TravisCI added severe limitations to their free tier. Use GitHub Actions which is what I used to replace the workflow described here. Main difference with the usual tutorials is that I commit the hugo binary so I know what version is used and the website isn’t broken by Hugo updates. This article aims to introduce and show how to generate your Hugo…
NOTE from 2026: this seems quite obvious now, but I never really dug into how the ref count was working before, so it was a revelation at the time. Keeping the article for posterity to remind myself how much I learned since. A short tale (with pictures and code) of a recent debugging session. DirectX uses reference counting to handle the destruction of its resources. When creating a resource, the…