{"id":"s9oon/rts-system","name":"rts-system","scope":"s9oon","platform":"roblox","description":"Reusable RTS unit control system for Roblox","version":"0.2.1","latest":"0.2.1","versions":["0.1.0","0.2.0","0.2.1"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"f73dd3122be35d1451bc3263d4c7d4c10763e7c88d5652cd8f06afac0c90569b","likes":0,"downloads":0,"install":"forest install s9oon/rts-system","url":"https://forest.dev/p/roblox/s9oon/rts-system","files":"https://api.forest.dev/ai/package/roblox/s9oon/rts-system/files","readme":"# RTS System\n\n## Overview\n\nA modular and extensible RTS system for Roblox, designed with clean architecture and reusable components in mind. Distributed as a [Wally](https://wally.run) package.\n\n- **Minions** from any character model, with idle and walk animations, owned and moved by the server.\n- **Selection** and control groups 1 to 9, kept on each player's client.\n- **Top-down camera** with drag to pan, scroll to zoom and following a minion.\n- **Rebindable keys**, including key combinations.\n- **Server checks** on every request, so players can only control their own minions.\n\n## Install\n\n```toml\n# your game's wally.toml\n[dependencies]\nRTS = \"s9oon/rts-system@0.2.1\"\n```\n\nRun `wally install`, then make sure your Rojo project puts the `Packages` folder in ReplicatedStorage:\n\n```json\n\"ReplicatedStorage\": {\n  \"Packages\": { \"$path\": \"Packages\" }\n}\n```\n\n```lua\n-- Server\nlocal RTS = require(game:GetService(\"ReplicatedStorage\").Packages.RTS)\n\nRTS.Server.start()\n-- \"Minion\" is the name you give this type. ServerStorage.Minion is any character model you put there.\nRTS.Server.defineMinion(\"Minion\", { model = game:GetService(\"ServerStorage\").Minion })\nRTS.Server.allowPlayerSpawning(\"Minion\")\n```\n\n```lua\n-- Client\nlocal RTS = require(game:GetService(\"ReplicatedStorage\"):WaitForChild(\"Packages\"):WaitForChild(\"RTS\"))\n\nRTS.Client.start()\n```\n\nRight click spawns a Minion. Select minions with `RTS.Client.Selection` and press F to send them to the mouse, or call `RTS.Client.Commands.setDestination(position)` from your own code.\n\n## Docs\n\n- [Getting started](docs/getting-started.md): install, starting the library, recommended place settings\n- [Minions](docs/minions.md): defining, spawning and controlling minions on the server\n- [Selection](docs/selection.md): selecting minions and control groups\n- [Commands](docs/commands.md): asking the server to spawn and move minions\n- [Keybinds](docs/keybinds.md): every key and how to change it\n- [Camera](docs/camera.md): pan, zoom and follow\n- [Demo](docs/demo.md): running the demo place\n\n## Development\n\n```\nsrc/                  the package, this is all that gets published\n  init.luau           entry point, returns { Server, Client, Shared, Keybinds }\n  server/             minions, spawning, remotes and their checks\n  client/             camera, selection, commands, keybinds\n  shared/             remotes and attribute names used by both sides\ndemo/                 the demo place's scripts and model, not published\ndocs/                 these docs\ndefault.project.json  the package, used by games that install it\ndev.project.json      the demo place\n```\n\n```bash\nwally install\nrojo serve dev.project.json\n```\n\nPublish a new version by bumping `version` in `wally.toml`, then `wally publish`.\n\n## License\n\n[MIT](LICENSE)\n","readmeTruncated":false}