Noir is a framework for Stormworks: Build and Rescue designed to hold your hand in some areas with addon development. Noir also introduces structured development through a clean architecture based on services, libraries and classes (Noir adds class support!). It also reduces boilerplate as Noir comes with built-in services (eg: PlayerService), libraries and classes out of the box.
In Noir, your addon is divided into "services" - self-contained logic units that can interact with libraries, classes and other services alike. Libraries are purely for reusable logic that do not interact with the game but provide utilities instead (like math utilities, etc). Classes, on the other hand, purely define structured data and behaviour and is a big portion of the OOP nature of Noir.
Noir is complicated to understand at first, so consider looking at the examples which can be found in /examples. Looking at the source code for built-in services, libraries, etc, may also help you.
The below snippet showcases Noir's events system as well as the OOP nature of the framework. The code below simply sends a notification to any player who joins and gives them an item.
However, if you want to stay true to Noir's design philosophy by using services, it'd look like:
Documentation can be found here.
For learning how to install and use Noir in your addon, please check out the documentation.
If you would like to contribute to Noir, whether that is by creating an issue or by creating a PR, please review this page in the Noir documentation first.
To build Noir (tool executables and the bundled Noir .lua file), see below.
- Ensure Python 3.13+ is installed (may work on earlier 3.x versions, only tested with 3.13).
- Ensure your working directory is the folder containing this README (root).
- Create a virtual environment (venv) by running
py -m venv venv(you may need to usepip install venvif the command doesn't work). - Activate the venv using
venv\scripts\activate.bat(Linux/MacOS:source venv/bin/activate). Usedeactivateinstead ofactivateto exit the venv at any time. - Run
pip install -r requirements.txtto install necessary Python packages. - With the venv activated and necessary packages installed, simply run
build.bat. This will bundle Noir into one.luafile and build all tools in/toolsinto executables by runningpy build.py. The API reference will also get updated (py build-api-reference.py). All of the files are then placed into_buildwhile the API reference docs will simply be updated in thedocsfolder.
⚠️ | Ifpyin the commands above doesn't work, trypythonorpython3instead.⚠️ |build.batis Windows only. You may need to create your own file that does the same and is compatible with your OS if you're not on Windows.


