A developer companion for Open 3D Engine (O3DE) in Visual Studio Code.
🧪 Early / experimental. Scope and features are actively evolving. Windows-focused (MSVC).
Everything is driven from a single O3DE Development Tools panel in the activity bar: a Dashboard with live status, Build/Run, utilities, and collapsible Configuration & Onboarding sections, plus a Lua Palette and an Advanced view.
Features
- Per-project opt-in — the extension's automatic behavior runs only in projects you enable
(a one-time prompt the first time you open an O3DE project; stored in
.vscode/settings.json). A non-O3DE workspace (e.g. web development) stays completely dormant. - Guided workspace setup — assemble the multi-root workspace (project + engine source + gems)
into a
.code-workspace, with.vscodesettings generated for you. Add Gems / Folders adds more roots to the live workspace on demand. - Windows MSVC environment — auto-detects Visual Studio, opens a developer terminal with the MSVC environment established; detects Ninja and offers to install it.
- One-click CMake configure & build — selectable generator, config, and target(s), mirroring O3DE's build flow, with a process-guard for locked build outputs.
- Run & force-quit — launch the Editor or the project's GameLauncher (with custom launch
options) and stop the whole process tree (AssetProcessor and friends included). Run is a toggle:
pressing it (or
Ctrl+Alt+R) while the app is up force-quits it (configurable). - Advanced CMake flags — an Advanced view manages extra
-Dcache variables passed to Configure (curated toggles for RenderDoc /CMAKE_OBJECT_PATH_MAX, plus any custom flag), stored per-project and applied on the next reconfigure. - LLM connections (MCP) — an opt-in localhost MCP endpoint so an assistant like Claude can build, run, check run-state, read structured build results, and read/change build config — per-project, off by default, localhost-bound.
- Class Creation Wizard — launch O3DE's component/EBus class-scaffolding tool for the project's engine straight from the panel.
- C++ IntelliSense — generates
c_cpp_properties.jsonfrom the CMake File API and registers a live cpptools configuration provider; engine paths resolve to your source engine. - Project config generation —
.vscodesettings.json+launch.json(Editor / GameLauncher / Attach / Class Creation Wizard) + O3DE code snippets. - Quick access — Editor / Error logs, the extension output channel, and keybindings for Build
(
Ctrl+Alt+B) and Run (Ctrl+Alt+R). - Lua debugging — a full Debug Adapter that speaks O3DE's RemoteTools protocol natively (no companion gem): breakpoints, stepping, call stack, locals, watch, and edit-value, against a running Editor or GameLauncher. Plus an "Open in VS Code" handoff so the Editor's Tools ▸ Lua Editor and a Script component's Edit button open scripts here.
- Lua IntelliSense — O3DE: Generate Lua IntelliSense dumps the engine's reflected scripting API
(classes, EBuses, globals) and generates LuaLS (sumneko) annotation stubs, so
.luascripts get typed completion and hovers for the O3DE API — offline, no running Editor needed after the dump. - Lua function palette — a browsable, searchable Classes / EBuses / Globals tree in the O3DE activity bar (the VS Code equivalent of the Lua IDE's Class Reference panel). Click a symbol to insert a call snippet. Opens automatically when O3DE hands a script over.
Debugging Lua
- Run O3DE: Register VS Code as Lua Editor once (writes
/O3DE/Lua/Debugger/Uriinto your project's registry). Restart the Editor. Now "Open Lua Editor" in O3DE opens the script here. - Open a
.luafile, set breakpoints, and click Debug Lua File (the ▷ in the editor title bar) or press F5 with the O3DE: Attach to Lua configuration. - Start your game (Editor Game Mode, or the GameLauncher). It connects to VS Code automatically and breakpoints hit.
Requires a non-Release Editor/Launcher build with the RemoteTools gem enabled (the default in O3DE's standard project templates). Debugging is localhost-only, one target at a time.
Lua IntelliSense & palette
Run O3DE: Generate Lua IntelliSense — it launches the Editor headless, dumps the reflected API to
<project>/user/lua_symbols.json, generates .vscode/o3de-lua-stubs/o3de_api.lua, and points the Lua
language server at it. (Already have a dump? O3DE: Generate Lua Stubs From Dump skips the Editor.)
The Lua Palette view in the O3DE activity bar then lets you browse and insert from the reflected API.
Requires the Lua language server
(sumneko.lua) for completion.
New to Lua? See the step-by-step Lua Getting Started & Verification guide — it walks through authoring, attaching a script to an entity, running it, and hitting a breakpoint.
Planned features
- Reflection browser — deeper inspection of reflected components and the BehaviorContext.
- Registerable templates (Lua, components, EBuses, gems).
- Broader cross-platform support.
Requirements
Windows with Visual Studio 2022 (Desktop development with C++), CMake, and optionally Ninja, plus a registered O3DE project and engine. The extension's Onboarding panel checks these for you and helps fill the gaps.
Development
npm install # install dependencies
npm run compile # type-check + bundle to dist/extension.js
Run / debug the extension (F5)
- Open this folder in VS Code.
- Press F5 (Run → Start Debugging) — this runs the "Run Extension" config, which builds first, then launches a second VS Code window: the Extension Development Host, with this extension loaded.
- In that window open the Command Palette (Ctrl+Shift+P) and run "O3DE: Hello World" — a notification confirms the extension is live.
- Edit code, then use Ctrl+Shift+F5 (Restart) in the host, or relaunch, to reload.
For continuous rebuilds while iterating, run the watch task (npm run watch) in a terminal.
Scripts
| Command | Purpose |
|---|---|
npm run compile |
Type-check and bundle to dist/ |
npm run watch |
Incremental rebuild on save |
npm run lint |
ESLint over src/ |
npm test |
Run the extension test suite (downloads a test VS Code build on first run) |
npm run package |
Production bundle (used by vsce when packaging a .vsix) |
Packaging a shareable build
npx vsce package # produces o3de-development-tools-<version>.vsix
Install a .vsix locally via Extensions view → ⋯ → Install from VSIX…, or
code --install-extension o3de-development-tools-<version>.vsix.
License
MIT © Genome Studios Inc
Disclaimer
This is an unofficial, community-built extension from Genome Studios Inc. It is not an official O3DE implementation, and is not affiliated with, endorsed by, or sponsored by the Open 3D Foundation or the Linux Foundation. "O3DE", "Open 3D Engine", and the O3DE logo are trademarks of their respective owners and are used here only to identify the engine this tool supports.