OverlyMassive Engine — Duktape Scripting Extension for VS Code
Provides IntelliSense (autocompletion, parameter hints, hover documentation)
and code snippets for JavaScript scripts running in the OverlyMassive engine's
Duktape runtime.
Features
- Full IntelliSense for every engine-exposed global function and constant
(entity management, transform, camera, input, physics, weather, audio,
NoesisGUI, networking, persistence, cloth, terrain deformation, WaveWorks,
portals, spawn points, and animation blending).
- Hover documentation with parameter descriptions and return types.
- Code snippets (
om-script, om-controller, om-fps-move, etc.) for
common scripting patterns.
- One-command setup — run OverlyMassive: Initialize Script IntelliSense
from the Command Palette to configure your project.
Getting Started
Install from VSIX
cd tools/vscode-overly-massive
npm install
npm run compile
npx @vscode/vsce package
code --install-extension overly-massive-scripting-1.0.0.vsix
Set Up a Project
- Open your game project in VS Code.
- Run Ctrl+Shift+P → OverlyMassive: Initialize Script IntelliSense.
- The extension copies
overly-massive.d.ts into your scripts/ directory
and creates a jsconfig.json so the TypeScript language service picks up
the engine types automatically.
Configuration
| Setting |
Default |
Description |
overlyMassive.scriptsDirectory |
scripts |
Relative path to the project scripts directory. |
Snippets
| Prefix |
Description |
om-script |
Minimal script with init() + update() |
om-controller |
Controller with game-state machine |
om-fps-move |
First-person WASD + mouse movement |
om-spawn-player |
Spawn the player at project spawn position |
om-portal |
Create and configure a portal |
om-weather |
Set a weather preset |
om-noesis-view |
Load and show a Noesis XAML view |
om-db |
Database save / load |
om-contacts |
Process physics contact events |
om-net-server |
Start a network server |
om-deform |
Terrain deformation |
om-cloth |
Cloth setup |
om-blend-anim |
Animation blend layer |
Architecture
The extension ships a TypeScript declaration file (types/overly-massive.d.ts)
generated from the engine's ScriptBindings*.cpp registration tables. When
the Initialize command runs, it copies the declarations into the project's
script directory and creates a jsconfig.json that makes the VS Code built-in
TypeScript/JavaScript language service aware of the engine globals. This gives
full IntelliSense without any runtime overhead.
Auto-Generating the .d.ts
The declaration file is auto-generated by scripts/generate-dts.js, which
scans all ScriptBindings*.cpp files and merges the extracted registrations
with rich type annotations from scripts/annotations.json.
From the command line
cd tools/vscode-overly-massive
npm run generate-dts
From VS Code
Run Ctrl+Shift+P → OverlyMassive: Regenerate Type Declarations (.d.ts)
to re-scan the engine sources and update the bundled .d.ts in-place.
Adding a new binding
- Add your
reg("myFunc", js_myFunc, N); call in ScriptBindings*.cpp.
- Add a C++ comment above the implementation:
// myFunc(arg1, arg2) → returnType
- Add a matching entry in
scripts/annotations.json under "functions"
with param names, types, JSDoc, and return type.
- Run
npm run generate-dts — the new function appears in the .d.ts
with full IntelliSense support.
| |