White Knuckle
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
yesterday
Downloads
392
Size
121KB

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

  1. Model it in Blender (1 unit = 1 m).
  2. Tag objects (below). No tag = solid block with grabbable top edges.
  3. Add an empty named spawn.
  4. File → Export → glTF 2.0, format .glb, into BepInEx/plugins/WKMapLoader/maps/.
  5. Play it from CUSTOM. F8 reloads after each export.

maps/example.glb has one of every tag, in labelled rows (surfaces, places, triggers, items, movement, effects, text) plus a short timed course. Play it from CUSTOM and look at any object to see its tags, or import it into Blender to see how it's built.

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
ambient <amount> Base light everywhere, no lamps needed ambient 0.3

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 (add several for more lines) 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
mapambient <amount> Ambient light, 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 maps folder with your .glb, plus optional <map>.png (card image), <map>.txt (first line title: My Map) and <map>_presets.txt. Add Lakisa-WKMapLoader-1.3.0 as a dependency.
  • Map packs can add their own tags with a small plugin through WKMapLoader.MapApi, like Laki's Play Room.

Notes

  • Old .obj maps still load.
  • Achievements and leaderboards are off in custom maps.
  • Built for White Knuckle 0.61. Report issues and I'll update it.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.