id: 7ebd60aeb55e483a94ad341fef7d3e5b
parent_id: 
item_type: 1
item_id: 088737f31c514f1da21cc42c0ab6acc1
item_updated_time: 1785523646943
title_diff: "[{\"diffs\":[[1,\"Skara Brae — Project Plan\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":25}]"
body_diff: "[{\"diffs\":[[1,\"# Skara Brae — Project Plan\\\n\\\n## Status: Concept Phase\\\n\\\n## Summary\\\n\\\nA fantasy-themed text-based MMORPG inspired by **Torn City**, with idle RPG elements from **Idle Fantasy**, a **RoleMaster-inspired critical hit system**, and the setting/structure of **The Bard's Tale I**. Named after the ancient neolithic settlement on Orkney. The game transplants Torn's proven crime-economy-guild mechanics into a dark fantasy setting with real-time features expected in 2026+.\\\n\\\n### What Each Source Primarily Contributes\\\n\\\n| Source | Primary Contribution |\\\n|---|---|\\\n| **Bard's Tale I** | Setting (Skara Brae), Review Board (leveling/spells), party system, dungeon progression, Mangar antagonist, spell schools, bard songs |\\\n| **RoleMaster / MERP** | Combat engine (d100 open-ended, crit tables, armor cross-ref, body parts, resistance rolls), three magic realms, **elaborate skill category system + spell lists**, brutality |\\\n| **Idle Fantasy** | Offline sessions, hireable workers, pets, guild rank progression, blessings, slayer tasks, daily/cumulative quests, **(+2025 evolution:) infinite tower, expeditions, town buildings meta, carnival, pity system, gear scoring, titles UX, XP lamps** |\\\n| **Torn City** | Crime→adventure loop, billions-scale stats, economy, factions→guilds, companies→clans, properties, education, casino→gambling, travel, seasonal events, **honours/awards→medals & honours** |\\\n\\\n---\\\n\\\n## Research Completed\\\n\\\n- Analyzed Torn City (torn.com): text-based crime MMORPG running since 2004, millions of users\\\n- Key Torn mechanics: crimes, PvP, factions, companies, properties, stock market, education, bounties, item market, casino, racing, travel, honours/awards\\\n- Torn evolution: Crimes 2.0 (2023), real-time features, mobile apps, rich REST API with community tools\\\n- Analyzed Idle Fantasy (github.com/tristinbaker/IdleFantasy): open-source idle RPG, 23 skills, offline sessions, guild rank progression, pets, inn workers, blessings, slayer tasks\\\n- **Re-reviewed Idle Fantasy at v1.12.11 (366 stars, 810 commits, 2026-07)**: new systems captured — Infinite Tower, Expeditions, Buildings/Builder's Workshop, Carnival, pity system, gear scoring, titles UX, XP lamps, raid bosses. See [Idle Fantasy Inspirations](joplin://fea2d81f0414484fa4edf126f8ca17ed).\\\n- Analyzed Bard's Tale I (1985): dungeon crawl RPG set in Skara Brae, 30×30 city map, Review Board, Garth's Shoppe, party of 6, spell schools (Magician/Conjurer/Sorcerer/Wizard → Archmage), Mangar the Dark, turn-based combat\\\n- Analyzed RoleMaster/MERP: d100 open-ended system, critical tables by weapon type, armor cross-reference, body part damage, resistance rolls, three realms of magic (Essence/Channeling/Mentalism), 10 stats, skill ranks & development points, maneuver difficulty, open/closed/base spell lists\\\n- Designed hybrid combat system: Torn-scale exponential stat growth + RoleMaster-inspired open-ended d100 crit tables with level-difference caps\\\n- Designed MERP/Rolemaster-inspired skill & magic system: 21 skill categories, practice+development rank hybrid, maneuver roll resolution, per-realm spell lists\\\n- Designed Torn City-inspired medals & honours system: tiered medals, rare honours, titles, Hall of Fame\\\n- Created comprehensive mechanics source mapping (BT1 + RM + IF + Torn → Skara Brae)\\\n\\\n---\\\n\\\n## Design Documents (Joplin Notes)\\\n\\\n| Note | ID | Content |\\\n|---|---|---|\\\n| [Game Concept Overview](joplin://fcd381c235694f29abf73665317a40f5) | `fcd381c235694f29abf73665317a40f5` | Core game loops, character system (6 races, 8 classes), crafting deep dive, inn deep dive, pets, guilds, blessings, slayer, API design, monetization, MVP scope |\\\n| [Mechanics Source Mapping](joplin://81ac5941f07d4cdcb41a4797c7ec1c99) | `81ac5941f07d4cdcb41a4797c7ec1c99` | **How BT1, RoleMaster, Idle Fantasy, and Torn City map to our mechanics.** Leveling, spells, combat, adventures, city nav, economy, guilds+clans, party system, races, classes, quests, world events. |\\\n| [Combat System & Stat Scaling Design](joplin://5ff1fed180fa4b39b4cdb925f34c1008) | `5ff1fed180fa4b39b4cdb925f34c1008` | Hybrid RoleMaster + Torn City combat: exponential BIGINT stats, open-ended d100 crit tables, crit caps by level difference, crit status effects, combat formula draft |\\\n| [Skill & Magic System (MERP/Rolemaster-Inspired)](joplin://8bee50c2a9194ec491612ace0bd40fe4) | `8bee50c2a9194ec491612ace0bd40fe4` | **21 skill categories, practice+development rank hybrid, maneuver roll resolution (Routine→Absurd), per-realm spell lists (open/closed/base), power points, spell acquisition at Review Board.** |\\\n| [Medals & Honours System (Torn City-Inspired)](joplin://e368348dd9c341f59fe55594a0fbca96) | `e368348dd9c341f59fe55594a0fbca96` | **Tiered medals (Copper→Dragon) by category, rare honours, titles, Hall of Fame leaderboards, bounded permanent bonuses, profile display.** |\\\n| [Idle Fantasy Inspirations](joplin://fea2d81f0414484fa4edf126f8ca17ed) | `fea2d81f0414484fa4edf126f8ca17ed` | Offline sessions, hireable NPC workers, pet buff system, guild rank progression, blessings/church, slayer tasks, quest diversity, 23-skill mapping **(+ infinite tower, expeditions, buildings, carnival, pity, gear scoring, titles, XP lamps)** |\\\n| [Lore & World Building](joplin://2c8e2a844da0497e8a93c820ec8901a1) | `2c8e2a844da0497e8a93c820ec8901a1` | 11 city districts + key locations, 11 key NPCs, 5-act storyline (BT1-inspired), travel destinations (offshore), day/night cycle, calendar & seasonal events with temporary locations |\\\n| [Tech Stack & Architecture](joplin://980c3eb587294e4383474b94988f2f88) | `980c3eb587294e4383474b94988f2f88` | Rust workspace (Axum, SQLx, Redis, JWT), Vue 3 frontend, **multi-repo + bilingual shared-repo layout**, database schema, crate dependencies |\\\n| [Project Plan](joplin://088737f31c514f1da21cc42c0ab6acc1) | `088737f31c514f1da21cc42c0ab6acc1` | This document — roadmap, MVP scope, repository structure |\\\n\\\n---\\\n\\\n## Character System Summary\\\n\\\n### Races (6 — Conservative)\\\nHuman, Dwarf, Elf, Halfling, Half-Orc, Half-Elf\\\n\\\n### Classes (8 — Conservative)\\\nWarrior, Rogue, Mage, Bard, Cleric, Ranger, Paladin, Monk\\\n\\\n### Spell Schools (Mage only, BT1-inspired)\\\nMagician → Conjurer → Sorcerer → Wizard. Switch at Review Board. Master all four = Archmage.\\\n\\\n### Magic Realms (RoleMaster-inspired)\\\nEssence (mages), Channeling (clerics), Mentalism (bards/psionics)\\\n\\\n### Skills (MERP/Rolemaster-inspired)\\\n21 skill categories (Armor, Weapons, Athletic, Awareness, Body Dev, Combat Maneuvers, Craft, Gathering, Directed Spells, Influence, Lore, Magic Lore, Mental, Outdoor, Self Control, Special Attacks, Spells, Subterfuge, Technical/Trade, Urban). Practice ranks by use + development ranks by spend. Maneuver roll resolution (d100 open-ended vs. difficulty).\\\n\\\n### Medals & Honours (Torn City-inspired)\\\nTiered medals (Copper→Silver→Gold→Platinum→Dragon) across 10 categories, rare honours for exceptional feats, cosmetic titles, Hall of Fame leaderboards. Mostly cosmetic; small bounded permanent bonuses.\\\n\\\n---\\\n\\\n## Key Systems\\\n\\\n### Navigation (Hybrid Model)\\\n- **City**: District-based navigation (click to move). Fast, mobile-friendly.\\\n- **Dungeons**: Room-by-room exploration with minimap. Immersive.\\\n- **Night travel**: Random encounter chance when moving between districts at night.\\\n- **Offshore travel**: Ship from Harbor, 1-4 hour real-time trips, risk of encounters.\\\n\\\n### Party System\\\n- **Parties**: 2-4 players (not 6 characters per player like BT1). Front/back rank combat.\\\n- **LFG Board**: At Adventurers' Guild. Post/apply for dungeon groups.\\\n- **Mercenary NPCs**: Hire from inn to fill empty slots. Cost gold. Lower stats than players.\\\n- **Guild Raids**: 6-12 players. Instanced dungeons. Weekly lockout. Best loot.\\\n- **Group bonuses**: +10% XP per party member (up to +30% for party of 4).\\\n\\\n### Guilds + Clans (Separate Systems)\\\n- **Guilds**: Power/territory organizations. Hierarchy, guild hall, wars, alliances, taxation. One guild per player.\\\n- **Clans**: Economic cooperatives. Types: Trading Company, Mercenary Band, Crafting Cooperative, Exploration Society. One clan per player. Stack with guild membership.\\\n\\\n### Economy\\\n- Garth's Equipment Shoppe (NPC, basic gear, 40% buyback)\\\n- Player-driven bazaar + auction house\\\n- Bank (deposits, interest, loans)\\\n- Inn gambling (dice, cards, arm wrestling, shell game)\\\n- Player shops/stalls in Market Square\\\n- Merchant ventures (trading caravans, 24-hour returns)\\\n- Travel to offshore trade hubs (Free Ports)\\\n\\\n---\\\n\\\n## Tech Stack Decision\\\n\\\n| Layer | Technology | Rationale |\\\n|---|---|---|\\\n| Backend | **Rust** + Axum + Tokio | Performance, type safety, fearless concurrency for game tick engine |\\\n| Database | PostgreSQL + SQLx + Redis | ACID for game state, Redis for cache/sessions/leaderboards |\\\n| Real-time | WebSocket (tokio-tungstenite) | Live combat, chat, notifications |\\\n| Auth | JWT + Argon2 | Stateless auth, API-friendly |\\\n| Frontend | **Vue 3** + Vite + Pinia | Reactive UI, composable patterns for game state |\\\n| Mobile | PWA via Vite plugin | Single codebase, native-like experience |\\\n| Infra | Docker + Caddy | Simple deployment, automatic HTTPS |\\\n\\\n---\\\n\\\n## Repository Structure\\\n\\\n### Decision: Multi-Repo with Bilingual Common\\\n\\\nThree repos, kept as **siblings under one parent folder** (the parent is a plain folder, not a git repo). The backend opens in **RustRover**, the frontend in **WebStorm**, the shared repo in a third window (or \\\"Attach\\\"ed in either IDE). Full rationale & codegen strategy in [Tech Stack & Architecture](joplin://980c3eb587294e4383474b94988f2f88).\\\n\\\n```\\\n~/dev/skara-brae/                  # workspace root (plain folder, NOT a git repo)\\\n├── skara-brae-server/             # Rust backend (Axum) — opened in RustRover\\\n│   ├── crates/\\\n│   │   ├── sb-api/                # HTTP + WebSocket server\\\n│   │   ├── sb-core/               # Game engine (combat, crit tables, skills, spells, pets, crafting)\\\n│   │   ├── sb-db/                 # Database layer (SQLx + PostgreSQL)\\\n│   │   ├── sb-auth/               # JWT + Argon2 authentication\\\n│   │   └── sb-shared/             # Server-INTERNAL shared types, errors, constants (stays here)\\\n│   ├── migrations/\\\n│   ├── Cargo.toml                 # sb-common = { path = \\\"../skara-brae-common/rust\\\" }\\\n│   └── docker-compose.yml\\\n├── skara-brae-client/             # Vue 3 frontend — opened in WebStorm\\\n│   ├── src/\\\n│   └── package.json               # \\\"@skara-brae/common\\\": \\\"file:../skara-brae-common/ts\\\"\\\n└── skara-brae-common/             # Cross-language shared repo (bilingual package)\\\n    ├── data/                      # items/ adventures/ crit-tables/ spells/ recipes/\\\n    │   └── schema/                #   medals/ dungeons/ tower/ expeditions/ (*.json/*.toml)\\\n    │                              #   JSON Schema (entities) + openapi.yaml (API contract)\\\n    ├── rust/                      # thin crate \\\"sb-common\\\" (include_str! + serde) — server depends on it\\\n    ├── ts/                        # thin package \\\"@skara-brae/common\\\" (generated types + data) — client depends on it\\\n    └── codegen/                   # data/ + schema  →  rust/ and ts/ bindings\\\n```\\\n\\\n**Consumption rules:**\\\n- **Static game data** (`data/`) is the single source of truth; consumed at build time (Rust `include_str!` + `serde`; Vue Vite import). Auto-generates client tooltips *and* a community wiki.\\\n- **API contract** is **server-authoritative** — OpenAPI via `utoipa` → client TS types via `openapi-typescript`. No hand-duplicated API types.\\\n- **Entity types** defined once as JSON Schema → generated into both Rust (`typify`/`schemars`) and TS (`json-schema-to-typescript`).\\\n- `sb-shared` (server-internal Rust) ≠ `skara-brae-common` (cross-language). Don't confuse them.\\\n- **Alternative for self-contained CI**: git submodule of common inside both repos. Start with sibling + path; switch to submodules only if contributors/CI demand it.\\\n\\\n---\\\n\\\n## MVP Scope (Phase 1)\\\n\\\n1. User registration, authentication, character creation (6 races, 8 classes)\\\n2. Basic stat/skill system with training (BIGINT stats, 21 skill categories, practice+development ranks)\\\n3. Adventure system (5-10 adventures across difficulty tiers)\\\n4. Turn-based combat engine with RoleMaster-inspired crit tables\\\n5. Basic economy: Garth's Shoppe (NPC), bazaar (player), bank\\\n6. Guild creation and membership (basic hierarchy)\\\n7. Party system (2-4 players + NPC mercenaries)\\\n8. The Adventurers' Guild (Review Board — leveling, basic spell learning)\\\n9. REST API + basic Vue.js frontend\\\n10. Real-time notifications via WebSocket\\\n11. Offline adventure rewards collection\\\n12. Basic crafting (2-3 professions: blacksmithing, alchemy, cooking)\\\n13. Medal tracking infrastructure (counters + a few combat/adventure medals)\\\n\\\n---\\\n\\\n## Roadmap\\\n\\\n- **Phase 2**: PvP arena, guild wars + territory, properties, education system, pets, blessings, clan system, **full skill category system + maneuver resolution**, **spell lists (per realm)**, **full medals + honours + titles (with locked-title-with-requirement UX)**, **Construction skill + town Buildings meta**, **Expeditions (gathering → lore notes → unlock dungeons)**, **Fortune's Favor pity system**, **XP lamps**, **gear scoring / recommended-power indicator**\\\n- **Phase 3**: Full 5-act storyline, dynamic world events, day/night cycle, inn workers, slayer tasks, offshore travel, **Hall of Fame leaderboards**, hidden medals, seasonal honours, **Infinite Tower (endless scaling PvE + floor milestones)**, **Carnival (traveling seasonal minigame hub + ticket economy)**, **queue slots (parallel offline sessions)**\\\n- **Phase 4**: Mobile app (Capacitor), merchant ventures, advanced crafting (all 12 professions), pet breeding, inn gambling, spell scrolls/wands/runes crafting\\\n- **Phase 5**: Community API, mod support, tournament system, **guild raids (6-12 players) + raid-boss roster**\\\n\\\n---\\\n\\\n## Open Questions\\\n\\\n- [ ] Art style / visual direction (text-only vs. illustrated UI elements)\\\n- [ ] Game clock speed (how many real hours per game day? currently 4hr)\\\n- [ ] Monetization specifics (patron tier pricing)\\\n- [ ] Hosting infrastructure (self-hosted vs. cloud)\\\n- [ ] Whether to use Nuxt (SSR) or plain Vue (SPA)\\\n- [ ] Offline session balance: how long should adventures continue while logged out?\\\n- [ ] Blessing tuning: duration ranges, effect scaling, cooldown between blessings\\\n- [ ] Worker pricing: gold-per-hour rates for hireable inn workers\\\n- [ ] Party size: 2-4 confirmed? Or allow up to 6?\\\n- [ ] Raid size: 6? 12? For guild raid content.\\\n- [ ] Travel time: 1-4 hours real time for offshore locations?\\\n- [ ] Spell school switching: cooldown? Cost? Or free at Review Board?\\\n- [ ] Archmage: cosmetic title only? Or gameplay bonus for mastering all schools?\\\n- [ ] **Stat bonus curve**: exact `stat_bonus()` log function shape for skill system\\\n- [ ] **Rank caps**: hard cap per skill or soft cap via DP scarcity?\\\n- [ ] **PP vs mana**: unify into power points or keep both?\\\n- [ ] **Medal tier count**: 5 (Copper→Dragon) or simplify to 4?\\\n- [ ] **Honour bonus cap**: confirm +10% per-effect-category collective cap?\\\n- [ ] **Infinite Tower**: floor milestone reward shape — permanent but bounded? Cap on stacked bonuses?\\\n- [ ] **Expeditions**: confirm 2 tiers per gathering skill? Which 5 gathering skills get expeditions first?\\\n- [ ] **Buildings meta**: confirm the building roster + tier ceilings (0–3)? Tie each to which district?\\\n- [ ] **Carnival**: confirm it as a seasonal traveling event vs. permanent district? Ticket economy tuning.\\\n- [ ] **Fortune's Favor**: N dry attempts before guaranteed high-rarity? Reset rules?\\\n- [x] ~~Rebirth/prestige system~~ → **Deferred**: stats only go up for now\\\n- [x] ~~Monorepo vs multi-repo~~ → **Multi-repo**: server, client, common\\\n- [x] ~~Game data location~~ → **skara-brae-common repo**\\\n- [x] ~~Map system~~ → **Hybrid**: district nav for city, room-by-room for dungeons\\\n- [x] ~~Guilds vs clans~~ → **Both**: guilds (power/territory) + clans (economic), one of each per player\\\n- [x] ~~Skill system depth~~ → **MERP/Rolemaster-inspired**: 21 categories, practice+dev ranks, maneuver rolls\\\n- [x] ~~Magic system~~ → **Spell lists per realm** (open/closed/base), power points, ordered progression\\\n- [x] ~~Achievements~~ → **Torn-style medals & honours**: tiered medals, rare honours, titles, HOF\\\n- [x] ~~Shared-repo consumption (two IDEs, Rust+Vue)~~ → **Sibling bilingual package**: language-neutral `data/` + schema, build-time codegen; API contract server-authoritative via `utoipa` → `openapi-typescript`. Server path-deps `../skara-brae-common/rust`; client file-deps `../skara-brae-common/ts`. See [Tech Stack & Architecture](joplin://980c3eb587294e4383474b94988f2f88).\\\n- [x] ~~Construction skill~~ → **Make it real** (re-evaluated): backbone of the town Buildings meta, fed by crafted materials\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":16744}]"
metadata_diff: {"new":{"id":"088737f31c514f1da21cc42c0ab6acc1","parent_id":"d1892c7c531848f5a5a3ac5e1749f7cf","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1781185216157,"markup_language":1,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-09-11T08:40:30.607Z
created_time: 2026-07-31T18:49:42.289Z
is_locked: 0
type_: 13