A static landing page (site/) deployed to GitHub Pages via Actions:
- AI-generated brand: the survival-shield logo (favicon → 1024 + .ico) and an
atmospheric campfire hero, on the docs/design-language palette.
- Sections: hero, value props, feature grid (stats, inventory/crafting, gathering,
combat, mobs & AI, no-code admin), an "in action" showcase with the demo videos,
and a get-started/install panel. Dark translucent theme, responsive, self-contained.
- README refreshed to v0.5.0 with the full feature set, badges, and the site link.
The "See it in action" screenshot (site/assets/img/ui-showcase.png) drops in next.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A Studio dock widget that lets the experience owner tune the survival stats
through a validated form instead of hand-editing Attributes on the
SurvivalStatsConfig instance — the first slice of the Builder/Admin plugin (#11).
The point is compatibility: edits are LOCKED against engine updates. StatAdmin
(the pure, headlessly-testable logic layer) writes deltas only — it sets an
attribute solely when the owner changes a field from the live engine default,
and removes it on reset / edit-back-to-default. So unset fields keep following
the (improvable) engine defaults across a SurvivorCore release, while explicit
overrides live on the owner's instance, which the engine only ever seeds and
never overwrites. Nothing tuned is lost; nothing left alone is frozen.
Hard guardrail: the plugin can read/write only the seven owner-tunable fields
(STUDIO_ATTR_MAP). A write() assert makes it impossible to ever set the
engine-owned semantics Invert / DangerHigh — re-freezing the affliction
fill-direction bug is structurally unreachable. Runtime-verified in Studio:
every write path exercised (including rejected Invert/DangerHigh attempts) left
zero banned attributes on the instance.
- plugin/StatAdmin.luau — logic: roster, effective values, deltas-only writes
- plugin/StatAdminUi.luau — the dock-widget form (per-field reset, override dots)
- plugin/init.server.luau — toolbar/widget wiring + ChangeHistory undo steps
- plugin.project.json — separate Rojo tree; build with --plugin to install
- CI: stylua + a plugin-sourcemap luau-lsp pass + a plugin build
- docs/admin-plugin.md + cross-links; fix stale Invert row in the no-code table
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Server tick (src/systems/SurvivalStats) simulates per-stat drain/regen stored as
Player Attributes, which auto-replicate so the client HUD (src/client/Hud) binds
reactively via GetAttributeChangedSignal — no RemoteEvents. Stats are defined in
src/stats/StatDefs and resolved through three layers (defaults < Config.override <
a Studio SurvivalStatsConfig instance) by src/stats/StatConfig, so owners retune
rates with no code.
The HUD is a real, designer-editable ScreenGui in StarterGui, authored as
diff-friendly JSON (assets/hud/SurvivalHud.model.json); bars bind by a `Stat`
attribute + a `Fill` child, so re-texturing needs zero code. It ships for every
distribution: the demo/Rojo source mount it, the drop-in .rbxm bundles it under a
Templates folder and start()/installHud() deploys it, and HudFallback guarantees a
HUD always appears. Adds the engine's first client layer (startClient()).
Allow committing *.rbxmx/model templates (.gitignore) and skip the CI-fetched
globalTypes.d.luau in selene.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pin stylua, selene, and luau-lsp in rokit.toml so local dev and CI use the
same versions, and add their configs (stylua.toml, selene.toml, .luaurc).
Two behavior-preserving source touches make the existing scaffold pass:
guard the optional iteration in Components.readAttributes (clears a luau-lsp
type error) and normalize Gatherable.luau to StyLua's canonical form. Ignore
the CI-fetched globalTypes.d.luau.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Foundation (Config/Assets/EventBridge/Hooks/Registry), content registry family, creator-owned component layer + Gatherable example, runnable demo place, Rojo/Wally/Rokit config, and release CI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>