docs(game): migrate game-design canon notes from Joplin into docs/game/
Eight canon notes (Game Concept Overview, Mechanics Source Mapping, Combat System & Stat Scaling Design, Skill & Magic System, Medals & Honours System, Lore & World Building, Idle Fantasy Inspirations, Tech Stack & Architecture) as markdown, note title as H1, with source line citing the Joplin note ID. Joplin keeps status notes.
This commit is contained in:
parent
2343d5e154
commit
7a9a5a3e7b
8 changed files with 2810 additions and 0 deletions
569
docs/game/game-concept-overview.md
Normal file
569
docs/game/game-concept-overview.md
Normal file
|
|
@ -0,0 +1,569 @@
|
|||
# Skara Brae — Game Concept Overview
|
||||
|
||||
Source: Joplin note 9cf8a2e701654ffbbd6512cc837c7e2f, migrated 2026-10-03
|
||||
|
||||
# Skara Brae — Fantasy Text-Based MMORPG
|
||||
|
||||
## Inspiration
|
||||
|
||||
**Torn City** is a text-based, crime-themed MMORPG running since 2004 with over a million users. Core mechanics include:
|
||||
|
||||
- Crime system (mugging, drug trafficking, organized crime)
|
||||
- PvP combat with experience/leveling
|
||||
- Factions (clan system with wars and organized crimes)
|
||||
- Companies (player-run businesses)
|
||||
- Properties and housing
|
||||
- Stock market and banking
|
||||
- Item market / bazaar / auctions
|
||||
- Education system
|
||||
- Bounty system
|
||||
- Rich REST API for community tools
|
||||
|
||||
**Idle Fantasy** ([source](https://github.com/tristinbaker/IdleFantasy)) is an open-source offline idle RPG for Android with 23 skills, 20 dungeons, 170+ quests, guild rank progression, pets, and inn workers. Key inspirations: offline sessions, hireable NPC workers, pet buff system, blessing system, slayer tasks. See [Idle Fantasy Inspirations](joplin://48b3a3c76f734c8dafbbf9e8b3b5f80a) for full analysis.
|
||||
|
||||
**Skara Brae** transplants Torn's proven mechanics into a dark fantasy setting inspired by **The Bard's Tale I** and the real neolithic settlement on Orkney, with idle RPG elements from Idle Fantasy and a **RoleMaster-inspired critical hit system** (see [Combat System & Stat Scaling Design](joplin://0ef630db4e3e4d6dab18ccaefccaaa5a)).
|
||||
|
||||
---
|
||||
|
||||
## Setting
|
||||
|
||||
The city of **Skara Brae** — an ancient, labyrinthine city of stone and sorcery. Once a thriving hub of the Old Kingdom, now a place of shadow and opportunity. Adventurers arrive seeking fortune, power, and answers to mysteries buried beneath the cobblestones.
|
||||
|
||||
**Theme**: Low-to-dark fantasy. Grimy taverns, corrupt city watch, competing guilds, ancient dungeons beneath the city, magical artifacts, political intrigue. Not high fantasy — think more *The Witcher* meets *Thief* meets *Bard's Tale*.
|
||||
|
||||
---
|
||||
|
||||
## Core Game Loops
|
||||
|
||||
### 1. Adventures (→ Torn's "Crimes")
|
||||
The primary PvE activity. Players embark on adventures throughout the city and surrounding wilderness.
|
||||
|
||||
| Torn Mechanic | Skara Brae Equivalent |
|
||||
|---|---|
|
||||
| Search for cash | Pick pockets in the marketplace |
|
||||
| Sell illegal items | Fence stolen goods at the Thieves' Guild |
|
||||
| Mug someone | Waylay travelers on the road |
|
||||
| Burglary | Break into manors and vaults |
|
||||
| Organized crime | Dungeon raids (guild activity) |
|
||||
| Drug trafficking | Brew and sell potions (alchemy) |
|
||||
|
||||
Adventures have:
|
||||
- **Risk/reward tiers** (safe but low yield → dangerous but high yield)
|
||||
- **Cooldown timers** (energy system)
|
||||
- **Skill-based success chances** (your thievery skill affects pickpocketing)
|
||||
- **Time-of-day modifiers** (nighttime gives bonuses to stealth activities)
|
||||
- **Day-of-week events** (market day, full moon effects, festival bonuses)
|
||||
- **Offline continuation**: Adventures continue for up to 1 hour while logged out. On return, collect accumulated rewards. Server-side tick calculates elapsed rewards.
|
||||
|
||||
### 2. Combat (PvP & PvE)
|
||||
- **Arena**: Structured PvP duels with ranked matchmaking
|
||||
- **Ambush**: Open-world PvP with risk/reward (infamy system)
|
||||
- **Dungeon bosses**: PvE endgame encounters
|
||||
- **Combat is turn-based/text-based** with strategic depth (choose actions, manage stamina/mana)
|
||||
- **RoleMaster-inspired critical hits**: Open-ended d100 crit tables with status effects (bleed, stun, disarm, cripple). Crit damage capped by level difference but never zero. See [Combat System & Stat Scaling Design](joplin://0ef630db4e3e4d6dab18ccaefccaaa5a).
|
||||
- **Exponential stat growth**: BIGINT stats, tiered display (K/M/B/T). Stats only ever go up — no rebirth/prestige for now.
|
||||
|
||||
### 3. Economy
|
||||
- **Bazaar**: Player-driven item marketplace
|
||||
- **Auction House**: Rare items, timed auctions
|
||||
- **Bank of Skara Brae**: Deposits, interest, loans
|
||||
- **Merchant Ventures**: Invest in trading caravans (→ Torn's stocks) — returns depend on random events
|
||||
- **Crafting**: Alchemy, blacksmithing, enchanting — create items to sell or use (see Crafting deep dive below)
|
||||
- **Player shops/stalls**: Set up a stall in the Market Square (→ Torn's bazaar model)
|
||||
|
||||
### 4. Guilds (→ Torn's "Factions")
|
||||
See Guilds deep dive below for full details.
|
||||
|
||||
- Player organizations with hierarchy (Guildmaster → Officers → Members → Initiates)
|
||||
- **Guild Hall**: Upgradable base providing bonuses to members
|
||||
- **Guild Wars**: Territory control, raids on rival guild halls
|
||||
- **Guild Adventures**: Cooperative dungeon raids (→ organized crimes)
|
||||
- **Guild treasury**: Shared resources, taxation of members
|
||||
|
||||
### 5. Properties (→ Torn's "Properties")
|
||||
- **Dwellings**: From a straw bed at an inn to a tower in the city walls
|
||||
- Properties provide: rest bonuses (energy recovery), storage, crafting stations
|
||||
- Rentable, sellable, upgradable
|
||||
|
||||
### 6. Education (→ Torn's "Education")
|
||||
- **Schools**: Fighters' Academy, College of Magic, Thieves' Den, Merchants' Guild School
|
||||
- Courses take real time to complete, provide permanent stat/skill bonuses
|
||||
- Some adventures require specific education prerequisites
|
||||
|
||||
### 7. Quests & Storylines
|
||||
- **Main storyline**: Uncover the mystery beneath Skara Brae (Bard's Tale-inspired Mangar threat)
|
||||
- **Side quests**: NPC-given missions with rewards
|
||||
- **Dynamic events**: City-wide events (plague, invasion, festival)
|
||||
- **Daily quests**: 3-5 per day from NPCs (Madame Sylara, Captain Rennick, Guildmasters). "Complete 3 adventures" / "Craft 2 potions" / "Win 1 arena duel". Rewards: gold, XP, skill XP, occasional items.
|
||||
- **Weekly quests**: Larger goals, better rewards
|
||||
- **Cumulative achievements**: "Mine 10,000 ore total" → permanent bonus
|
||||
|
||||
---
|
||||
|
||||
## Crafting System (Deep Dive)
|
||||
|
||||
### Gathering Professions (5)
|
||||
| Profession | Materials | Locations |
|
||||
|---|---|---|
|
||||
| **Mining** | Ore, gems, stone | Mines, Undercity, mountains |
|
||||
| **Herbalism** | Herbs, fungi, reagents | Forests, swamps, gardens |
|
||||
| **Woodcutting** | Timber, resin, bark | Forests, groves |
|
||||
| **Fishing** | Fish, pearls, salvage | Harbor, rivers, underground lakes |
|
||||
| **Skinning** | Leather, bone, sinew | Wilds, dungeons (from kills) |
|
||||
|
||||
### Crafting Professions (7)
|
||||
| Profession | Creates | Key Materials |
|
||||
|---|---|---|
|
||||
| **Blacksmithing** | Weapons, heavy armor, tools | Ore, coal, flux |
|
||||
| **Alchemy** | Potions, poisons, elixirs | Herbs, reagents, solvents |
|
||||
| **Enchanting** | Magical enhancements, scrolls | Rare reagents, essence |
|
||||
| **Tailoring** | Cloth armor, bags, banners | Cloth, silk, magical thread |
|
||||
| **Jewelcrafting** | Rings, amulets, gem cuts | Gems, precious metals |
|
||||
| **Fletching** | Bows, crossbows, arrows | Wood, sinew, feathers |
|
||||
| **Cooking** | Food (healing, buffs), beverages | Fish, meat, herbs, grain |
|
||||
|
||||
### Profession Mastery Levels
|
||||
Novice → Apprentice → Journeyman → Expert → Master → Grandmaster
|
||||
|
||||
Each tier unlocks new recipes and improves crafting quality.
|
||||
|
||||
### Crafting Quality Rolls
|
||||
Every crafted item rolls for quality:
|
||||
|
||||
| Quality | Chance (base) | Effect |
|
||||
|---|---|---|
|
||||
| Common | 50% | Base stats |
|
||||
| Fine | 25% | +10% stats |
|
||||
| Superior | 15% | +25% stats |
|
||||
| Exceptional | 7% | +50% stats |
|
||||
| Masterwork | 2.5% | +100% stats |
|
||||
| Legendary | 0.5% | +200% stats + unique affix |
|
||||
|
||||
### Crafting Crits (RoleMaster-inspired)
|
||||
- Small chance of exceptional result regardless of skill level (mirrors combat crit system)
|
||||
- d100 roll on craft: 96+ triggers a crafting crit → quality tier upgraded by 1-2 levels
|
||||
- High skill level improves base quality but crits can happen to anyone
|
||||
|
||||
### Recipe Discovery
|
||||
- **Taught recipes**: From education courses, guild rank rewards
|
||||
- **Adventure drops**: Recipe scrolls found in dungeons
|
||||
- **Experimentation**: Combine materials with a chance to discover a new recipe (消耗 materials on failure)
|
||||
- **Seasonal events**: Limited-time recipes
|
||||
|
||||
---
|
||||
|
||||
## The Inn — Social Hub (Deep Dive)
|
||||
|
||||
**The Singing Tavern** is the central social hub of Skara Brae, inspired by Idle Fantasy's Inn system.
|
||||
|
||||
### Social Features
|
||||
- **Chat rooms**: General, trade, guild recruitment, district-specific, roleplay
|
||||
- **Rumors board**: NPC-posted hints about adventures, dungeon openings, rare spawns, upcoming events
|
||||
- **Bounty board**: Player-posted and NPC-posted bounties on other players
|
||||
- **Barter table**: Direct player-to-player trading (avoid market fees) — face-to-face exchange
|
||||
|
||||
### Minigames & Gambling
|
||||
- **Dice games**: Roll dice against other players or the house
|
||||
- **Card games**: Fantasy-themed card game (simplified poker variant)
|
||||
- **Arm wrestling**: Strength-based contest (simple stat check with randomness)
|
||||
- **Drinking contest**: Constitution-based, winner gets bragging rights + temporary charisma bonus
|
||||
|
||||
### Rest & Recovery
|
||||
- **Energy/HP/Mana recovery** at a rate determined by inn quality (tied to property system)
|
||||
- Basic room: 1× recovery rate
|
||||
- Quality room: 1.5× recovery rate
|
||||
- Luxury suite: 2× recovery rate
|
||||
- Members with properties can rest at home for variable rates
|
||||
|
||||
### Carousing
|
||||
- Spend gold to temporarily boost charisma (affects next N trades, conversations, or persuasion attempts)
|
||||
- Duration: Until you complete N social interactions or time expires
|
||||
- Risk: Overdoing it can result in "hangover" debuff (-agility for 1 hour)
|
||||
|
||||
### Innkeeper Daily Quests
|
||||
- **Madame Sylara** offers 3 daily quests from the inn
|
||||
- Quest types: "Collect information from X NPCs", "Deliver a message", "Win X gold gambling"
|
||||
- Rewards scale with difficulty
|
||||
|
||||
### Hire Workers (Idle Fantasy-inspired)
|
||||
The most distinctive feature from Idle Fantasy — **hire NPCs to automate tasks**:
|
||||
|
||||
| Worker | Task | Efficiency | Cost |
|
||||
|---|---|---|---|
|
||||
| **Mercenary** | Runs adventures while offline | 60% of normal rewards | Gold/hour |
|
||||
| **Apprentice** | Trains a skill while offline | 50% of active rate | Gold/hour |
|
||||
| **Gatherer** | Collects basic materials | Low-tier materials only | Gold/hour |
|
||||
|
||||
- Worker quality tiers: Novice → Journeyman → Expert (better rates, higher cost)
|
||||
- Workers consume your energy while active
|
||||
- Creates a meaningful **gold sink** for veteran players
|
||||
- Buy **provisions** in bulk (food, potions, torches) for dungeon expeditions
|
||||
|
||||
---
|
||||
|
||||
## Pets (Deep Dive)
|
||||
|
||||
### Acquisition
|
||||
- **Taming**: Wild encounters in the Wilds (skill check, rare success)
|
||||
- **Purchase**: Pet trader in the Market Square
|
||||
- **Breeding**: Combine two pets for a chance at rare offspring with combined bonuses
|
||||
- **Quest rewards**: Specific pets from storyline/side quests
|
||||
- **Rare enemy drops**: Dungeon bosses and rare spawns can drop pet eggs/whistles
|
||||
- **Seasonal events**: Limited-time pets
|
||||
|
||||
### Pet Rarity Tiers
|
||||
Common → Uncommon → Rare → Epic → Legendary → Mythic
|
||||
|
||||
### Pet Types & Bonuses
|
||||
| Pet | Bonus |
|
||||
|---|---|
|
||||
| Wolf | +tracking, +combat XP |
|
||||
| Raven | +scouting, +perception |
|
||||
| Cat | +stealth, +thievery XP |
|
||||
| Owl | +magic XP, +wisdom |
|
||||
| Hound | +combat damage, +slayer XP |
|
||||
| Toad | +poison resistance, +alchemy XP |
|
||||
| Hawk | +ranged accuracy, +gathering yield |
|
||||
|
||||
### Pet Mechanics
|
||||
- **Active pet**: One pet follows you (visible in combat), providing its passive bonus
|
||||
- **Pet stable**: Store up to N pets (expandable via property upgrades)
|
||||
- **Pet aging**: Pets grow over time, increasing their bonus at milestones (1 week, 1 month, 6 months)
|
||||
- **Pet death**: Pets can be killed in PvP ambush (creates real stakes) — resurrected at Temple Row for gold
|
||||
- **Pet equipment**: Collars, armor, trinkets — crafted or found. Enhance pet bonuses.
|
||||
- **Pet breeding**: Combine two pets → offspring has a chance of inheriting combined bonuses or rare mutation
|
||||
|
||||
---
|
||||
|
||||
## Guilds (Deep Dive)
|
||||
|
||||
### Guild Hall Upgrades
|
||||
| Upgrade | Effect | Build Cost |
|
||||
|---|---|---|
|
||||
| **Training Grounds** | +X% stat training speed for members | Gold + materials |
|
||||
| **Library** | +X% education course speed | Gold + enchanted books |
|
||||
| **Vault** | Shared storage for members | Gold + crafted locks |
|
||||
| **War Room** | Plan raids, view territory map | Gold + cartography tools |
|
||||
| **Brewery** | Member happiness → reduced quit rate, social bonuses | Gold + cooking supplies |
|
||||
| **Infirmary** | Faster HP/energy recovery for members | Gold + alchemy supplies |
|
||||
| **Enchanting Lab** | +X% enchanting quality for members | Gold + rare reagents |
|
||||
|
||||
### Guild Taxation
|
||||
- Configurable tax rate on member earnings: **0-25%**
|
||||
- Tax gold flows into guild treasury
|
||||
- Guildmaster and officers set the rate
|
||||
- High tax → more treasury for upgrades, but member dissatisfaction
|
||||
|
||||
### Guild Alliances
|
||||
- Formal treaties between guilds: shared chat, coordinated raids, non-aggression pacts
|
||||
- Alliance leaderboard
|
||||
- Alliance vs. alliance wars for territory control
|
||||
|
||||
### Guild Territories
|
||||
- Control of city districts provides bonuses to all guild members in that district
|
||||
- Territory gained through guild wars and maintained through activity
|
||||
- District bonuses: Market Square (reduced listing fees), Harbor (trade route bonuses), etc.
|
||||
|
||||
### Guild Rank Progression (Idle Fantasy-inspired)
|
||||
- **10 rank levels** per guild: Initiate → Apprentice → Journeyman → Expert → Veteran → Elite → Champion → Master → Grandmaster → Legend
|
||||
- **Daily guild tasks**: Complete for reputation points
|
||||
- **Rank-up quests**: Progression quests to advance in guild rank
|
||||
- **Cross-skill rewards**: Higher ranks unlock resources from skills you don't personally train
|
||||
- **Guild reputation**: Decayed by inactivity, increased by events, raids, member achievements
|
||||
|
||||
### Guild Bank
|
||||
- Shared treasury with withdrawal permissions by rank
|
||||
- Deposit logs visible to officers+
|
||||
- Withdrawal limits configurable by rank
|
||||
|
||||
---
|
||||
|
||||
## Blessings / Church (Idle Fantasy-inspired)
|
||||
|
||||
- **Temple Row** offers blessings from the Old Gods
|
||||
- **Blessing types**: XP boost (up to 1.5×), Damage reduction, Gold multiplier, Crit chance increase
|
||||
- **Duration**: Based on Wisdom stat and offering quality
|
||||
- **One blessing active** at a time
|
||||
- **Offerings**: Gold, rare items, bones from undead enemies
|
||||
- Higher Wisdom = longer duration, stronger effect
|
||||
- Adds "buff management" layer without being tedious
|
||||
|
||||
---
|
||||
|
||||
## Slayer Tasks (Idle Fantasy-inspired)
|
||||
|
||||
- **Captain Rennick** at City Watch HQ gives slayer tasks (lawful targets)
|
||||
- **The Beggar King** gives underground slayer tasks (criminal targets)
|
||||
- "Kill 15 skeletal warriors in the Undercity" → bonus Slayer XP + gold reward
|
||||
- Slayer level unlocks tougher targets with better rewards
|
||||
- Ties into the bounty system naturally
|
||||
|
||||
---
|
||||
|
||||
## Character System
|
||||
|
||||
### Races
|
||||
| Race | Bonus | Penalty |
|
||||
|---|---|---|
|
||||
| Human | Balanced, bonus to charisma | None (jack of all trades) |
|
||||
| Dwarf | Constitution +, Smithing + | Agility - |
|
||||
| Elf | Magic +, Perception + | Strength - |
|
||||
| Halfling | Agility +, Thievery + | Strength - |
|
||||
| Orc | Strength +, Intimidation + | Intelligence - |
|
||||
| Half-Elf | Charisma +, Magic + | Constitution - |
|
||||
|
||||
### Classes (determine starting skills and education paths)
|
||||
- **Warrior** — Melee combat, tanking
|
||||
- **Rogue** — Stealth, thievery, poison
|
||||
- **Mage** — Offensive magic, enchanting
|
||||
- **Bard** — Buffs, social skills, lore
|
||||
- **Cleric** — Healing, protection, undead turning
|
||||
- **Ranger** — Ranged combat, tracking, survival
|
||||
|
||||
### Stats (BIGINT — exponential growth)
|
||||
- **Strength** — Physical damage, carrying capacity
|
||||
- **Agility** — Dodge, stealth, thievery
|
||||
- **Constitution** — HP, endurance, poison resistance
|
||||
- **Intelligence** — Magic power, crafting quality
|
||||
- **Wisdom** — Mana, perception, healing power, blessing duration
|
||||
- **Charisma** — Trading prices, faction relations, bardic abilities
|
||||
|
||||
Stats only ever go up. Display tiered: `1.2K`, `4.7M`, `1.2B`, `3.8T`. See [Combat System & Stat Scaling Design](joplin://0ef630db4e3e4d6dab18ccaefccaaa5a).
|
||||
|
||||
### Skills (leveled through use)
|
||||
- Weapon skills (sword, axe, bow, staff, etc.)
|
||||
- Thievery (lockpicking, pickpocketing, sneaking)
|
||||
- Magic schools (fire, ice, illusion, necromancy, etc.)
|
||||
- Crafting (alchemy, blacksmithing, enchanting, tailoring, jewelcrafting, fletching, cooking)
|
||||
- Gathering (mining, herbalism, woodcutting, fishing, skinning)
|
||||
- Social (persuasion, intimidation, bartering)
|
||||
- Support (mercantile/trading, slayer/bounty hunting)
|
||||
|
||||
---
|
||||
|
||||
## Technology Stack
|
||||
|
||||
### Backend — Rust
|
||||
| Component | Technology | Rationale |
|
||||
|---|---|---|
|
||||
| HTTP Framework | **Axum** | Modern, ergonomic, excellent ecosystem, tower middleware |
|
||||
| Real-time | **WebSocket** via axum + tokio-tungstenite | Live combat, chat, notifications |
|
||||
| Database | **PostgreSQL** + **SQLx** | ACID compliance, relational data fits game entities well |
|
||||
| Cache/Sessions | **Redis** | Session tokens, leaderboards, rate limiting, real-time pub/sub |
|
||||
| Auth | **JWT** (jsonwebtoken crate) | Stateless auth, API-friendly |
|
||||
| Background Jobs | **tokio** tasks + custom scheduler | Timers for cooldowns, education courses, guild wars |
|
||||
| Migrations | **sqlx-cli** or **refinery** | Database schema versioning |
|
||||
| Serialization | **serde** + **serde_json** | JSON API, message passing |
|
||||
| Game Tick Engine | Custom event loop on **tokio** | Time-based game events (day/night cycle, weather, offline rewards) |
|
||||
|
||||
### Frontend — Vue.js
|
||||
| Component | Technology | Rationale |
|
||||
|---|---|---|
|
||||
| Framework | **Vue 3** + **Composition API** | Modern, reactive, good for complex UIs |
|
||||
| Build Tool | **Vite** | Fast dev server, optimized builds |
|
||||
| State Management | **Pinia** | Type-safe, modular stores for game state |
|
||||
| Routing | **Vue Router** | SPA navigation |
|
||||
| UI Framework | **PrimeVue** or custom dark fantasy theme | Rich component library |
|
||||
| Real-time | **WebSocket client** (native) | Live updates, combat, chat |
|
||||
| HTTP Client | **Axios** or **fetch API** | REST API calls |
|
||||
| Mobile | **PWA** or **Capacitor** | Native-like mobile experience |
|
||||
|
||||
### Infrastructure
|
||||
| Component | Technology |
|
||||
|---|---|
|
||||
| Containerization | Docker + docker-compose |
|
||||
| Reverse Proxy | Caddy or nginx |
|
||||
| CI/CD | GitHub Actions |
|
||||
| Monitoring | Prometheus + Grafana |
|
||||
| Logging | tracing crate (Rust) → structured JSON logs |
|
||||
|
||||
---
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────┐
|
||||
│ Frontend (Vue 3) │
|
||||
│ ┌─────────┐ ┌─────────┐ ┌──────────┐ ┌───────┐ │
|
||||
│ │ REST API │ │WebSocket│ │ State │ │ PWA │ │
|
||||
│ │ Client │ │ Client │ │ (Pinia) │ │ Shell │ │
|
||||
│ └────┬─────┘ └────┬────┘ └──────────┘ └───────┘ │
|
||||
└───────┼────────────┼──────────────────────────────┘
|
||||
│ HTTP/REST │ WS
|
||||
▼ ▼
|
||||
┌──────────────────────────────────────────────────┐
|
||||
│ API Gateway (Axum) │
|
||||
│ ┌──────────┐ ┌──────────────┐ ┌───────────────┐ │
|
||||
│ │ Auth │ │ Rate Limiter │ │ WS Handler │ │
|
||||
│ │ Middleware│ │ │ │ │ │
|
||||
│ └──────────┘ └──────────────┘ └───────────────┘ │
|
||||
├──────────────────────────────────────────────────┤
|
||||
│ Game Services (Rust) │
|
||||
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌───────────┐ │
|
||||
│ │ Player │ │ Combat │ │ Economy│ │ Guild │ │
|
||||
│ │Service │ │Service │ │Service │ │ Service │ │
|
||||
│ ├────────┤ ├────────┤ ├────────┤ ├───────────┤ │
|
||||
│ │Adventure│ │ World │ │ Market │ │ Chat & │ │
|
||||
│ │Service │ │Service │ │Service │ │ Social │ │
|
||||
│ ├────────┤ ├────────┤ ├────────┤ ├───────────┤ │
|
||||
│ │Crafting│ │ Pet │ │Blessing│ │ Worker │ │
|
||||
│ │Service │ │Service │ │Service │ │ Service │ │
|
||||
│ └────────┘ └────────┘ └────────┘ └───────────┘ │
|
||||
├──────────────────────────────────────────────────┤
|
||||
│ Game Engine Core │
|
||||
│ ┌────────────┐ ┌───────────┐ ┌───────────────┐ │
|
||||
│ │ Tick/Sched │ │ Event Bus │ │ Rule Engine │ │
|
||||
│ │ (timers) │ │ (pub/sub) │ │ (formulas) │ │
|
||||
│ └────────────┘ └───────────┘ └───────────────┘ │
|
||||
├──────────────────────────────────────────────────┤
|
||||
│ Data Layer │
|
||||
│ ┌──────────────┐ ┌──────────┐ ┌───────────┐ │
|
||||
│ │ PostgreSQL │ │ Redis │ │ S3/Minio │ │
|
||||
│ │ (persistent)│ │ (cache) │ │ (assets) │ │
|
||||
│ └──────────────┘ └──────────┘ └───────────┘ │
|
||||
└──────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API Design (RESTful + WebSocket)
|
||||
|
||||
### REST Endpoints (examples)
|
||||
|
||||
```
|
||||
# Authentication
|
||||
POST /api/auth/register
|
||||
POST /api/auth/login
|
||||
POST /api/auth/refresh
|
||||
|
||||
# Character
|
||||
GET /api/character
|
||||
PUT /api/character
|
||||
GET /api/character/stats
|
||||
GET /api/character/skills
|
||||
PUT /api/character/train/:skill
|
||||
|
||||
# Adventures
|
||||
GET /api/adventures/available
|
||||
POST /api/adventures/embark/:id
|
||||
GET /api/adventures/history
|
||||
GET /api/adventures/offline-rewards # Collect offline session rewards
|
||||
|
||||
# Combat
|
||||
POST /api/combat/arena/challenge/:target_id
|
||||
POST /api/combat/ambush/:target_id
|
||||
GET /api/combat/arena/leaderboard
|
||||
|
||||
# Economy
|
||||
GET /api/market/items
|
||||
POST /api/market/list
|
||||
POST /api/market/buy/:listing_id
|
||||
GET /api/bank/balance
|
||||
POST /api/bank/deposit
|
||||
POST /api/bank/withdraw
|
||||
|
||||
# Crafting
|
||||
GET /api/crafting/recipes
|
||||
POST /api/crafting/craft/:recipe_id
|
||||
GET /api/crafting/professions
|
||||
|
||||
# Pets
|
||||
GET /api/pets
|
||||
POST /api/pets/activate/:pet_id
|
||||
POST /api/pets/breed
|
||||
GET /api/pets/stable
|
||||
|
||||
# Guilds
|
||||
GET /api/guild
|
||||
POST /api/guild/create
|
||||
POST /api/guild/:id/join
|
||||
GET /api/guild/:id/members
|
||||
POST /api/guild/:id/raid
|
||||
GET /api/guild/:id/rank-quests
|
||||
|
||||
# Properties
|
||||
GET /api/properties
|
||||
POST /api/properties/:id/buy
|
||||
PUT /api/properties/:id/upgrade
|
||||
|
||||
# Education
|
||||
GET /api/education/available
|
||||
POST /api/education/enroll/:course_id
|
||||
GET /api/education/progress
|
||||
|
||||
# Blessings
|
||||
GET /api/blessings/available
|
||||
POST /api/blessings/activate/:blessing_id
|
||||
GET /api/blessings/active
|
||||
|
||||
# Inn / Workers
|
||||
GET /api/inn/workers
|
||||
POST /api/inn/hire/:worker_type
|
||||
POST /api/inn/dismiss/:worker_id
|
||||
GET /api/inn/quests # Daily innkeeper quests
|
||||
|
||||
# Slayer
|
||||
GET /api/slayer/task
|
||||
POST /api/slayer/claim-reward
|
||||
```
|
||||
|
||||
### WebSocket Channels
|
||||
```
|
||||
ws://server/ws?token=JWT
|
||||
|
||||
# Client → Server
|
||||
{ "type": "combat:action", "data": { "action": "attack", "target": "enemy_1" } }
|
||||
{ "type": "chat:message", "data": { "channel": "guild", "message": "..." } }
|
||||
|
||||
# Server → Client
|
||||
{ "type": "combat:result", "data": { "damage": 42, "enemy_hp": 158, "crit": false } }
|
||||
{ "type": "combat:crit", "data": { "roll": 147, "effect": "bleed", "duration": 5 } }
|
||||
{ "type": "notification", "data": { "text": "Your adventure has completed!" } }
|
||||
{ "type": "market:update", "data": { "item": "...", "price": 500 } }
|
||||
{ "type": "adventure:offline_rewards", "data": { "gold": 1247, "xp": 5300, "items": [...] } }
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Monetization (Ethical F2P)
|
||||
|
||||
- **Patron Subscription** (→ Torn's donator packs): Monthly sub providing QoL benefits (extra energy, custom themes, expanded log, etc.) — no pay-to-win
|
||||
- **Cosmetics**: Character portraits, UI themes, custom titles
|
||||
- **Convenience**: Extra character slots, extended history logs, extra pet stable slots
|
||||
- **No**: Pay-to-win items, selling power, loot boxes
|
||||
|
||||
---
|
||||
|
||||
## MVP Scope (Phase 1)
|
||||
|
||||
1. User registration, authentication, character creation (race + class)
|
||||
2. Basic stat/skill system with training (BIGINT stats)
|
||||
3. Adventure system (5-10 adventures across difficulty tiers)
|
||||
4. Turn-based combat engine with crit tables
|
||||
5. Basic economy: inventory, bazaar (buy/sell), bank
|
||||
6. Guild creation and membership
|
||||
7. REST API + basic Vue.js frontend
|
||||
8. Real-time notifications via WebSocket
|
||||
9. Offline adventure rewards collection
|
||||
10. Basic crafting (2-3 professions)
|
||||
|
||||
---
|
||||
|
||||
## Future Phases
|
||||
|
||||
- **Phase 2**: PvP arena, guild wars, properties, education system, pets, blessings
|
||||
- **Phase 3**: Full storyline/quests, dynamic world events, day/night cycle, inn workers, slayer tasks
|
||||
- **Phase 4**: Mobile app (Capacitor), merchant ventures (stock market), advanced crafting, pet breeding
|
||||
- **Phase 5**: Community API, mod support, tournament system
|
||||
|
||||
---
|
||||
|
||||
## Related Design Notes
|
||||
|
||||
| Note | ID | Content |
|
||||
|---|---|---|
|
||||
| [Combat System & Stat Scaling Design](joplin://0ef630db4e3e4d6dab18ccaefccaaa5a) | `0ef630db4e3e4d6dab18ccaefccaaa5a` | RoleMaster + Torn hybrid combat, crit tables, stat scaling |
|
||||
| [Idle Fantasy Inspirations](joplin://48b3a3c76f734c8dafbbf9e8b3b5f80a) | `48b3a3c76f734c8dafbbf9e8b3b5f80a` | Idle RPG mechanics, offline sessions, workers, pets |
|
||||
| [Lore & World Building](joplin://867bdc9845624908a90928887a71c4c9) | `867bdc9845624908a90928887a71c4c9` | 10 city districts, 8 key NPCs, 5-act storyline |
|
||||
| [Tech Stack & Architecture](joplin://cecd2ef2690d4d1fba3450342aa63953) | `cecd2ef2690d4d1fba3450342aa63953` | Rust workspace, Vue frontend, database schema |
|
||||
| [Project Plan](joplin://d243ae57778343fca997d46b73d0ee3b) | `d243ae57778343fca997d46b73d0ee3b` | Roadmap, MVP scope, repository structure |
|
||||
Loading…
Add table
Add a link
Reference in a new issue