You are viewing a potentially older version of this package. View all versions.
Lakisa-WKMapLoader-1.2.0 icon

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-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305

README

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 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 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.2.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.

CHANGELOG

Changelog

1.2.0

  • map <name> action: load another map (hub maps with a doorway per level). A map whose .txt has a line hidden gets no menu card
  • sign <text>: writes the text on both faces of a flat mesh
  • launch <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 object redpad). Console: presets, setpreset, removepreset. In the console tags are split with /; quoted text (msg 'a/b') isn't split. Saved in BepInEx/config/WKMapLoader.presets.txt; a map can ship its own <map>_presets.txt
  • Triggers + actions instead of single-purpose names: button / pad / zone / start run any of give <item or trinket> [n], bind / unbind (kept through clear), 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 / description float above an object while you look at it
  • msg text 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 line title: <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 / _cyl only show on that map; _cyl parts spin around their lane's ..._cyl_body_laneN axis (one turn per 15 s)
  • prop:<GameMesh> objects: use the game's own meshes (board, buttons) in your map
  • handhold_pass: grabbable holds your body walks through
  • godmode marker object: no dying in that map
  • Button items can be several words: checkpoint_3_rebar_explosive gives 3 explosive rebars
  • Win sequence flying 30% slower (4.2x)
  • Blast logger (boomreport, boom_log.csv) and boomcourse, 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, winseq console 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.