WKMapLoader
Make White Knuckle maps in Blender (.glb). CUSTOM menu tab, grabbable ledges, handholds, and tag-driven buttons, pads, zones, timers and checkpoints, with your own tag presets.
By Lakisa
| Date uploaded | 17 hours ago |
| Version | 1.2.0 |
| Download link | Lakisa-WKMapLoader-1.2.0.zip |
| Downloads | 64 |
| Dependency string | Lakisa-WKMapLoader-1.2.0 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305README
WK Map Loader
Make your own White Knuckle maps in Blender and play them in the game.
- CUSTOM tab in the play menu, one card per map
- Climbing like the real game: top edges are grabbable, handholds anywhere
- Buttons, pads and zones that give items, set checkpoints, teleport, time runs and more. No code
- No rising mass, thin fog, falling sends you back to your checkpoint
Playing: install a map pack, then Play → CUSTOM.
Make a map
- Model it in Blender (1 unit = 1 m).
- Tag objects (below). No tag = solid block with grabbable top edges.
- Add an empty named
spawn. - File → Export → glTF 2.0, format .glb, into
BepInEx/plugins/WKMapLoader/maps/. - Play it from CUSTOM. F8 reloads after each export.
maps/example.glb is a finished example: import it into Blender to see how it's tagged.
Tags
Tags go in Blender and are part of the map. Console commands are typed in game and are only for you while testing.
Put tags in the object's name, separated by ;:
button; clear; give rebar 3; msg Ready!
Or keep the name free: parent empties to the object and name the empties after the tags. Empties on their own are places (spawn, lights, points).
<value> = required, [value] = optional. Text can go in quotes: msg 'Floor 1/2; go'.
Surfaces
| Tag | Does | Example |
|---|---|---|
| (none) | Solid, top edges grabbable | Floor |
smooth |
Solid, nothing grabbable | smooth |
handhold |
Grabbable all over | handhold |
pass |
With handhold: grab it, walk through it |
handhold; pass |
deco |
Visible, no collision | deco |
invisible |
Solid, not drawn | invisible |
enemywall |
Invisible glass: stops you and denizens, shots fly through | enemywall |
Places & settings
| Tag | Does | Example |
|---|---|---|
spawn |
Start point, facing Blender's +Y | spawn |
exit |
End point (optional) | exit |
point <name> |
Target for teleport |
point top |
light [range] [hex] |
Invisible light here (default 12 m) | light 20 ffcc88 |
lamp [range] [hex] |
Light shining from a visible mesh | lamp 8 |
note <name> |
Floor note, text from <map>_<name>.txt |
note intro |
godmode |
Can't die in this map | godmode |
fog <0-1> |
Fog strength (default 0.25) | fog 0 |
Triggers
| Tag | Runs its actions when you... | Example |
|---|---|---|
button |
Press the mesh | button; give flare 2 |
pad |
Stand on top of it | pad; checkpoint |
zone |
Walk into it (invisible; add deco to show it) |
zone; timer start |
start |
Start the map or fall back to spawn | button; clear; give rebar 3; start |
Actions
| Tag | Does | Example |
|---|---|---|
give <item> [n] |
Item or trinket, part of the name is enough | give rebar 3 |
bind <item> [n] |
Give it and keep it through clear |
bind buddy |
unbind <item> |
Stop keeping it, take it away | unbind buddy |
clear |
Empty the inventory (runs first) | clear |
checkpoint |
Respawn here after a fall | pad; checkpoint |
teleport [point] |
To a point, spawn, or last checkpoint |
teleport top |
launch <m> |
Spring: throws you m metres up | pad; launch 10 |
msg <text> |
Big text on screen | msg Time {timer} |
perk <name> [s] |
Perk, no time = until you leave | perk velocity 10 |
effect <name> [s] |
Effect, no time = until you leave | effect sticky_hands 10 |
timer start/stop/reset |
Speedrun timer, stop saves best |
zone; timer stop |
set <var> <value> |
Set a value | set floor 2 |
add <var> [n] |
Add to a counter | add presses |
map <name> |
Load another map | pad; map level_2 |
win |
Fireworks, then the win screen | button; win |
| Effect | Does |
|---|---|
refill |
Full stamina |
infi_stamina [s] |
Stamina stays full |
sticky_hands [s] |
Grab any surface |
temp_jump <n> |
n extra air jumps |
jump_boost [s] |
Higher jumps |
| game buff id | That game buff |
In msg text: {timer} {best} {falls} {map}, or any counter: button; add presses; msg Pressed {presses} times.
Labels
| Tag | Does | Example |
|---|---|---|
name <text> |
Bold name above it when you look at it | name Rebar Station |
description <text> |
Small line under the name | description Gives 3 rebars |
sign <text> |
Text written on a flat mesh | sign Shooting Range |
Presets
Save a tag combo under a short name, then name objects after it. In the console use / between tags (the console uses ; itself):
setpreset rebarbtn button / clear / give rebar 3 / start
An object named rebarbtn now gets all four tags. Saved in BepInEx/config/WKMapLoader.presets.txt. When sharing a map, put its presets in <map>_presets.txt next to it.
Console commands
| Command | Does |
|---|---|
maps |
List map files |
loadmap <name> |
Load a map now |
| F8 | Reload the current map |
F9 / mapspawn |
Back to spawn |
mapinfo |
What loaded, and unknown tags (typos) |
mapfog <0-1> |
Fog, for testing |
dumptextures |
Save game textures, to pick wk_ materials |
presets |
List presets |
setpreset <name> <tag / tag> |
Make or change a preset |
removepreset <name> |
Delete a preset |
Materials & sharing
- A material's Base Color tints the blockout texture. Name it
wk_<game material>to use a game texture. - Share a map as a Thunderstore package: a
mapsfolder with your.glb, plus optional<map>.png(card image),<map>.txt(first linetitle: My Map) and<map>_presets.txt. AddLakisa-WKMapLoader-1.2.0as a dependency. - Map packs can add their own tags with a small plugin through
WKMapLoader.MapApi, like Laki's Play Room.
Notes
- Old
.objmaps still load. - Achievements and leaderboards are off in custom maps.
- Built for White Knuckle 0.61. Report issues and I'll update it.
CHANGELOG
Changelog
1.2.0
map <name>action: load another map (hub maps with a doorway per level). A map whose.txthas a linehiddengets no menu cardsign <text>: writes the text on both faces of a flat meshlaunch <metres>action: a spring, throws you straight up that high (pad; launch 10)enemywall: invisible glass that stops you and denizens but lets shots, flares and thrown things through
1.1.0
- Maps are now .glb (Blender: File > Export > glTF 2.0). Old .obj maps still load
- Tags: as many as you like per object, separated by
;, either in the object's name (button; give rebar 3; checkpoint) or on empties parented to it (keeps the name free). Rotation and scale now count - Presets: your own shortcut names for a set of tags (
setpreset redpad pad / checkpoint, then name an objectredpad). Console:presets,setpreset,removepreset. In the console tags are split with/; quoted text (msg 'a/b') isn't split. Saved inBepInEx/config/WKMapLoader.presets.txt; a map can ship its own<map>_presets.txt - Triggers + actions instead of single-purpose names:
button/pad/zone/startrun any ofgive <item or trinket> [n],bind/unbind(kept throughclear),clear,checkpoint,teleport [point],msg,perk <name> [s],effect refill / infi_stamina / sticky_hands / temp_jump / jump_boost / <buff>,timer start/stop/reset,set/add,win - Labels:
name/descriptionfloat above an object while you look at it msgtext shows live values:{timer},{best},{falls}, your own variables- Map settings as tags:
godmode,fog <0-1>; places:point <name>,light [range] [colour], Blender lights - Plugin API (
WKMapLoader.MapApi): map packs can add their own tags, actions and console commands - New console command
mapinfo(what the last load found, unknown tags) - Removed from the loader: the glow-wall game, button stands, arrow keys and monitors (now in Laki's Play Room), and the measuring tools (
jumpstats,rebarcourse,boomcourse,boomreport,boomclear,mapmat,winseq) are off unless Dev / DevTools = true in the BepInEx config
1.0.5
- Card title from the map's
.txt: first linetitle: <name>(otherwise the file name)
1.0.4
- Glow-wall game: computer (tutorial board as monitor with a black screen and GAME / POWER-UPS tabs, crane arrow keys); single player or multiplayer (Comp: a wall each or one shared wall with a colour per player, Co-op: one wall, team score); btn lifespan, light-up interval, duration; the game's button stand starts a wall (3-2-1-GO, invisible wall drops; same light-up order for the same settings); floating power-ups (stamina, speed, air jumps, elastic limbs, grab anything); game-over stats
- Glow maps: parts tagged
_flat/_cylonly show on that map;_cylparts spin around their lane's..._cyl_body_laneNaxis (one turn per 15 s) prop:<GameMesh>objects: use the game's own meshes (board, buttons) in your maphandhold_pass: grabbable holds your body walks throughgodmodemarker object: no dying in that map- Button items can be several words:
checkpoint_3_rebar_explosivegives 3 explosive rebars - Win sequence flying 30% slower (4.2x)
- Blast logger (
boomreport,boom_log.csv) andboomcourse, which sizes the Boom Course from your attempts with leeway
1.0.3
- Fix: maps from map packs installed with the Thunderstore mod manager now show up in CUSTOM
- Win sequence: much faster flying,
winseqconsole command
1.0.2
- New map parts: buddy button, save pads, floor notes, win sequence buttons (
win/*win_seq*: title, noclip, 5x speed, flare machine gun, game win screen after 10 s)
1.0.1
- Fixed broken arrow characters on the README page.
1.0.0
- First release: .obj map loading, CUSTOM menu tab with map cards, ledges, handholds, lights, materials, checkpoints, fall reset, map fog control, rebar course generator.