spillz00 on 21/8/2026 at 17:21
Hi all,
Long time Thief fan, first time taffing on TTLG. I've been admiring a bunch of the community work and thought I would put my own hand in.
In particular, TTLG user jdv's very impressive (
https://www.ttlg.com/forums/showthread.php?t=153336) C++ Thief Engine called Darkness has inspired me to create a TypeScript fork with a slightly different goal of reproducing a web-based mission viewer that can also allow the user to play the missions with reasonable fidelity on a wide range of systems (PCs, phones, handhelds) and targets (web app, desktop app, android etc). When complete, the mission viewer will expose all of the mission data in fine detail opening up the possibility of level editing, debugging tools, and similar applications. The goal will be for the game player to offer a sufficiently close facsimile of the retail game engine, although it is likely impossible to mimic all aspects of the Dark Engine precisely.
If you would like to test out the heavily vibe-coded prototype, it is available here: (
https://spillz.github.io/darkness/)
The current version has already advanced well beyond this and but isn't ready for sharing yet. When it is, it will feature a much cleaner interface, better mission inspection tools, and sufficiently completed game simulation system work to allow completing missions. The prototype is a decent tech demo demonstrating that browser-based rendering of Thief missions is viable. No promises on the timeline, but I'm targeting a soft release by December.
VIDEO DEMOQuick demo of prototype viewer as of late August 2026. Still a few bugs with timing of mission events and some audio/video glitches in this one.
[video=youtube;Q2_9G6jF0j4]https://www.youtube.com/watch?v=Q2_9G6jF0j4[/video]
INSTRUCTIONS1. You will need a copy of Thief Gold or Thief 2 and a Chromium-derived browser that supports directory sharing.
2. Copy your Thief install out of Program Files to somewhere like C:\Games, otherwise the browser will tell you it doesn't have permission to read that folder,
3. Open the web link in your browser and the app should start (you will see a "Web Darkness Importer" title)
4. click "Open Game Folder" button and browse to the place you put your Thief install.
5. The browser should prompt you to approve that you want to share that folder with the webapp and, once you approve, it will scan all of the missions in the game and load the first mission.
6. Once complete you should see a mission selector in the top right allowing your to inspect other missions. I've been able to inspect the regular missions that shipped with the game and the Black Parade missions.
7. After the mission loads, the game is in Viewer mode. The camera starts in orbit mode and you can click and move the mouse to swing the camera around the orbit point, use WASD, shift and space to move the orbital point, mouse wheel to zoom in/out. If you click the orbit button, you can flip to a first person camera view with mouse to look and WASD and shift+space to move. Click the "object text" button to see the identity of objects in the world. In view mode, items are placed at their spawn point but nothing is interactive. The left panel contains a lot more controls and an inspector panel that you can use to inspect data on individual objects and other world data.
8. Click the play button to start playing a mission in Play mode. A full game simulation will run with basic physics, NPCs patrolling and conversing, particle effects active, ambient audio and so on. The Play mode supports basic mouse+keyboard, gamepad, and touch controls.
Important Clarification: Even thought this is a webapp, it runs entirely client side in your browser. Nothing is uploaded to a server, no cookies are set, your privacy is not invaded! Eventually there will be local storage use to preserve settings, saves etc.
TECHNICALThis project is written entirely in TypeScript and currently uses the Three.js library to render the world. In the future, I may include some WASM extensions for performance reasons.
The code will eventually be made open source, but I'm keeping development code closed until the core project goals are close to complete. It should be relatively straightforward to convert the codebase to other languages. The codebase is currently around 45K lines of code and I expect it to grow by at least another 15K to get all Thief Gold missions fully implemented.
The current project goals are:
1. expose the entirety of the mission data, including mesh data, objects, guards, and scripting as well as the common data that all missions share in a readable web interface. The importer will be robust to badly formed data, missing resources etc., at least showing what can be recovered.
2. produce a runtime simulation engine that will cover all of the essentials like mission objectives, player, physics, AI, light and audio systems that can be run on any device capable of running a web browser. Target frame rate is at least 60 fps on all modern devices, including mobile.
3. produce offline binary builds for common target operating systems like Linux, Windows, Mac, and Android. You will still need a retail copy of the game to point the engine at.
Other goals may be added over time.
AI coding tools will continue to be used. The project would not be feasible without them, but readable code will be a priority (partly why I chose TypeScript over C++, ha :joke:).
spillz00 on 29/8/2026 at 21:22
Quote Posted by downwinder
can i please see a small video of gameplay/etc
i got d's when i was in school so all this code talk is way above me, i would just like to see a video of where it is at and what can be done with in it, as in objectives/npc's/etc
I added a video. No narration because I don't have a good mic setup where I am currently.
In terms of what is the point:
1. Run on other devices besides windows PC. Mac, Linux, mobile phone, tablets, handhelds. Anything that can run a browser.
2. Once I publish the sources, anyone in the community will be able to make mods that affect gameplay and rendering at a much deeper level than is possible with the closed-source binaries available today.
3. It should be possible to translate the reference TypeScript source to lower-level languages like C or C++ for those who want additional performance. The goal of the typescript engine is to run efficiently on older hardware but not necessarily with the best-possible performance.