Skip to content

Applejack (S&box) — Documentation

Applejack is a roleplay framework for S&box. It is a reimagining of the Garry's Mod roleplay gamemode of the same name (originally Cider), rebuilt from scratch in C# on Source 2.

It is not a port. No line of the original Lua is translated. The original codebase is preserved in legacy/ and is treated strictly as a behavioural specification — it answers "how did this feature behave?" and never "how should this be implemented?"


Start here

If you are… Read
New to the project 00_CONSTITUTION.md01_VISION.mdArchitecture/00_OVERVIEW.md
Playing, or wondering what's actually usable Player/ — chat, commands, needs, jobs, property, crime, the UI
Running a server Guides/00_GETTING_STARTED.mdGuides/04_SERVER_ADMIN_GUIDE.md
About to write code Standards/ in full, then the Architecture/ doc for your subsystem
Adding content (items, jobs) Guides/02_ADDING_AN_ITEM.md, Guides/05_ADDING_A_JOB.md — no C# required
Building an extension Guides/03_EXTENDING_THE_FRAMEWORK.md
Wondering why something is the way it is ADR/
Curious what the original did Legacy/

Layout

Documentation/
├── 00_CONSTITUTION.md    Principles, authority, and the Definition of Done.
├── 01_VISION.md          What "feels like Applejack" means, concretely.
├── ROADMAP.md            Milestones and their exit criteria.
│
├── Player/               For players: chat, commands, needs, jobs, property, crime, the UI.
│                         What's actually built, not what the original game had.
│
├── Legacy/               PHASE 0 — What the original Applejack actually did.
│                         Behavioural spec + the defects we refuse to reproduce.
│
├── Architecture/         PHASE 1 — How the new framework is designed.
│                         Real C# signatures, not policy statements.
│
├── Standards/            How code, docs, tests and commits must look.
│
├── ADR/                  Architecture Decision Records. Superseded, never deleted.
│
└── Guides/               Task-oriented, worked examples — admin, content, and dev.

The reading rule

Legacy/ describes what was. Architecture/ describes what will be. Where the two differ — and they differ a great deal — the departure is justified by an entry in ADR/ or in Legacy/12_DEFECTS_AND_LESSONS.md. If you find a design decision that departs from legacy behaviour with neither citation, that is a documentation bug — please raise it.


Project status

Milestone 6 — first playable. Code/, Assets/, UnitTests/ and Applejack.sbproj all exist; Milestones 1–5's build items and the whole of Milestone 6's are written and on main. Eleven modules boot through ApplejackBootstrap.

None of it has been compiled or run. Read ROADMAP.md § Verification debt before trusting any part of this tree as a description of working software — these documents describe a design that the code is written to, verified by review rather than by execution.

That distinction matters for how you read the rest of this folder: where a document and the code disagree, the code is not automatically right. Neither has been run. Per 00_CONSTITUTION.md §4 the design is the source of truth, and a disagreement is a bug in one of them to be resolved deliberately — not a licence to quietly rewrite the doc to match whatever was typed.


Engine baseline

All documentation is written against S&box as of July 2026. Older S&box builds differed substantially (there was no scene system, and networking used entirely different APIs), so any tutorial or memory predating the scene system is actively misleading. Every engine API named in these documents is verified against the official documentation — see Architecture/00_OVERVIEW.md for the verified API surface we rely on.