Example apps
Every app REDnode ships or was tested with, 42 in all, each running live on its page. Read the code beside the result, copy it with one click, and change it into your own.
Overlay apps are web pages drawn over the game: HTML, CSS and the REDnode UI kit.
HUD widgets are overlay apps that sit on the HUD and never take input.
Node mods run in Node beside the game, and build windows with the ui builder.
The previews run each app's real code. The game is simulated on this page: V walks about, and the buttons under each preview load a save, open a menu or switch F10 modes, so you can see how an app reacts.
Start here
Small, complete examples of each kind of package.
ui.window ui.text ui.button ui.toggle node.set
UI kitOverlay app
Every control in the REDnode UI kit on one page: buttons, toggles, sliders, inputs, progress bars, lists, menus, tabs, tooltips and notifications.
rn-window rn-tabs rn-button rn-toggle rn-slider
Coords HUDHUD widget
A HUD widget: V's coordinates in a strip at the top of the screen, read from a web page with the rednode package.
kind: "hud" import map game.player.position
Test timerNode mod
The Test timer: a stopwatch whose marks go to the Mod log with the time, used to match log lines to test steps.
ui.heading ui.row ui.input onSubmit props.value
Overlay apps
Web pages drawn over the game: the UI kit, custom shapes, input and window layers.
theme="hud" rn-menu data-rednode-drag RednodeUI.notify
SignalOverlay app
A round widget drawn with SVG: a ring that sweeps once a minute, a clock, and a Ping button that times a call to the game.
SVG window.rednode.call window.rednode.on click-through
Proof-of-concept demoOverlay app
The overlay's proof of concept: live drawing, input, calls to the game and events from it, each in a tile.
requestAnimationFrame window.rednode.call window.rednode.state window.rednode.on
Game stateOverlay app
A table of what the game is doing: menu, photo mode, scene and its tier, main menu, whether V is in the world, with a short log of changes.
ui-state event window.rednode.on
PerfOverlay app
REDnode's cost each second: the game's frame rate, the overlay's CPU and GPU time per frame, and the host's memory.
perf event window.rednode.on
Task ManagerOverlay app
Every running package and what it costs: CPU, memory, its thread's load and heap, game calls and service calls. End task stops one that misbehaves; Restart starts it again.
"admin" permission window.rednode.tasks admin.tasks admin.endTask "front" permission
Tools ManagerOverlay app
Every tool an AI assistant can see through REDnode: REDnode's own and each mod's, what each does, whether it asks first, and a switch to take any of them away from every assistant.
"admin" permission window.rednode.tools admin.tools admin.setTool
HUD widgets
Pages that sit on the HUD, never take input, and hide with the game's menus.
bind format ink.bar of ink.row align
Ink CoordsNode mod
V's position on the HUD, drawn by the game itself with the ink API instead of in the overlay, in the game's own look. Needs Codeware.
ink.mount ink.column ink.text style node.set
VitalsHUD widget
A HUD widget with V's health, level and money, read through the generic game API from a web page.
kind: "hud" api.GetPlayer api.GameInstance api.$call
Node mods
Mods that run in Node, outside the game, with or without a window.
console.log game.player.position game.on game.onState
Crash modNode mod
Four ways for a mod to fail: a thrown error, an endless loop, process.exit and a killed process. Other mods keep running.
crash handling restart not responding
Counter serviceNode mod
A service with no window: other packages read and change its count through REDnode's mod services.
service file service.emit service.caller service.signal JSDoc
Counter panelNode mod
Calls Counter service through REDnode's mod services, hears its events, and tries a timeout, Stop, an error and an unknown function.
service.connect $on $with requires
Live log modNode mod
A Node mod window built around a scrolling list: a live log that keeps its newest lines.
ui.list list.push list.clear game.onState
Game APIs
The game API, TweakDB, the world, sounds, REDbridge and REDagent.
agent.ask onText AbortController "agent" permission
Game API modNode mod
V's health, level and money read through the generic game API, eddies given with TransactionSystem, and what happens to old references after a load.
api.GetPlayer api.GameInstance api.$call api.MarketSystem game.instance
TweakDB testNode mod
Read any TweakDB record, its flats and a method, list every vehicle, and change or clone records through TweakXL.
tweakdb.type tweakdb.flat tweakdb.record tweakdb.records tweakdb.id
Quest testNode mod
Read, watch and set quest facts, read and track journal entries, and move V back to a kept spot: the calls for testing a quest in the running game.
quests.facts quests.watch quests.setFact journal.entry journal.tracked
World testNode mod
Spawn an entity in front of V with a mesh component built by api.$new, move it in a circle as fast as the game allows, and remove it.
world.spawn world.move world.remove world.on api.$new
Sound testNode mod
Play the package's own OGG, WAV, FLAC and MP3 files: music on a loop, effects, a voice, with pan, delay, pitch and fades.
audio.play sound.set sound.stop sound.ended audio.playing
Packaging testNode mod
A manifest that requires other mods (Codeware, ArchiveXL, REDbridge and one that does not exist), and REDbridge reading the game's archives.
requires kernel.requirements kernel.bridge "bridge" permission
Hot swapOverlay app
Swap an archive into the running game, sound mods included: type its name or path, press Swap, and swap it again from the list next time you build it.
archives.reload "archives" permission requires kernel.requirements localStorage in an app
Sound TracerOverlay app
The game's sounds, live: every event it posts to its audio engine and every sound it loads, each with a button to play it again.
audio.trace audio.event audio.playGame a window that never scrolls
Sound SearchOverlay app
Search the game's sound events by name, tag, event id or sound id, play any of their recordings, and keep what you find in a Scratch tab.
audio.searchSounds audio.playGame audio.event ui.copy localStorage in an app
Tests and tools
What REDnode's own phases were tested with. Useful to read, rarely to copy.
t() locales/<language>.json LocKey# key game.language
Ink listNode mod
A list of contracts on the HUD built from data with ink.list, with buttons that add, remove, move and rename items, and a header rebuilt with mount.update.
ink.list list.set({ items }) mount.update keys
Ink stylesNode mod
A gallery of the ink API's layout and look words on the HUD: every text style and tone, the plain and the game look, align, grow, gap, pad and icons, with buttons that change them live.
ink.text style tone look align grow
Layers testOverlay app
A page covering the whole screen that takes the mouse everywhere, and solo mode, which hides every other package.
ui.solo ui.onSolo "solo" permission
Pointer lock testOverlay app
A camera turned by raw mouse movement while the right button is held, with the web's Pointer Lock API.
requestPointerLock movementX pointerlockchange
StressOverlay app
The worst case for the overlay: a large canvas where every pixel changes every frame.
canvas requestAnimationFrame
Ink testNode mod
The spike of the ink API: reach the game's own UI, add widgets to it, hear clicks, time changes, open a game screen and read a screen's widget tree.
api.$static api.$new inkCompoundWidget.AddChild RegisterToCallback StartHubMenuEvent
Roles testNode mod
Finds a service by its role with use("counter"), plays a sound it writes into its data folder, and hides a key typed into a password field.
use provides audio.play from pkg.dataDir ui.input password
Keys testNode mod
Reads one of the player's shared keys with secrets.shared, asks for it with secrets.askShared, and moves a key the package kept itself into the shared store.
secrets.shared secrets.askShared keys:<service> permission
Frame testOverlay app
Two sandboxed frames, which Chromium runs in processes of their own, one scaled to 0.8 with a frame inside it. Each has a button, a hover box, a text field, a slider and a wheel counter, and reports every event to the window's log.
iframe sandbox postMessage
Fill testOverlay app
A see-through page that covers the whole game view at any aspect ratio, with "fill": "screen": a frame on its four edges, its size in the middle, and a panel kept at the right edge.
"fill": "screen" innerWidth resize event
World objects testNode mod
Spawn a person and a prop, list what is near V with the files each uses, load an EDGEbuilder scene around V, and swap an archive to see what its refresh does to the world.
world.spawn world.move world.near world.files world.load
Refresh testNode mod
Swap an archive, then try each way the game offers to load again what is already in the world: V's clothes, the inventory's preview of V, what V looks at, a spawned object.
archives.reload api.GameInstance TransactionSystem tweakdb.records TargetingSystem
No example matches.