Speedrun timer plugin for Deadlock using the Deadworks managed plugin system.
Early Development Build -- This plugin is under active development and is constantly being updated. Expect breaking changes, bugs, and incomplete features. Use at your own risk.
- Deadlock (Steam)
- Deadworks installed and configured in your Deadlock game directory
- .NET 10 SDK for building from source
-
Clone this repository:
git clone https://github.com/Oskar-Sterner/lock-timer.git cd lock-timer -
Set the
DEADLOCK_GAME_DIRenvironment variable to your Deadlock installation path:# PowerShell $env:DEADLOCK_GAME_DIR = "F:\SteamLibrary\steamapps\common\Deadlock"
Or pass it directly to the build:
dotnet build -p:DeadlockDir="F:\SteamLibrary\steamapps\common\Deadlock"
-
Build the plugin. It will auto-deploy to the Deadworks plugins directory:
dotnet build -
Start
deadworks.exeand launch Deadlock.
- Build the project and copy
LockTimer.dllto:<Deadlock>/game/bin/win64/managed/plugins/ - Copy the SQLite dependencies to the same plugins directory:
Microsoft.Data.Sqlite.dllSQLitePCLRaw.core.dllSQLitePCLRaw.provider.e_sqlite3.dllSQLitePCLRaw.batteries_v2.dll
- Copy the native SQLite library to the process directory (not plugins):
<Deadlock>/game/bin/win64/e_sqlite3.dll
All commands use the / prefix in game chat.
| Command | Description |
|---|---|
/start |
Begin placing the start zone. Aim at one corner and shoot to lock it; a wireframe preview then follows your crosshair — aim at the opposite corner and shoot again to finish the zone. |
/end |
Begin placing the end zone. Same aim-and-shoot workflow as /start. |
/cancel |
Cancel an in-progress zone placement. |
/savezones |
Persist the placed start and end zones for the current map. |
/delzones |
Delete saved zones for the current map. |
/zones |
Show pending zone status and re-render saved outlines. |
/pb |
Show your personal best on the current map. |
/top |
Show the top 10 times on the current map. |
/reset |
Reset your current in-progress run. |
-
Set up zones: Type
/startin chat — a yellow cursor dot appears where your crosshair is pointing. Shoot to lock corner 1. A wireframe box preview now follows your aim; aim at the opposite corner of the desired zone and shoot again to lock corner 2. Repeat with/endfor the finish zone, then run/savezonesto persist both. Use/cancelif you mis-clicked and want to abort the in-progress placement. -
Run: Walk into the start zone (green outline). When you leave it, the timer starts. When you enter the end zone (red outline), the timer stops and your time is recorded.
-
Zone visualization: Zones are rendered as colored block outlines in the game world. Green = start zone, red = end zone. The outlines appear automatically when a player connects.
-
Records: Personal bests are stored per Steam ID and map in a local SQLite database. Times persist across server restarts.
SQLite database stored at <Deadlock>/game/bin/win64/LockTimer/locktimer.db. Contains:
- zones -- Zone boundaries per map (start/end bounding boxes)
- records -- Personal best times per player per map
MIT
