diff --git a/README.md b/README.md index 623bbe7e..8dc39530 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,49 @@ # SpacemanDMM **SpacemanDMM** is a suite of tools for working with [DreamMaker] codebases -and map files. Most prominently it features a map renderer which emulates many -in-game graphical enhancements not usually visible in the map editor, including -overlays and smoothing. These features currently assume [/tg/station13], but -are highly likely to work on downstreams or closely related codebases. +and map files. It features a full-size fancy map renderer, a [language server], +and a documentation generator for DM codebases. + +Binary releases are posted to the [releases] page. + +Support is currently provided in /tg/station13's coderbus (ping `SpaceManiac`) +and on GitHub's issue tracker. Pull requests are welcome. [DreamMaker]: https://secure.byond.com/ [/tg/station13]: https://github.com/tgstation/tgstation/ - -## Installation - -Binary releases for Linux and Windows are available on the [releases] page, but -may not always be up to date. - -To build locally, begin by [installing Rust][rust] or updating your existing -installation. SpacemanDMM is tested against stable Rust. - -For one-time installation, run `cargo install --git https://github.com/SpaceManiac/SpacemanDMM cli` -to install the `dmm-tools` binary to `~/.cargo/bin`. - -For development or easy installation of updates, clone this repository and run -`cargo build -p cli --release` to create `target/release/dmm-tools`. See the -[source readme] for a list of the available packages, or omit `--release` for a -debug build. - [releases]: https://github.com/SpaceManiac/SpacemanDMM/releases -[rust]: https://www.rust-lang.org/en-US/install.html -[source readme]: ./src/README.md -## Usage +## [Map Renderer](src/cli/) -Executables are placed in `target/release` or `target/debug` depending on build -type. The CLI binary is known as `dmm-tools`. For best results, run from the -directory containing `tgstation.dme`. +`dmm-tools` is SpacemanDMM's map renderer. It generates full-sized map images +and emulates many in-game graphical enhancements not usually visible in the map +editor, including overlays and smoothing. These features currently assume +[/tg/station13], but are highly likely to work on downstreams or closely +related codebases. Basic usage: `dmm-tools minimap _maps/map_files/BoxStation/BoxStation.dmm`. +For best results, run from the directory containing your `.dme` file. By default, output is saved to `data/minimaps`, which can be changed with the `-o` flag. The `-e` flag, specified before the subcommand, can be used to load a different `.dme` file. More detailed usage information is available in the `--help` output. -Support is currently provided in /tg/station13's coderbus (ping `SpaceManiac`) -and on GitHub's issue tracker. Pull requests are welcome. +The minimap output is a very large PNG (e.g. 9.3 MB for Box). You are strongly +advised to run the resulting file through image optimization software such as +`pngcrush`. The `--pngcrush` option to the `minimap` subcommand can do this +automatically in many cases, but is off by default for speed reasons. -## Language Server +## [Language Server](src/langserver/) -SpacemanDMM also provides a [language server] providing intelligence for the -DreamMaker language. A [Visual Studio Code plugin][vsc] is available, and will -install released language server binaries automatically. Details on available -features are listed in the language server's [package readme][ls-readme]. +SpacemanDMM includes a [language server] providing autocomplete, +go-to-definition, and more for the DreamMaker language. The preferred +installation method is the [Visual Studio Code plugin][vsc], which will update +with newly-released language server binaries automatically. Details on +available features are listed in the language server's +[package readme][ls-readme]. + +The VS Code plugin is currently hosted in a [separate repository][vsc-src]. Use `cargo build -p dm-langserver` to build a local copy of the language server for debugging or development purposes. The plugin can be configured to run a @@ -59,10 +52,40 @@ locally built language server rather than the binary releases. [language server]: https://langserver.org/ [vsc]: https://marketplace.visualstudio.com/items?itemName=platymuus.dm-langclient [ls-readme]: ./src/langserver/README.md +[vsc-src]: https://github.com/SpaceManiac/vscode-dm-langclient -## Recommendations +## Building + +To build locally, begin by [installing Rust][rust] or updating your existing +installation. SpacemanDMM is tested against stable Rust. + +For one-time installation, run +`cargo install --git https://github.com/SpaceManiac/SpacemanDMM cli` +to install the `dmm-tools` binary to `~/.cargo/bin`. + +For development or easy installation of updates, clone this repository and run +`cargo build -p cli --release` to create `target/release/dmm-tools`. See the +[source readme] for a list of the available packages, or omit `--release` for +a debug build. + +Executables are placed in `target/release` or `target/debug` depending on build +type. The CLI binary is known as `dmm-tools`. + +[rust]: https://www.rust-lang.org/en-US/install.html +[source readme]: ./src/README.md + +## 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/. -The minimap output is a very large PNG (e.g. 9.3 MB for Box). You are strongly -advised to run the resulting file through image optimization software such as -`pngcrush`. The `--pngcrush` option to the `minimap` subcommand can do this -automatically in many cases, but is off by default for speed reasons.