It Lurks Below Port: Chat, Lobby Names and a 32-Bit Rebuild
By Indie Kings | October 29, 2026
Updated October 29, 2026: the It Lurks Below decompilation now lives at SourceCodeDeleted/We_Lurk_below_Mod, a 6.1 megabyte C repository whose newest commits, dated October 24, add in-game chat, quieter joins, character names in the lobby and softer egg and honey sound effects. The project rebuilds the 2022 GOG release of Graybeard Games' game as native 32 bit code for Linux and Windows with SDL2 and OpenGL, and it still requires the original ILB.gbp data file to run.
Disclosure: this site covered the same project on October 26 in an overview of the port. This article looks at the source tree, the network stack and the build pipeline rather than repeating that introduction.
Image: Cox's Cave in Cheddar Gorge, England, via Wikimedia Commons.
What the October commits changed
The commit log is the clearest window into what this project actually is. On October 24 the author landed a change titled chat, quieter joins, character names in the lobby, softer egg and honey sound. That single line describes four separate pieces of work in two very different layers: a network chat channel, an audio mix adjustment, a UI change to show player names, and a tweak to two specific sound effects. A patch that touches all four in one commit is the signature of a solo developer working on a game rather than a team maintaining a library.
Earlier that day there are commits for a cloud and run time fix and something labeled dsync, and on October 17 the log shows both work in linux, a windows build fix, a network test, a white new world fix caused by malloc returning zeros, and a change that lets Linux and Windows copies play network games together. Read together, those messages describe the transition from a port that runs to a port that people can actually play together. The white world bug is a nice example of the class of problem involved: the original code relied on memory being zeroed in a way the new platform did not guarantee, and the fix had to preserve behavior rather than just suppress the symptom.
The repository is small in social terms and large in technical terms. It has one star, one fork and one contributor, and it was created on October 11, 2026. That combination is unusual for a project this far along, and the explanation is that the work predates the public repository: the port already ran the title screen, character creation, the world, saving and loading before this tree appeared. The star count measures discovery, not effort.
A lobby server in Rust with no dependencies
Online two player support is the feature the original game did not ship, and it is implemented as a separate Rust server in the server folder with no external crates. The design is deliberately modest: a lobby where players find each other, and a relay that carries input between them, rather than a full authoritative simulation. The game itself still runs its own world on each machine, which is why the README can claim that a Linux copy and a Windows copy of the same version can play together.
The verification method is the part worth stealing. The project records a session's inputs and replays them, so a network bug can be reproduced without two machines and two humans. The README says cross-platform play was checked by replaying one recorded session on both builds, which is a much stronger statement than "it worked when we tried it." Record and replay is standard practice in game development and rare in hobby decompilation projects, and it fits the project's overall approach of turning hard-to-test behavior into deterministic artifacts.
The optional modules follow the same philosophy. Online play, a changed story start, seasonal vendor outfits and drops, and test cheats are each separate modules that can be switched off at build time, through CMake options such as the network menu, local co-op, and co-op spawn location. That separation matters for preservation: a reader who wants the original behavior can build without the additions, and a player who wants the enhanced version can build with them. It also keeps the additions from contaminating the accuracy work on the base game.
The build pipeline and the 200 lost values
The pipeline is documented as a set of directories rather than a black box. IDA scripts live in tools/ida, and two generators, draft_fix.py and draft_data.py, turn the disassembler's output into something that compiles. A db folder holds recovered knowledge: function and global names, types, enums and per-function prototype fixes. The draft directories contain headers for generated code and the platform glue, while the port directory holds the hand-written OpenGL renderer, the SDL audio mixer, the network link and the optional modules. The engine core is being hand-rewritten in C++ under src, with tests, though the README is explicit that this is not yet what the game builds from.
The known limitation is stated with a number: around 200 functions still carry values the decompiler lost, so gameplay bugs remain. That is the honest boundary of a decompilation that aims at a working game rather than a byte-identical executable. The README says the goal is a working game, not a matching binary, which changes the standard. A matching project has to reproduce every instruction; this one has to reproduce behavior, and a lost constant can be reconstructed by observing what the game does, then verified by playing.
Building is more involved than a typical CMake project because the target is 32 bit. On Linux it needs clang 14 or newer, CMake 3.20, Ninja, Python 3, gcc-multilib and the i386 SDL2 and OpenGL runtime libraries. The Windows build on Windows uses LLVM, CMake, Ninja and the Visual Studio C++ tools for the libraries, and the Windows build on Linux needs lld-link, llvm-dlltool, llvm-readobj, llvm-objcopy and a Windows SDK fetched with xwin. A GitHub Actions workflow builds the Linux program, the Windows program and the lobby server on every push, and the artifacts contain no game data, so you still have to supply your own ILB.gbp.
Project card
| Item | Detail |
|---|---|
| Repository | SourceCodeDeleted/We_Lurk_below_Mod on GitHub |
| Game | It Lurks Below, GOG build of January 9, 2022, 32 bit |
| Goal | A working game, not a byte-identical executable |
| Platforms | Linux and Windows, SDL2 and OpenGL 3.3 in place of Direct3D 11 and FMOD |
| Audio | Hand-written SDL mixer, Ogg Vorbis through stb_vorbis |
| Online play | Lobby and relay server in Rust with no dependencies, record and replay testing |
| Known limits | 32 bit only, about 200 functions with lost values, Windows build less tested |
| Data | No game data included, ILB.gbp required from an owned copy |
| Created | October 11, 2026 |
| Scale | 1 star, 1 fork, 1 contributor, newest commit October 24, 2026 |
FAQ
Is this the same project covered on October 26?
Yes. This is a follow-up on the same decompilation, focused on its source layout, networking and build process.
Does it include the game?
No. It ships no game data, and you need ILB.gbp from a copy you own on GOG or Steam.
Is it a byte-identical decompilation?
No. The stated goal is a working game, and about 200 functions still carry values the decompiler lost.
How does online co-op work?
A small Rust lobby and relay server connects players, while each machine runs its own copy of the world. There are no external Rust dependencies.
Can Linux and Windows players play together?
Yes, for the same version. The project verified it by replaying a recorded session on both builds.
What do I need to build it?
A 32 bit toolchain, CMake, Ninja, Python 3 and SDL2 plus OpenGL development libraries, with extra LLVM tools and a Windows SDK for the Windows build.
Bottom Line
What makes this port worth a second look is not the co-op feature but the discipline behind it. Record and replay testing, a dependency-free relay server, optional modules that can be switched off, and a database of recovered names and types are the habits of a project that expects to keep going. The 200 lost values and the 32 bit requirement are real limits, and the one star suggests almost nobody has found it yet. If you own It Lurks Below and want to play it natively on Linux, this is the most complete route available, and the source tree is a useful model for anyone attempting a similar port.
Sources
- GitHub SourceCodeDeleted/We_Lurk_below_Mod README, state, layout, build instructions and options, accessed October 29, 2026
- GitHub API metadata and commit history for the repository, stars, forks, creation date and October 24 commits, accessed October 29, 2026
- Indie Kings coverage of the project from October 26, 2026, used for the disclosure note and cross-checked against the current README
Related: Cubyz: Zig Voxel Sandbox Rebuilt From Java With 3.7k Stars | RecompStore: A Homebrew App Store for Jailbroken PS5 Recomps