How This Project Is Built
This project is a playable adaptation of THERE IS NO SPOON — a mission-based Matrix game where operatives jack in, run hard, and find a phone before the Agents find them. Everything in the filesystem exists to support that loop.
If you're here to build on it, this chapter is your map of what's actually in the box.
What you get out of the box
| File Type | Folder | What it's for | Designation |
|---|---|---|---|
| Character | /Characters/ | Operatives, Agents, programs, and coppertops | character |
| Location | /Locations/ | Constructs — any place you can jack into | location |
| Equipment | /Equipment/ | Gear, weapons, and code objects loaded by the Operator | — |
| GM Instructions | /GM Instructions/ | Private rulings the GM agent loads at the table | gm_instructions |
| Game Start | /Game Starts/ | Lobby setup: where you start and who you can play | game_start |
Characters, Locations, and Equipment are searchable and are the three you will extend most often. GM Instructions are markdown and never shown to players. Game Starts have no schema — their play config is set with the game-start command, not by editing the file body.
Character — what the schema actually holds
Open /file-types/character/schema.json and you'll see this is still a generic starting schema. That's intentional — it gives you a clean base to either use as-is or reshape into a true TINS character.
Editable fields:
name,image,description— who they are in the Matrix. Usedescriptionfor residual self-image, not biography.background,personality,notes— freeform text. This is currently where Deal, Fate, and cribbed kung-fu moves live until you add dedicated fields.level— number, minimum 1. In TINS terms this is not used; treat it as ops seniority or leave it at 1.ancestry,characterClass— strings. Repurpose asOrigin(Zion-born, Matrix-born, Program) andRole(Operator, Infiltrator, Face) or replace them entirely.stats— object with six numbers:strength,dexterity,constitution,intelligence,wisdom,charisma. These are D&D carryovers, not the TINS Matrix stat. See Hacking the System before you build dozens of characters on top of them.inventory— array of references to Equipment. Each entry is a slug likeleather-armor. Used for loadouts the Operator can code in.
Computed fields (read-only):
carryingCapacity—strength * 15. Derived, never written directly.totalInventoryWeight—sum(inventory, load(weight)). Sums theweightof every linked Equipment file.
In the Matrix, no one cares how many pounds of leather armor you carry. These two fields are useful only if you run outside-the-Matrix or grounded missions where encumbrance matters. For pure Matrix play you can ignore them or replace them with chip counts.
Location — constructs, not geography
Locations are deliberately light:
name(required),type(e.g., "Nightclub", "Corporate Lobby", "Subway Station", "Construct"),atmosphere,description,notes,image
There is no built-in map, exit list, or threat level. Put those in notes for now using a consistent pattern so you can later promote them to real fields:
Exits: Payphone — lobby (hard line), rooftop — helicopter pad
Threat: 2 Advantage Dice (security detail)
Mirrors/Glass: Chrome elevators, mirrored ceiling
atmosphere is your Operator voice. Write it as what the Operator says over the phone: "Inviting at first glance, with one detail that tells players something is waiting beneath the surface." — that's the Example Location, and it's exactly the right tone.
Equipment — code with weight
name(required),category(Weapon,Armor,Gear,Consumable,Treasure),value(gp),weight(lbs),description,notes,image
weight feeds totalInventoryWeight on the character. value is meaningless inside the Matrix — no one buys guns, the Operator codes them. Treat category as loadout tag and value as rarity or Operator cost if you need it, or ignore it.
Use notes for mechanical tags you will later formalize: Advantage Dice: +1 when firing into a crowd, Concealment: trenchcoat, Ammo: 2 reloads.
The gap you should know about
The Player's Handbook describes the real TINS system: Matrix stat 0–6, Skills rated 3–6, Body chips, Matrix chips, Deals, and Fates. None of those have dedicated fields yet. The current schemas give you a place to write them (notes, background, personality) but not to query them.
That's by design for a starter project. Don't paper over it by cramming numbers into description paragraphs. Read the Hacking the System chapter before bulk-creating content — adding four proper fields now saves you from rewriting fifty files later.
Conventions to keep
- Names are free names. Short, sharp, mythic-adjacent. Apostate, not Quentin. Keep the
namefield clean — no titles or stats in the name. - Images are residual self-image. Leather, sunglasses, phones, rain — not character sheets.
- Notes is your staging area. If you find yourself writing the same structured line in notes ten times, that's your next schema field.
- Don't duplicate derived values. If you add a
matrixfield, don't also addmatrixModifieras editable — make it computed.