Not out yet
Not out yet. In the development build; not in the 0.6.0 download.
Hard Hoof Studio is a desktop program, outside Minecraft, for writing the Volt programs that run inside it. It runs the real Hard Hoof OS kernel and ROM, the same Java and Volt the mod ships, so a program that works in Studio's simulator is meant to work in the game. It can also log into computers in a Minecraft world by their Inter-Dimensional Address (see The web & remote access).
Studio is not a mod and is not in the pack. It lives in the project's HardHoof_Studio folder and is built from source.
Nothing about it has been tested in game yet.
Launch it
| How | Command |
|---|---|
| Easiest on Windows |
.\scripts\studio.ps1 [folder] builds if the sources are newer, then opens the window |
| Add shortcuts |
.\scripts\studio.ps1 -Shortcut adds "Hard Hoof Studio" to the Start menu and the desktop |
| Skip the build | .\scripts\studio.ps1 -NoBuild |
| From Gradle | .\gradlew.bat :HardHoof_Studio:run |
| One jar |
.\gradlew.bat :HardHoof_Studio:fatJar, then java -jar the jar in HardHoof_Studio\build\libs
|
| Compiler only |
voltc, or .\scripts\voltc.ps1 check file.volt
|
Studio opens as an app window (Edge or Chrome in app mode, with its own profile). A second start opens another window on the running Studio, and it exits a few seconds after its last window closes. The first build downloads the editor and fonts once; later builds work offline.
First working example
- Launch Studio and create a project from a template: blank, factory controller, device app, network service or microcontroller chip.
- Open the project's
main.voltand replace its contents with:
// @attach assembler
let asm = dev.find("assembler")
print(dev.call(asm, "find", "pickaxe"))
- Press F5 (Run in Simulator). Studio adds a simulated Assembler to a simulated computer and runs the file there.
The // @attach line says which devices the program expects. The same file runs unchanged in game, where the real
Assembler on the computer's cables answers instead.
The editor
- Live errors and lint warnings from the real Volt compiler.
- Completion for every OS call with its signature and docs, string, list and map methods, your own locals, imported
library exports, and device operations after
dev.call(h, ". - Hover docs, signature help, go to definition, find references, rename, outline, formatting.
- A bytecode view of what the compiler made.
- The Horn is the command palette: Ctrl+Shift+P (or F1). Ctrl+P opens a file by name.
Directives
Comments at the top of a file tell Studio about the program:
| Directive | Meaning |
|---|---|
// @attach kind [as "Label"] [xN] |
Devices the program expects. The simulator adds any that are missing. |
// @machine terminal, chassis, router or microcontroller
|
Checks the file for that machine |
// @app Name | icon |
The header that makes a file a desktop app |
A project is a folder of .volt files with an optional studio.json (name, target machine, deploy folder, attached
devices).
The simulator
Machines running the real kernel and ROM, on one thread. Set the speed to pause, 1x, 4x, 20x or max, or step a tick at a time. A tick means the same at any speed.
- Test versions of every device kind: controllers, assembler, furnaces, battery, pump, boiler and turbine on a wire that conserves energy, research, lab, printer, zone, reactor, pressure and water. Fill a store or set the energy by hand and watch the board show each device's live state.
- The desktop is drawn exactly as in game, with the same font and icons, and takes keyboard and mouse. Open a simulated Terminal and use the real apps.
- The Internet Dish is simulated too: a demo site at
https://demo.hoof.test/, or with "real web" switched on, the real web through the game's own safe fetcher. So the Browser app works in the simulator. - Studio trusts the person at the keyboard: the simulator never asks for a login.
Remote machines
- In the game, stand at a computer and run
remote pairto get a code in your chat. - In Studio, Connect: give the server address and the code. Studio keeps a token.
- Pick a computer from the list, or open one by its IDA.
You get a console, the computer's files as a second tree, its devices (with every operation listed), and Deploy and Run. Completion then knows the devices on the machine you are connected to. Studio checks that a deploy fits the machine's free memory or drive before sending.
The computer decides who gets in: remoted asks for a login by default. See The web & remote
access for access modes, tokens and the server fingerprint.
voltc
The compiler from a terminal, with the same checks as the editor.
| Command | Does |
|---|---|
voltc check <files> |
Errors and lint; exits 1 on errors |
voltc build <dir> |
Checks a project and writes build/install.volt
|
voltc run <file> [--attach kind]... |
Runs on a simulated machine and prints its terminal |
voltc disasm <file> |
Bytecode |
voltc fmt [--check] <files> |
Formats |
install.volt is one Volt program holding the project's files. Put it on a disk and run install.volt
on a computer: it writes the files into the deploy folder (default /home/<project name>) and says how to start the
program. A big project splits into install.volt, install-2.volt and so on.
Themes
Eighteen: Horn (the default), Hide (light), Paper, Phosphor, Amber, Blueprint, Alpine, Synth and Contrast like the in-game themes, plus Midnight, Dracula, Nord, Solarized Dark and Light, Gruvbox, One Dark, Monokai and GitHub Light. Each themes the whole window and the editor. Fonts and sizes are in Settings.
Limits
- The simulator's test devices are models. Where a real machine differs, trust the game.
- Studio listens only on your own machine and needs a per-run token; it does not open files outside your project.
- Windows is the documented platform: the launch script is PowerShell.