A Garry's Mod addon for Witness-style puzzle panels. It is written in MoonScript and compiled to Lua.
The project started as a Starfall/StarfallEx experiment and grew into its own addon. The Witness is the obvious inspiration. You should play The Witness.
Install Node.js, LuaJIT, LuaRocks, and MoonScript. Then install the Node dependencies and run the tests:
luarocks install moonscript
npm ci
npm testnpm test rebuilds dest/, runs the Lua and LuaJIT suites, and smoke-tests a
temporary GMA package.
Create the distributable files with:
npm run package:gma
npm run package:zip
npm run verify:packageThe GMA, ZIP, and manifest go in artifacts/. The GMA writer is implemented
in Node, so it does not need Garry's Mod or gmad. If gmad is installed,
set MOONPANEL_GMAD when running npm run verify:package to check the archive
with it too.
For live development, use npm run watch. It rebuilds generated files in
place. If dest/ gets stale, run npm run rebuild.
- NotMyWing - NotMyWing
Moonpanel's code is Apache 2.0; see LICENSE.
Some code and assets came from other projects. See
THIRD_PARTY_NOTICES.md for the list. The Witness
assets belong to Thekla and are not relicensed here.
- Thekla, Inc. and Jonathan Blow — The Witness and the puzzle language that started this whole thing.
- TheFifthMatt — The Windmill.
- Tyler Schrock — The Windmill importer.
- thegrb93 and contributors — The StarfallEx panel code this grew out of.
- WireMod contributors — The editor-presence animation we adapted.
- BytewaveMLP — Buildscript work.
See the WireMod and Expression 2 guide for inputs, outputs, E2 helpers, and duplication behavior.