Survival stats & HUD
+Health, energy, hunger, thirst, fatigue, blood, poison β ticking, draining, biting back. A clean, restyleable HUD drives only the data.
+diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..afdf218 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,35 @@ +name: Deploy landing page + +# Publishes site/ to GitHub Pages whenever the page changes on main. +on: + push: + branches: [main] + paths: + - "site/**" + - ".github/workflows/pages.yml" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +# One deploy at a time; let a newer push supersede an in-flight run. +concurrency: + group: pages + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v4 + - uses: actions/configure-pages@v5 + - uses: actions/upload-pages-artifact@v3 + with: + path: site + - id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 856f464..be8d71f 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ globalTypes.d.luau # Editor / OS .DS_Store .vscode/ + +# Local Claude Code preview/launch config +.claude/ diff --git a/README.md b/README.md index f1f1017..0cd746b 100644 --- a/README.md +++ b/README.md @@ -1,95 +1,118 @@
+
# SurvivorCore
-**A batteries-included, creator-extensible survival game framework for Roblox.**
+**A batteries-included, creator-extensible survival game engine for Roblox.**
+
+[](https://github.com/TemujinCalidius/SurvivorCore/releases)
+[](https://github.com/TemujinCalidius/SurvivorCore/actions/workflows/ci.yml)
+[](LICENSE)
+
+**[π Website](https://temujincalidius.github.io/SurvivorCore/)** Β· **[π Docs](docs/)** Β· **[πΉ Demo](https://makertube.net/w/tyn8JEMG3CaMbTXid8osdU)** Β· **[β¬ Releases](https://github.com/TemujinCalidius/SurvivorCore/releases)**
+
+ v0.5.0 Β· pre-release
+
+ + A batteries-included, creator-extensible framework. Survival stats, inventory, gathering, + crafting, combat, mobs & AI β wired together, restyleable, and authorable + without code. If you know Roblox Studio, you can build a survival game. +
+Free & open source (MIT) Β· drop-in .rbxm or Wally
The core survival loop ships working β stats, inventory, gather, craft, fight β not a pile of parts to wire.
+A Studio admin plugin creates items, weapons, ammo and mobs β with full stats β and zero scripting.
+UI is real, restyleable Instances driven by attributes. Override any default; nothing is locked.
+Hits, harvests and crafts are validated on the server. Content-free by design β you bring the game.
+Each system is configurable, hook-extensible, and authorable as tagged Instances or no-code.
+Health, energy, hunger, thirst, fatigue, blood, poison β ticking, draining, biting back. A clean, restyleable HUD drives only the data.
+Slots + carry-weight, a 9-slot hotbar, equipment, and hand crafting in a tabbed menu β server-authoritative, drag-and-drop.
+Tag any mesh Gatherable: hold-E or tool-swing, per-hit yields, reaction hooks (a reed sways, a tree fells and leaves a stump).
Click to swing; or aim a bow, draw for power, and loose arrows that arc under real weight. One server-validated kill-event schema.
+A shared FSM substrate: hostile mobs chase & attack, passive animals flee. Behavior is data β faction picks the profile.
+Create items, weapons, ammo and mobs from a Studio form β damage, range, arrow curve, weight, aggro, leash β and drop them into the world.
+The whole UI suite runs out of the box β restyle it, or keep the clean defaults.
+
+ Drop it into ReplicatedStorage, register your content, and call start().
Grab the drop-in model from the latest release, or add it with Wally:
+# wally.toml
+[dependencies]
+SurvivorCore = "temujincalidius/survivorcore@0.5.0"
+ β¦or drop SurvivorCore.rbxm into ReplicatedStorage.
local SurvivorCore = require(ReplicatedStorage.SurvivorCore)
+
+-- register content (or author it no-code in the admin plugin)
+SurvivorCore.Items.register({ id = "berry", name = "Wild Berries", stack = 20 })
+SurvivorCore.Mobs.register({ id = "husk", faction = "hostile", health = 60 })
+
+SurvivorCore.start() -- boots stats, inventory, gathering, crafting, combat, mobsβ¦
+ The HUD loader calls startClient() for you. That's it.