A BYOND language smartness provider, map renderer, and more.
Find a file
Lucy 5a96f6bc22
Add support for call_ext(LoadedFunc) syntax (#433)
This adds support for 516's `call_ext(LoadedFunc)` syntax (allowing
either one or two args to `call_ext`).

The `call_ext_missing_arg` test is removed as a result, as `call_ext`
with a single arg is now valid syntax.
2025-06-26 21:32:53 -07:00
.vscode Add .editorconfig 2020-01-20 18:11:08 -08:00
crates Add support for call_ext(LoadedFunc) syntax (#433) 2025-06-26 21:32:53 -07:00
scripts Bundle extools and auxtools in all builds, not just releases 2024-08-08 20:27:25 -07:00
.appveyor.yml Disable CI release builds for now 2019-11-16 11:36:54 -08:00
.dockerignore Update dockerfile to Rust 1.54 2021-08-13 17:14:04 -07:00
.editorconfig Add .editorconfig 2020-01-20 18:11:08 -08:00
.gitignore Fix Clippy lints (#315) 2022-04-30 11:02:50 -07:00
Cargo.lock Update git2 to 0.20.2 (#434) 2025-06-18 21:52:55 -07:00
Cargo.toml Upgrade packages to Rust 2021 (#412) 2024-10-25 21:07:11 -07:00
CONFIGURING.md Lints for ambiguous ! on the left hand side of a bitwise operation (#265) 2021-05-17 23:33:49 -07:00
LICENSE Initial commit 2017-10-18 18:00:12 -07:00
README.md Remove Dockerfile 2025-06-26 19:04:34 -07:00

SpacemanDMM

SpacemanDMM is a suite of tools for working with DreamMaker codebases and map files. It features a full-size fancy map renderer, a language server, and a documentation generator for DM codebases.

Language server updates are released to the editor extensions on a regular basis and binaries are occasionally posted to the releases page. Building from source is recommended to get the latest updates to the map renderer.

The documentation and static analysis tools can be run as part of a continuous integration build; see /tg/station's CI suite for an example.

Support is currently provided in /tg/station13's coderbus (ping SpaceManiac) and on the issue tracker. Pull requests are welcome.

Language Server

The language server provides autocomplete, go-to-definition, and other code intelligence for the DreamMaker language. The preferred installation method is the Visual Studio Code extension (source). There is also a Sublime Text 3 package (source), and the implementation is compatible with most language server clients.

Map Renderer

The map renderer produces full-scale PNGs of .dmm map files, including configurable emulation of in-game graphical enhancements not usually visible in the editor, specialized for /tg/station13 but likely to work on similar codebases.

$ cd path/to/tgstation/
$ dmm-tools minimap _maps/map_files/MetaStation/MetaStation.dmm

By default, output is saved to data/minimaps/, which can be changed with the -o flag. More detailed usage information is available in the --help output.

For examples of the maps produced, visit the SS13 WebMap.

Documentation Generator

dmdoc is a simple Doxygen-esque documentation generator for DreamMaker code. Files, macros, types, vars, and procs can be documented. Documentation comments start with /** or /// when preceding the documented item, or /*! or //! when contained within it.

The contents of code/README.md are rendered as the index page and other Markdown files within the code/ directory are included in the output. The generated documentation also includes GitHub links to item definitions.

For an example of the generated documentation, see /tg/station13's code docs.

Static Analysis

DreamChecker is SpacemanDMM's static analysis tool. It can generate several type-safety diagnostics which DreamMaker does not, and extends the langauge with return-type annotations, described in its documentation. It is suitable for running in continuous integration environments.

Building

To build locally, begin by installing Rust or updating your existing installation. SpacemanDMM is tested against stable Rust.

Clone this repository and run cargo build --release to build the full suite in target/release/. List and build individual binaries with cargo build --release --bin. See the source readme for more information on the individual packages.

License

SpacemanDMM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

SpacemanDMM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with SpacemanDMM. If not, see http://www.gnu.org/licenses/.