From 637033f51fa1d9c86b231e00f1f1556b9100aef0 Mon Sep 17 00:00:00 2001 From: "Chris Ling (bjamba)" Date: Wed, 13 May 2026 12:11:52 -0700 Subject: [PATCH 1/3] Design: Tokade tab v1 spec (Tokegotchi + Achievements) + ADR-0005 docs/02-design/TOKADE_TAB.md - Vision, out-of-scope, ASCII tab layout - Tokegotchi: vitals (Energy, Hunger, Mood), mood-state mapping table, speech lines, age tracking, persistence at ~/.tokade/history/tokegotchi.json - Achievements: 24 v1 badges across Volume, Model coverage, Tools+skills, Rhythm, Budget, Project flavor, Tokegotchi-linked - Telemetry contract pointer to ADR docs/adr/0005-tokade-tab-data-architecture.md - TelemetrySnapshot value type as the single read interface - Game protocol; @MainActor; one-file-per-game registration via allGames - GameStateStore actor as the single write interface (~/.tokade/games/, 0600) - File layout under Sources/Tokade/Tokade/ - Persistence rules - Three CLAUDE.md rules to add when v1 ships - Alternatives considered Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/02-design/TOKADE_TAB.md | 319 ++++++++++++++++++ docs/adr/0005-tokade-tab-data-architecture.md | 214 ++++++++++++ 2 files changed, 533 insertions(+) create mode 100644 docs/02-design/TOKADE_TAB.md create mode 100644 docs/adr/0005-tokade-tab-data-architecture.md diff --git a/docs/02-design/TOKADE_TAB.md b/docs/02-design/TOKADE_TAB.md new file mode 100644 index 0000000..85defc2 --- /dev/null +++ b/docs/02-design/TOKADE_TAB.md @@ -0,0 +1,319 @@ +# Tokade tab — design doc + +> **Last reviewed**: 2026-05-13 +> **Owner**: @bjamba +> **Status**: design draft (not implemented) +> **Companion ADR**: [0005-tokade-tab-data-architecture.md](../adr/0005-tokade-tab-data-architecture.md) + +## Vision + +A fourth top-level tab that hosts a small library of light "games" coupled +to your real Claude Code telemetry. The games don't simulate Claude +usage — they *consume* it. Empty install = empty tab. The point is to +make patterns visible, make milestones feel earned, and (eventually) +turn a number on a chart into something with personality. + +v1 ships with two features: + +- **Achievements** — auto-detected badges for usage patterns. Passive, + observational, immediate-reward. +- **Tokegotchi** — a single pet that lives in a card. Mood and vitals + driven by your current rate-limit state and recent activity. Active in + the sense that it changes over time, but no input gameplay yet. + +The tab is built so that adding a third or tenth game is the same shape +as adding the second. See the +[companion ADR](../adr/0005-tokade-tab-data-architecture.md) for the +architecture. + +## Out of scope for v1 + +- Any game requiring keyboard input (Snake, Tetris, etc. — explicitly + deferred to v2) +- Multiplayer / leaderboards / social +- Network calls of any kind — the no-network promise stands +- Custom art assets — start with SF Symbols and unicode +- User-naming the Tokegotchi (lock the name in v1; revisit) + +## Tab layout + +``` +┌─────────────────────────────────────────────────────────┐ +│ Tokade tab │ +├─────────────────────────────────────────────────────────┤ +│ │ +│ ┌───────────────────────────────────────────────────┐ │ +│ │ Tokegotchi │ │ +│ │ ───────────── │ │ +│ │ ╭───╮ Boba │ │ +│ │ │ ◕‿◕ │ Status: content │ │ +│ │ ╰───╯ Born: 2026-04-22 (Day 21) │ │ +│ │ │ │ +│ │ Energy ████████░░ 82% │ │ +│ │ Hunger ██████░░░░ 62% │ │ +│ │ Mood ███████░░░ 73% │ │ +│ │ │ │ +│ │ "I'm cozy. Send me an Opus message later 🌟" │ │ +│ └───────────────────────────────────────────────────┘ │ +│ │ +│ ┌───────────────────────────────────────────────────┐ │ +│ │ Achievements 12 / 24 earned │ │ +│ │ ───────────── │ │ +│ │ 🏅 First message Apr 22 │ │ +│ │ 🏅 Lifetime: 1M tokens Apr 28 │ │ +│ │ 🏅 First Opus message Apr 22 │ │ +│ │ 🏅 3-day streak Apr 24 │ │ +│ │ 🏅 7-day streak Apr 29 │ │ +│ │ 🏅 … │ │ +│ │ 🔒 Lifetime: 100M tokens │ │ +│ │ 🔒 30-day streak │ │ +│ │ … (Show all) │ │ +│ └───────────────────────────────────────────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────┘ +``` + +## Tokegotchi specification + +### Identity + +- Lives in a single card at the top of the Tokade tab +- Has a fixed name `Boba` in v1 (we'll let users rename in a later milestone) +- Has a "birthday" = the timestamp of the user's first archived event +- Has an "age" in days computed from birthday + +### Vitals + +Three meters, each a percentage 0–100. Computed from telemetry on every +30-second poll. Updates live. + +| Vital | Source | Mapping | +|-------|--------|---------| +| **Energy** | `100 - current_5h_pct` | High = window fresh; low = window almost spent | +| **Hunger** | Time since last event in `events` | 100% if last event ≤ 12h ago; linearly drops to 0% at 7 days | +| **Mood** | `(Energy + Hunger) / 2`, optionally biased by `Tokegotchi.streak` (3+ consecutive active days nudges Mood up by 10) | Composite | + +Display as three short horizontal bars colored by the existing palette +(blue family). When any vital drops below 25%, that bar turns amber. + +### Mood states + speech + +Mood determines a single sprite + speech line shown in the card. The +sprite is a unicode-art expression rendered in a monospace font. + +| Mood band | Sprite (illustrative) | Sample lines | +|-----------|----------------------|--------------| +| 80–100 | `╭───╮` / `│ ◕‿◕ │` / `╰───╯` | "I'm cozy. 🌟" · "Plenty of budget left. Keep cooking." | +| 60–79 | `╭───╮` / `│ ·_· │` / `╰───╯` | "Good pace today." · "Steady. Boba approves." | +| 40–59 | `╭───╮` / `│ -_- │` / `╰───╯` | "You're using me a lot. Pace yourself." | +| 20–39 | `╭───╮` / `│ >_< │` / `╰───╯` | "Burning hot. Window won't last." · "Maybe a Sonnet for the next one?" | +| 0–19 | `╭───╮` / `│ x_x │` / `╰───╯` | "You hit the cap. Boba needs a nap." (locked emoji 😴) | + +Three speech lines per band, rotated daily by hash(date + line index) so +the same line doesn't appear two days running. Lines live in a single +file (`Sources/Tokade/Arcade/Tokegotchi/Lines.swift`) so they're easy to +edit and contribute to. + +Special override: when `isFiveHourDataStale(rateLimits)` is true, mood +flips to "asleep" with sprite `( - . - ) zzz`. The pet sleeps through +windows you're not using. + +### Life cycle / age + +Boba doesn't reset, evolve, or die in v1. There's a single Tokegotchi +that grows older over time. Age in days is shown next to the name. + +Future (v1.1): an "evolutions" system where Boba changes appearance at +milestones (Day 7, Day 30, Day 100). v1 does **not** ship this — the +sprite is fixed across the age dimension. We just track + display age. + +### Persistence + +A single JSON file at `~/.tokade/history/tokegotchi.json`: + +```json +{ + "name": "Boba", + "bornAt": "2026-04-22T18:12:04Z", + "lastSeenMoodBand": 60, + "todaysLineIndex": 1 +} +``` + +Created on first launch from the user's earliest archived event. Updated +on each poll. File permissions: 0600 (same as other archive files). + +If the file is missing or corrupt, recreate from `events.jsonl`'s +earliest event. If `events.jsonl` is also empty, Boba enters an "egg" +state until the first event lands. + +## Achievements specification + +### Definition shape + +Each achievement is a value type with: + +- `id: String` — stable identifier (e.g. `"lifetime-1m-tokens"`) +- `title: String` — display name +- `description: String` — one sentence +- `icon: String` — SF Symbol or emoji +- `predicate: (TelemetrySnapshot) -> Bool` — pure function over the + current state. Called on every poll; once true, sticky. + +Stickiness: once earned, the achievement records its `earnedAt: Date` +and never re-evaluates. We persist the entire earned set; predicates run +only for unearned items. + +### Initial v1 badge set (24) + +**Volume** + +| id | title | predicate | +|----|-------|-----------| +| `lifetime-1m` | First million | total tokens ≥ 1M | +| `lifetime-100m` | Heavy hitter | total tokens ≥ 100M | +| `lifetime-1b` | One billion | total tokens ≥ 1B | +| `lifetime-10b` | Token whale | total tokens ≥ 10B | + +**Model coverage** + +| id | title | predicate | +|----|-------|-----------| +| `first-haiku` | Hello, Haiku | any event with model containing "haiku" | +| `first-sonnet` | Hello, Sonnet | … "sonnet" | +| `first-opus` | Hello, Opus | … "opus" | +| `polyglot-day` | Three-model day | all three tiers used same calendar day | + +**Tools and skills** + +| id | title | predicate | +|----|-------|-----------| +| `tool-set-bero` | Bash · Edit · Read · Other | all of {Bash, Edit, Read, Write} in one session | +| `skill-sampler` | Skill sampler | 5 distinct slash commands used lifetime | +| `skill-explorer` | New tool | invoked a slash command never used before | + +**Rhythm** + +| id | title | predicate | +|----|-------|-----------| +| `streak-3` | 3-day streak | activity 3 consecutive calendar days | +| `streak-7` | 7-day streak | activity 7 consecutive days | +| `streak-30` | 30-day streak | activity 30 consecutive days | +| `early-bird` | Early bird | 3 sessions before 7am | +| `night-owl` | Night owl | 3 sessions between midnight and 4am | + +**Budget** + +| id | title | predicate | +|----|-------|-----------| +| `window-survivor` | Window survivor | finished a 5h window between 90–99% utilization | +| `near-miss` | Walked the line | finished a 7d window between 95–99% | +| `capped` | Maxed out | hit 100% on any window (badge of honor or shame, ymmv) | +| `cache-pro` | Cache pro | `cache_read / total_input ≥ 70%` for a 7-day stretch | + +**Project flavor** + +| id | title | predicate | +|----|-------|-----------| +| `multi-project` | Multitasker | events from 3+ distinct cwds in one day | +| `deep-dive` | Deep dive | a single session ≥ 1M tokens | +| `marathon` | Marathon | a single session ≥ 4 hours wall-clock | + +**Tokegotchi-linked** + +| id | title | predicate | +|----|-------|-----------| +| `boba-first-week` | Boba's first week | Tokegotchi age ≥ 7 days | +| `boba-survived-cap` | Boba survived the cap | hit 100% window without going idle for 24h after | + +That's 24 badges. Reasonable for a v1 gallery: ~half achievable in the +first month of use, ~quarter in the first day, ~quarter as long-term goals. + +### UI shape + +Achievements card body: + +- Header: `Achievements N / 24 earned` +- List view, sorted: earned first (newest first), then locked (in catalog order) +- Each row: icon + title + (earned: date) | (locked: lock emoji) +- "Show all" expands the locked section if >5 hidden +- Tooltip on hover: full description + predicate explanation + +Tap a badge: opens a sheet with the badge's description + a small chart +or stat showing your progress toward it (e.g., for `lifetime-1b`, a +horizontal progress bar with current total vs. 1B). Sheet is read-only. + +### Persistence + +A single JSON file at `~/.tokade/history/achievements.json`: + +```json +{ + "earned": { + "lifetime-1m": "2026-04-28T12:33:01Z", + "first-opus": "2026-04-22T18:13:11Z", + "streak-3": "2026-04-24T09:00:00Z" + } +} +``` + +On startup, load earned set. On each poll, evaluate unearned predicates +against the current `TelemetrySnapshot`. If any flip to true, record +`earnedAt: now`, persist, fire a one-shot notification banner +("🏅 First million tokens — earned"). + +File permissions: 0600. + +### Notification banner + +A minimal toast in the panel for newly-earned badges, dismissable. No +macOS-level notification — we don't have `NSUserNotification` permissions +and the bar for Tier 2 OSS doesn't include them. + +## Telemetry contract + +The Tokegotchi card and the Achievement predicates both consume a +shared **`TelemetrySnapshot`** value type computed once per poll: + +```swift +struct TelemetrySnapshot { + let now: Date + let events: [UsageEvent] + let snapshots: [UsageSnapshot] + let rateLimits: RateLimitSnapshot? + + // Derived; cached. + let currentFiveHourPct: Double? + let currentSevenDayPct: Double? + let totalTokens: Int + let lastEventAt: Date? + let dailyActiveStreak: Int +} +``` + +The exact shape and computation rules live in +[ADR-0005](../adr/0005-tokade-tab-data-architecture.md). + +## Open questions + +These need an answer before we ship v1 but don't block design review: + +1. **Naming the pet.** v1 hardcodes "Boba." Should we ship a "rename" + action and persist user choice? Adds a settings sheet. (Lean: defer.) +2. **Notification banner styling.** Toast-in-panel vs. a small badge that + dot-appears next to the Tokade tab label like "GitHub notifications + count" on the segmented control? (Lean: dot indicator.) +3. **What happens if `~/.claude/projects/` is empty?** Achievements + gallery still shows the locked list. Tokegotchi enters an "egg" state + with no animation. (Lean: yes.) + +## Future (v2+) + +- Snake / Breakout as the first playable game +- Tokegotchi evolutions at age milestones (Day 7, 30, 100) +- Tokegotchi customization (rename, color tint from model mix) +- A "year-in-Claude" Polaroid view as a third game-card +- Daily oracle: fortune-cookie line from yesterday's usage +- Plant-a-tree garden (token volume = growth rate) +- Idle factory (in-game tokens earned from real tokens 1:1000) +- Achievement leaderboards (anonymized, opt-in, would break no-network) diff --git a/docs/adr/0005-tokade-tab-data-architecture.md b/docs/adr/0005-tokade-tab-data-architecture.md new file mode 100644 index 0000000..20821cc --- /dev/null +++ b/docs/adr/0005-tokade-tab-data-architecture.md @@ -0,0 +1,214 @@ +# ADR 0005 — Tokade tab data architecture + +- **Status**: Accepted (design draft) +- **Date**: 2026-05-13 +- **Deciders**: @bjamba +- **Companion**: [docs/02-design/TOKADE_TAB.md](../02-design/TOKADE_TAB.md) + +## Context + +The new Tokade tab will host a growing library of "games" (Tokegotchi and +Achievements in v1; Snake, Year-in-Claude, etc. queued for v2+). Each +game needs to consume Claude usage telemetry, persist some small amount +of state to disk, and be added/removed without disturbing other games or +the rest of the codebase. + +We could let each game reach into `UsageStore` directly and store its +own data wherever it likes. That works for two games but rots fast: + +- Five games each computing `current_5h_pct` from `rateLimits` slightly + differently produces five subtly different numbers +- Each new game touches `MenuView.swift` to register its tab content +- Persistence formats diverge — game A uses JSON, game B uses + `UserDefaults`, game C uses a `.plist` +- No place to enforce "games can't write outside `~/.tokade/games/`" + +This ADR locks down the contract before the first game ships, so the +boundary is the same shape for game #1 and game #10. + +## Decision + +### 1. `TelemetrySnapshot` is the read interface + +A single value type computed once per `UsageStore.refresh()`, passed +into every game and every achievement predicate. Games and predicates do +**not** read `UsageStore` directly — only `TelemetrySnapshot`. + +```swift +struct TelemetrySnapshot { + let now: Date + + // Raw — same arrays UsageStore holds. + let events: [UsageEvent] + let snapshots: [UsageSnapshot] + let rateLimits: RateLimitSnapshot? + + // Derived (computed lazily; cached on first access). + var currentFiveHourPct: Double? { /* … */ } + var currentSevenDayPct: Double? { /* … */ } + var totalLifetimeTokens: Int { /* … */ } + var lastEventAt: Date? { /* … */ } + var hoursSinceLastEvent: Double? { /* … */ } + var dailyActiveStreak: Int { /* … */ } + var modelsUsedToday: Set { /* … */ } + var distinctSlashCommandsLifetime: Set { /* … */ } + var distinctCwdsToday: Set { /* … */ } +} +``` + +`TelemetrySnapshot` lives at `Sources/Tokade/Tokade/TelemetrySnapshot.swift`. +Tests in `Tests/TokadeTests/TelemetrySnapshotTests.swift` lock the derived +fields against fixture event arrays. + +**Why a value type, not an actor or class:** snapshots are immutable; a +new one is built per refresh; games hold a reference to the latest one +via SwiftUI's @Observable propagation. No threading concerns. + +### 2. `Game` protocol + +```swift +@MainActor +protocol Game: Identifiable { + var id: String { get } // "tokegotchi", "achievements" + var title: String { get } // "Tokegotchi" + var icon: String { get } // SF Symbol name + func view(telemetry: TelemetrySnapshot) -> AnyView +} +``` + +A game is a value type that: +- Knows its name + icon +- Renders its UI given a snapshot +- May read/write its own state via `GameStateStore` (below) + +Games are registered once in `TokadeTab.allGames` (a static array). The +tab body iterates `allGames`, asks each for its view, and renders them +in a vertical stack of `Card`s. + +To add a new game: create one Swift file conforming to `Game`, append it +to `allGames`. No other file changes. **This is the success criterion +of the architecture.** + +### 3. `GameStateStore` is the write interface + +Every game persists its state through a single store: + +```swift +actor GameStateStore { + func read(_ type: T.Type, for gameId: String) async -> T? + func write(_ value: T, for gameId: String) async + func erase(gameId: String) async +} +``` + +Implementation: writes JSON to `~/.tokade/games/.json` with mode +`0600` (same promise as other archives). Atomic via `tmp + mv`. + +The "Erase history…" action in the panel footer calls +`GameStateStore.eraseAll()` and resets all game state. Tokegotchi +re-hatches from the first archived event; Achievements re-evaluate from +zero. + +### 4. File layout + +``` +Sources/Tokade/ +├── Tokade/ +│ ├── TokadeTab.swift # the new tab view + game registry +│ ├── TelemetrySnapshot.swift # the read interface +│ ├── GameStateStore.swift # the write interface +│ ├── Game.swift # the protocol +│ ├── Games/ +│ │ ├── Tokegotchi/ +│ │ │ ├── Tokegotchi.swift # game conforming to Game +│ │ │ ├── TokegotchiCard.swift # SwiftUI view +│ │ │ ├── TokegotchiState.swift # Codable state struct +│ │ │ ├── Mood.swift # mood band logic +│ │ │ └── Lines.swift # speech lines (data) +│ │ └── Achievements/ +│ │ ├── Achievements.swift # game conforming to Game +│ │ ├── AchievementsCard.swift # SwiftUI view (list + sheet) +│ │ ├── Achievement.swift # value type +│ │ └── Catalog.swift # the 24 v1 badges +``` + +The `Tokade/` subdirectory under `Sources/Tokade/` is deliberately +named — it's the *tab*, not the app namespace. (We considered `Arcade/` +to disambiguate; rejected because the user calls it the Tokade tab.) + +### 5. Persistence rules + +- All game state lives under `~/.tokade/games/` +- Each file is `.json`, owned by that game +- Files are `0600` +- Schema changes to a game's state require a new ADR or schema-versioned + Codable shape with `migrate()` logic +- Games **must not** write outside their own state file +- Games **must not** read other games' state files (use shared + `TelemetrySnapshot` for cross-game signals) + +### 6. Achievement-fire side effect + +Achievements need to fire a one-shot toast when newly earned. This is +the only place games are allowed a UI side-effect on the rest of the +panel. The mechanism: + +- `Achievements.tick(_ snapshot:)` returns a `[Achievement]` list of + newly-earned items in this tick +- `TokadeTab` reads that list, prepends them to an internal + `pendingToasts` array +- A `ToastOverlay` view in `MenuView` renders the queue with auto-dismiss + +No other game gets to push toasts in v1. + +### 7. CLAUDE.md rules added + +Three new enforceable rules: + +- **Games read telemetry only via `TelemetrySnapshot`.** No `UsageStore` + references inside `Sources/Tokade/Tokade/Games/`. Enforced by + `scripts/check.sh` grep. +- **Games persist only via `GameStateStore`.** No direct + `FileManager.write` calls inside `Sources/Tokade/Tokade/Games/`. + Enforced by `scripts/check.sh` grep. +- **Every game in `allGames` has a smoke test.** Just `view(snapshot:)` + returns without crashing on empty-data and on full-data snapshots. + Enforced by `scripts/check.sh` greppingfor `func test......` + in `Tests/TokadeTests/`. + +These get appended to `CLAUDE.md` when v1 ships. + +## Consequences + +**Positive** + +- New games are a one-file addition + one registry-line edit +- All telemetry derivations live in one place; no drift +- All game state lives in one place with consistent perms +- The "Erase history…" action correctly nukes game state too +- Future audits can grep `Sources/Tokade/Tokade/Games/` for compliance + +**Negative** + +- More indirection for game-1 than strictly needed. We're paying + architecture cost up front to enable games 2..N cheaply. +- `TelemetrySnapshot` has to keep growing as games request new derived + fields. Risk: a kitchen-sink type. Mitigation: lazy computation + + document each field's "who needs this" in the source comment. +- `GameStateStore` adds another actor; one more thing to manage Swift + concurrency around. + +## Alternatives considered + +- **Direct `UsageStore` access from each game.** Rejected as discussed + in Context. Doesn't scale past two games. +- **A single `GamesViewModel` that owns all game state.** Rejected; + putting Tokegotchi and Achievements in the same file (eventually + also Snake, Year-in-Claude, …) is exactly the monolith we're avoiding. +- **Use `UserDefaults` for game state.** Rejected; doesn't fit the + "your data is in `~/.tokade/`" promise, hard to inspect, doesn't + participate in "Erase history…" cleanly. +- **Make games SwiftUI views directly, no protocol.** Rejected; the + protocol gives us a registration list + uniform testing surface. + Without it, adding a game requires editing `TokadeTab` body in + multiple places. From 45cbaf72a98e0e5832487555ca1d6b06cae7f74c Mon Sep 17 00:00:00 2001 From: "Chris Ling (bjamba)" Date: Wed, 13 May 2026 16:45:50 -0700 Subject: [PATCH 2/3] =?UTF-8?q?Design:=20Tokade=20tab=20v1=20=E2=80=94=20R?= =?UTF-8?q?PG-style=20Tokegotchi=20system?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Captures the design that came out of an extended discussion across all six system layers: tick economy, state model, regions, encounters, aging/death, and skills. docs/02-design/TOKADE_TAB.md (rewritten from premature draft) - Player experience + game loop - Tab layout sketch - Six layers with concrete numbers, formulas, and tables - 49 v1 cosmetic items across 9 slots - Sprite + animation system summary (links to ADR) - Open questions deferred to v2+ docs/adr/0005-tokade-tab-rpg-system.md (replaces premature 0005) - Matrix-as-runtime, SVG-as-design pipeline - Palette parameterization by role (not RGB) - Cosmetic composition via z-ordered placeholders - Rig-based animation (per-part transforms) - State persistence at ~/.tokade/games/tokegotchi.json - TickProcessor for telemetry-to-game translation - Alternatives considered design/tokegotchi/ - Full sprite design folder: base SVG, compose.py, pixelate.swift, bake.swift, render_matrix.swift, render.sh - hair-styles/ (11 styles) - shirt-styles/ (4 styles) + pants-styles/ (4 styles) + belt-styles/ (2 styles) - cosmetics/ (hat / eyewear / cape / held — 18 items) - anatomy-overlay.svg (region + anchor map) - animation/ (idle, walk-A, walk-B reference renders) Co-Authored-By: Claude Opus 4.7 (1M context) --- design/tokegotchi/anatomy-overlay.svg | 126 ++++ design/tokegotchi/animation/idle-1.matrix | 67 ++ design/tokegotchi/animation/idle-1.png | Bin 0 -> 12590 bytes design/tokegotchi/animation/idle-2.matrix | 67 ++ design/tokegotchi/animation/idle-2.png | Bin 0 -> 12494 bytes design/tokegotchi/animation/walk-a.matrix | 73 +++ design/tokegotchi/animation/walk-a.png | Bin 0 -> 13803 bytes design/tokegotchi/animation/walk-b.matrix | 73 +++ design/tokegotchi/animation/walk-b.png | Bin 0 -> 13868 bytes design/tokegotchi/animation/walk-idle.matrix | 73 +++ design/tokegotchi/animation/walk-idle.png | Bin 0 -> 13432 bytes design/tokegotchi/bake.swift | 134 ++++ design/tokegotchi/belt-styles/gold.svg | 6 + design/tokegotchi/belt-styles/leather.svg | 5 + design/tokegotchi/compose.py | 73 +++ .../tokegotchi/cosmetics/cape/bat-wings.svg | 5 + .../tokegotchi/cosmetics/cape/blue-cape.svg | 5 + design/tokegotchi/cosmetics/cape/rainbow.svg | 8 + design/tokegotchi/cosmetics/cape/red-cape.svg | 5 + .../cosmetics/eyewear/eye-patch.svg | 4 + .../cosmetics/eyewear/heart-glasses.svg | 6 + .../tokegotchi/cosmetics/eyewear/monocle.svg | 8 + .../cosmetics/eyewear/round-glasses.svg | 4 + .../tokegotchi/cosmetics/eyewear/shades.svg | 7 + design/tokegotchi/cosmetics/hat/beanie.svg | 7 + design/tokegotchi/cosmetics/hat/cap.svg | 5 + design/tokegotchi/cosmetics/hat/crown.svg | 7 + design/tokegotchi/cosmetics/hat/halo.svg | 4 + design/tokegotchi/cosmetics/hat/jester.svg | 9 + design/tokegotchi/cosmetics/hat/octopus.svg | 11 + .../tokegotchi/cosmetics/hat/wizard-hat.svg | 7 + .../cosmetics/held/crystal-ball.svg | 6 + design/tokegotchi/cosmetics/held/fish.svg | 8 + .../tokegotchi/cosmetics/held/magic-wand.svg | 5 + design/tokegotchi/cosmetics/held/mug.svg | 5 + .../tokegotchi/cosmetics/held/rubber-duck.svg | 6 + design/tokegotchi/cosmetics/held/shield.svg | 6 + design/tokegotchi/cosmetics/held/staff.svg | 5 + design/tokegotchi/cosmetics/held/sword.svg | 7 + design/tokegotchi/dynamic/skin-coral.png | Bin 0 -> 11195 bytes design/tokegotchi/dynamic/skin-lavender.png | Bin 0 -> 11226 bytes design/tokegotchi/dynamic/skin-peach.png | Bin 0 -> 11204 bytes design/tokegotchi/dynamic/skin-sage.png | Bin 0 -> 11218 bytes design/tokegotchi/dynamic/skin-sand.png | Bin 0 -> 11199 bytes design/tokegotchi/dynamic/skin-slate.png | Bin 0 -> 11222 bytes design/tokegotchi/hair-styles/antennae.svg | 7 + design/tokegotchi/hair-styles/bald.svg | 1 + design/tokegotchi/hair-styles/cat-ears.svg | 5 + design/tokegotchi/hair-styles/flame.svg | 5 + design/tokegotchi/hair-styles/horns.svg | 5 + design/tokegotchi/hair-styles/long.svg | 7 + design/tokegotchi/hair-styles/mohawk.svg | 4 + design/tokegotchi/hair-styles/mushroom.svg | 9 + design/tokegotchi/hair-styles/pigtails.svg | 9 + design/tokegotchi/hair-styles/spiky.svg | 7 + design/tokegotchi/hair-styles/tentacles.svg | 14 + .../tokegotchi/pants-styles/bell-bottoms.svg | 9 + .../tokegotchi/pants-styles/blue-trousers.svg | 13 + design/tokegotchi/pants-styles/kilt.svg | 8 + design/tokegotchi/pants-styles/long-pants.svg | 13 + design/tokegotchi/pants-styles/shorts.svg | 13 + .../pants-styles/striped-leggings.svg | 13 + design/tokegotchi/pixelate.swift | 96 +++ design/tokegotchi/render.sh | 38 ++ design/tokegotchi/render_matrix.swift | 98 +++ .../tokegotchi/shirt-styles/jester-motley.svg | 14 + design/tokegotchi/shirt-styles/lab-coat.svg | 15 + design/tokegotchi/shirt-styles/red-robe.svg | 14 + design/tokegotchi/shirt-styles/striped.svg | 12 + design/tokegotchi/shirt-styles/tunic.svg | 13 + design/tokegotchi/shirt-styles/vest.svg | 11 + design/tokegotchi/swatches.sh | 28 + design/tokegotchi/swatches/skin-coral.matrix | 67 ++ design/tokegotchi/swatches/skin-coral.png | Bin 0 -> 12610 bytes .../tokegotchi/swatches/skin-lavender.matrix | 67 ++ design/tokegotchi/swatches/skin-lavender.png | Bin 0 -> 12590 bytes design/tokegotchi/swatches/skin-peach.matrix | 67 ++ design/tokegotchi/swatches/skin-peach.png | Bin 0 -> 12594 bytes design/tokegotchi/swatches/skin-sage.matrix | 67 ++ design/tokegotchi/swatches/skin-sage.png | Bin 0 -> 12673 bytes design/tokegotchi/swatches/skin-sand.matrix | 67 ++ design/tokegotchi/swatches/skin-sand.png | Bin 0 -> 12622 bytes design/tokegotchi/swatches/skin-slate.matrix | 67 ++ design/tokegotchi/swatches/skin-slate.png | Bin 0 -> 12675 bytes design/tokegotchi/tokegotchi-base-v1.svg | 44 ++ design/tokegotchi/tokegotchi-base-v2-32.png | Bin 0 -> 1168 bytes design/tokegotchi/tokegotchi-base-v2-crt.png | Bin 0 -> 16275 bytes .../tokegotchi/tokegotchi-base-v2-pixel.png | Bin 0 -> 12215 bytes design/tokegotchi/tokegotchi-base-v2.matrix | 42 ++ design/tokegotchi/tokegotchi-base-v2.svg | 47 ++ .../tokegotchi/tokegotchi-base-v3-32x48.png | Bin 0 -> 1791 bytes design/tokegotchi/tokegotchi-base-v3-crt.png | Bin 0 -> 14776 bytes .../tokegotchi/tokegotchi-base-v3-pixel.png | Bin 0 -> 13868 bytes .../tokegotchi-base-v3-resolved.svg | 153 +++++ design/tokegotchi/tokegotchi-base-v3.matrix | 73 +++ design/tokegotchi/tokegotchi-base-v3.svg | 117 ++++ design/tokegotchi/variations/antennae.matrix | 73 +++ design/tokegotchi/variations/antennae.png | Bin 0 -> 13340 bytes ...blue-trousers_wizard-hat_gold_L:staff:.png | Bin 0 -> 14030 bytes .../tokegotchi/variations/bald-beanie.matrix | 73 +++ design/tokegotchi/variations/bald-beanie.png | Bin 0 -> 13224 bytes .../variations/bald-wizard-hat.matrix | 73 +++ .../tokegotchi/variations/bald-wizard-hat.png | Bin 0 -> 13865 bytes design/tokegotchi/variations/cat-ears.matrix | 73 +++ design/tokegotchi/variations/cat-ears.png | Bin 0 -> 13278 bytes .../tokegotchi/variations/horns-shades.matrix | 73 +++ design/tokegotchi/variations/horns-shades.png | Bin 0 -> 13469 bytes .../variations/horns-wizard-hat-shades.matrix | 73 +++ .../variations/horns-wizard-hat-shades.png | Bin 0 -> 13961 bytes .../variations/horns-wizard-hat.png | Bin 0 -> 12699 bytes design/tokegotchi/variations/horns.matrix | 73 +++ design/tokegotchi/variations/horns.png | Bin 0 -> 13448 bytes ..._red-robe_kilt_crown_gold_Rred-cape_L:.png | Bin 0 -> 13791 bytes .../horns_red-robe_long-pants_gold_L:.png | Bin 0 -> 13670 bytes ...be_long-pants_wizard-hat_gold_L:staff:.png | Bin 0 -> 14180 bytes .../horns_striped_shorts_cap_leather_L:.png | Bin 0 -> 13713 bytes .../horns_striped_shorts_leather_L:.png | Bin 0 -> 13635 bytes ...rns_tunic_blue-trousers_shades_gold_L:.png | Bin 0 -> 13516 bytes .../horns_tunic_long-pants_leather_L:.png | Bin 0 -> 13448 bytes ..._tunic_long-pants_leather_blue-cape_L:.png | Bin 0 -> 13997 bytes .../horns_vest_long-pants_leather_L:.png | Bin 0 -> 13459 bytes design/tokegotchi/variations/long.matrix | 73 +++ design/tokegotchi/variations/long.png | Bin 0 -> 12863 bytes ...long-pants_round-glasses_leather_L:mug.png | Bin 0 -> 12875 bytes design/tokegotchi/variations/mohawk.matrix | 73 +++ design/tokegotchi/variations/mohawk.png | Bin 0 -> 13279 bytes design/tokegotchi/variations/pigtails.matrix | 73 +++ design/tokegotchi/variations/pigtails.png | Bin 0 -> 13173 bytes design/tokegotchi/variations/spiky.matrix | 73 +++ design/tokegotchi/variations/spiky.png | Bin 0 -> 13443 bytes ...ng-pants_shades_leather_Rsword_Lshield.png | Bin 0 -> 13902 bytes .../variations/weird/01-flamehead.png | Bin 0 -> 13796 bytes .../variations/weird/02-squidjester.png | Bin 0 -> 13163 bytes .../variations/weird/03-shroom-oracle.png | Bin 0 -> 13788 bytes .../variations/weird/04-court-jester.png | Bin 0 -> 14188 bytes .../variations/weird/05-mad-scientist.png | Bin 0 -> 13841 bytes .../variations/weird/06-fallen-angel.png | Bin 0 -> 14638 bytes .../variations/weird/07-monocle-mage.png | Bin 0 -> 13786 bytes .../variations/weird/08-rainbow-pop.png | Bin 0 -> 14005 bytes .../variations/weird/09-fire-witch.png | Bin 0 -> 14172 bytes .../variations/weird/10-duck-buddy.png | Bin 0 -> 13695 bytes .../variations/weird/11-maximum-weird.png | Bin 0 -> 14952 bytes .../variations/weird/12-cosmic-physicist.png | Bin 0 -> 13958 bytes docs/02-design/TOKADE_TAB.md | 618 +++++++++++------- docs/adr/0005-tokade-tab-data-architecture.md | 214 ------ docs/adr/0005-tokade-tab-rpg-system.md | 164 +++++ 146 files changed, 3554 insertions(+), 451 deletions(-) create mode 100644 design/tokegotchi/anatomy-overlay.svg create mode 100644 design/tokegotchi/animation/idle-1.matrix create mode 100644 design/tokegotchi/animation/idle-1.png create mode 100644 design/tokegotchi/animation/idle-2.matrix create mode 100644 design/tokegotchi/animation/idle-2.png create mode 100644 design/tokegotchi/animation/walk-a.matrix create mode 100644 design/tokegotchi/animation/walk-a.png create mode 100644 design/tokegotchi/animation/walk-b.matrix create mode 100644 design/tokegotchi/animation/walk-b.png create mode 100644 design/tokegotchi/animation/walk-idle.matrix create mode 100644 design/tokegotchi/animation/walk-idle.png create mode 100644 design/tokegotchi/bake.swift create mode 100644 design/tokegotchi/belt-styles/gold.svg create mode 100644 design/tokegotchi/belt-styles/leather.svg create mode 100644 design/tokegotchi/compose.py create mode 100644 design/tokegotchi/cosmetics/cape/bat-wings.svg create mode 100644 design/tokegotchi/cosmetics/cape/blue-cape.svg create mode 100644 design/tokegotchi/cosmetics/cape/rainbow.svg create mode 100644 design/tokegotchi/cosmetics/cape/red-cape.svg create mode 100644 design/tokegotchi/cosmetics/eyewear/eye-patch.svg create mode 100644 design/tokegotchi/cosmetics/eyewear/heart-glasses.svg create mode 100644 design/tokegotchi/cosmetics/eyewear/monocle.svg create mode 100644 design/tokegotchi/cosmetics/eyewear/round-glasses.svg create mode 100644 design/tokegotchi/cosmetics/eyewear/shades.svg create mode 100644 design/tokegotchi/cosmetics/hat/beanie.svg create mode 100644 design/tokegotchi/cosmetics/hat/cap.svg create mode 100644 design/tokegotchi/cosmetics/hat/crown.svg create mode 100644 design/tokegotchi/cosmetics/hat/halo.svg create mode 100644 design/tokegotchi/cosmetics/hat/jester.svg create mode 100644 design/tokegotchi/cosmetics/hat/octopus.svg create mode 100644 design/tokegotchi/cosmetics/hat/wizard-hat.svg create mode 100644 design/tokegotchi/cosmetics/held/crystal-ball.svg create mode 100644 design/tokegotchi/cosmetics/held/fish.svg create mode 100644 design/tokegotchi/cosmetics/held/magic-wand.svg create mode 100644 design/tokegotchi/cosmetics/held/mug.svg create mode 100644 design/tokegotchi/cosmetics/held/rubber-duck.svg create mode 100644 design/tokegotchi/cosmetics/held/shield.svg create mode 100644 design/tokegotchi/cosmetics/held/staff.svg create mode 100644 design/tokegotchi/cosmetics/held/sword.svg create mode 100644 design/tokegotchi/dynamic/skin-coral.png create mode 100644 design/tokegotchi/dynamic/skin-lavender.png create mode 100644 design/tokegotchi/dynamic/skin-peach.png create mode 100644 design/tokegotchi/dynamic/skin-sage.png create mode 100644 design/tokegotchi/dynamic/skin-sand.png create mode 100644 design/tokegotchi/dynamic/skin-slate.png create mode 100644 design/tokegotchi/hair-styles/antennae.svg create mode 100644 design/tokegotchi/hair-styles/bald.svg create mode 100644 design/tokegotchi/hair-styles/cat-ears.svg create mode 100644 design/tokegotchi/hair-styles/flame.svg create mode 100644 design/tokegotchi/hair-styles/horns.svg create mode 100644 design/tokegotchi/hair-styles/long.svg create mode 100644 design/tokegotchi/hair-styles/mohawk.svg create mode 100644 design/tokegotchi/hair-styles/mushroom.svg create mode 100644 design/tokegotchi/hair-styles/pigtails.svg create mode 100644 design/tokegotchi/hair-styles/spiky.svg create mode 100644 design/tokegotchi/hair-styles/tentacles.svg create mode 100644 design/tokegotchi/pants-styles/bell-bottoms.svg create mode 100644 design/tokegotchi/pants-styles/blue-trousers.svg create mode 100644 design/tokegotchi/pants-styles/kilt.svg create mode 100644 design/tokegotchi/pants-styles/long-pants.svg create mode 100644 design/tokegotchi/pants-styles/shorts.svg create mode 100644 design/tokegotchi/pants-styles/striped-leggings.svg create mode 100644 design/tokegotchi/pixelate.swift create mode 100755 design/tokegotchi/render.sh create mode 100644 design/tokegotchi/render_matrix.swift create mode 100644 design/tokegotchi/shirt-styles/jester-motley.svg create mode 100644 design/tokegotchi/shirt-styles/lab-coat.svg create mode 100644 design/tokegotchi/shirt-styles/red-robe.svg create mode 100644 design/tokegotchi/shirt-styles/striped.svg create mode 100644 design/tokegotchi/shirt-styles/tunic.svg create mode 100644 design/tokegotchi/shirt-styles/vest.svg create mode 100644 design/tokegotchi/swatches.sh create mode 100644 design/tokegotchi/swatches/skin-coral.matrix create mode 100644 design/tokegotchi/swatches/skin-coral.png create mode 100644 design/tokegotchi/swatches/skin-lavender.matrix create mode 100644 design/tokegotchi/swatches/skin-lavender.png create mode 100644 design/tokegotchi/swatches/skin-peach.matrix create mode 100644 design/tokegotchi/swatches/skin-peach.png create mode 100644 design/tokegotchi/swatches/skin-sage.matrix create mode 100644 design/tokegotchi/swatches/skin-sage.png create mode 100644 design/tokegotchi/swatches/skin-sand.matrix create mode 100644 design/tokegotchi/swatches/skin-sand.png create mode 100644 design/tokegotchi/swatches/skin-slate.matrix create mode 100644 design/tokegotchi/swatches/skin-slate.png create mode 100644 design/tokegotchi/tokegotchi-base-v1.svg create mode 100644 design/tokegotchi/tokegotchi-base-v2-32.png create mode 100644 design/tokegotchi/tokegotchi-base-v2-crt.png create mode 100644 design/tokegotchi/tokegotchi-base-v2-pixel.png create mode 100644 design/tokegotchi/tokegotchi-base-v2.matrix create mode 100644 design/tokegotchi/tokegotchi-base-v2.svg create mode 100644 design/tokegotchi/tokegotchi-base-v3-32x48.png create mode 100644 design/tokegotchi/tokegotchi-base-v3-crt.png create mode 100644 design/tokegotchi/tokegotchi-base-v3-pixel.png create mode 100644 design/tokegotchi/tokegotchi-base-v3-resolved.svg create mode 100644 design/tokegotchi/tokegotchi-base-v3.matrix create mode 100644 design/tokegotchi/tokegotchi-base-v3.svg create mode 100644 design/tokegotchi/variations/antennae.matrix create mode 100644 design/tokegotchi/variations/antennae.png create mode 100644 design/tokegotchi/variations/antennae_vest_blue-trousers_wizard-hat_gold_L:staff:.png create mode 100644 design/tokegotchi/variations/bald-beanie.matrix create mode 100644 design/tokegotchi/variations/bald-beanie.png create mode 100644 design/tokegotchi/variations/bald-wizard-hat.matrix create mode 100644 design/tokegotchi/variations/bald-wizard-hat.png create mode 100644 design/tokegotchi/variations/cat-ears.matrix create mode 100644 design/tokegotchi/variations/cat-ears.png create mode 100644 design/tokegotchi/variations/horns-shades.matrix create mode 100644 design/tokegotchi/variations/horns-shades.png create mode 100644 design/tokegotchi/variations/horns-wizard-hat-shades.matrix create mode 100644 design/tokegotchi/variations/horns-wizard-hat-shades.png create mode 100644 design/tokegotchi/variations/horns-wizard-hat.png create mode 100644 design/tokegotchi/variations/horns.matrix create mode 100644 design/tokegotchi/variations/horns.png create mode 100644 design/tokegotchi/variations/horns_red-robe_kilt_crown_gold_Rred-cape_L:.png create mode 100644 design/tokegotchi/variations/horns_red-robe_long-pants_gold_L:.png create mode 100644 design/tokegotchi/variations/horns_red-robe_long-pants_wizard-hat_gold_L:staff:.png create mode 100644 design/tokegotchi/variations/horns_striped_shorts_cap_leather_L:.png create mode 100644 design/tokegotchi/variations/horns_striped_shorts_leather_L:.png create mode 100644 design/tokegotchi/variations/horns_tunic_blue-trousers_shades_gold_L:.png create mode 100644 design/tokegotchi/variations/horns_tunic_long-pants_leather_L:.png create mode 100644 design/tokegotchi/variations/horns_tunic_long-pants_leather_blue-cape_L:.png create mode 100644 design/tokegotchi/variations/horns_vest_long-pants_leather_L:.png create mode 100644 design/tokegotchi/variations/long.matrix create mode 100644 design/tokegotchi/variations/long.png create mode 100644 design/tokegotchi/variations/long_tunic_long-pants_round-glasses_leather_L:mug.png create mode 100644 design/tokegotchi/variations/mohawk.matrix create mode 100644 design/tokegotchi/variations/mohawk.png create mode 100644 design/tokegotchi/variations/pigtails.matrix create mode 100644 design/tokegotchi/variations/pigtails.png create mode 100644 design/tokegotchi/variations/spiky.matrix create mode 100644 design/tokegotchi/variations/spiky.png create mode 100644 design/tokegotchi/variations/spiky_vest_long-pants_shades_leather_Rsword_Lshield.png create mode 100644 design/tokegotchi/variations/weird/01-flamehead.png create mode 100644 design/tokegotchi/variations/weird/02-squidjester.png create mode 100644 design/tokegotchi/variations/weird/03-shroom-oracle.png create mode 100644 design/tokegotchi/variations/weird/04-court-jester.png create mode 100644 design/tokegotchi/variations/weird/05-mad-scientist.png create mode 100644 design/tokegotchi/variations/weird/06-fallen-angel.png create mode 100644 design/tokegotchi/variations/weird/07-monocle-mage.png create mode 100644 design/tokegotchi/variations/weird/08-rainbow-pop.png create mode 100644 design/tokegotchi/variations/weird/09-fire-witch.png create mode 100644 design/tokegotchi/variations/weird/10-duck-buddy.png create mode 100644 design/tokegotchi/variations/weird/11-maximum-weird.png create mode 100644 design/tokegotchi/variations/weird/12-cosmic-physicist.png delete mode 100644 docs/adr/0005-tokade-tab-data-architecture.md create mode 100644 docs/adr/0005-tokade-tab-rpg-system.md diff --git a/design/tokegotchi/anatomy-overlay.svg b/design/tokegotchi/anatomy-overlay.svg new file mode 100644 index 0000000..2696418 --- /dev/null +++ b/design/tokegotchi/anatomy-overlay.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HORN / HAT + + + + HEAD + + + + EYEWEAR + + + + mouth + + + + SHIRT (+sleeves) + + + + BELT + + + + R-ARM + + + + L-ARM + + + + PANTS + + + + FEET / SHOE + + + + + head-top + + + forehead + + + neck (collar) + + + back (cape) + + + waist (belt-buckle) + + + R-hand + + + L-hand + + + + feet (shoe anchor) + + + diff --git a/design/tokegotchi/animation/idle-1.matrix b/design/tokegotchi/animation/idle-1.matrix new file mode 100644 index 0000000..a2e29d7 --- /dev/null +++ b/design/tokegotchi/animation/idle-1.matrix @@ -0,0 +1,67 @@ +# matrix 32x48 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +............1......11........... +...........151....1561.......... +...........1561..15661.......... +...........1561..1561........... +...........1561111561........... +...........1322222561........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1233383223832221........ +........1223828228283221........ +........1223372333723221........ +........1223412222122441........ +........1222343443434441........ +........1222232444244441........ +.........12222244444441......... +..........1224411D4441.......... +........1111444444441111........ +.......1AAA4114444114A991....... +......19AA999999999999BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA99BB99BB9241....... +.......132FFFFFCCFFFFF241....... +.......1329999BBBBBBBC241....... +........124AAA99999BB421........ +.........11222222222211......... +..........1DDDC11FDCC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DEEE11EEEC1.......... +..........124444144441.......... +...........11111.1111........... +................................ +................................ diff --git a/design/tokegotchi/animation/idle-1.png b/design/tokegotchi/animation/idle-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa313576ae0e02eb1a03bef45ddd1a215fa8bcc GIT binary patch literal 12590 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/animation/idle-2.matrix b/design/tokegotchi/animation/idle-2.matrix new file mode 100644 index 0000000..a6a01b8 --- /dev/null +++ b/design/tokegotchi/animation/idle-2.matrix @@ -0,0 +1,67 @@ +# matrix 32x48 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +............1......11........... +...........151....1561.......... +...........1561..15661.......... +...........1561..1561........... +...........1561111561........... +...........1322222561........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1233383223832221........ +........1223828228283221........ +........1223372333723221........ +........1223412222122441........ +........1222343443434441........ +........1222232444244441........ +.........12222244444441......... +........111224411D444111........ +.......1AAA4444444444A991....... +......19AA999944449999BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA99BB99BB9241....... +.......132FFFFFCCFFFFF241....... +.......1329999BBBBBBBC241....... +........124AAA99999BB421........ +.........11222222222211......... +..........1DDDC11FDCC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DEEE11EEEC1.......... +..........124444144441.......... +...........11111.1111........... +................................ +................................ diff --git a/design/tokegotchi/animation/idle-2.png b/design/tokegotchi/animation/idle-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d30c0dd2bd98e2982e9538a7bb2d4ede16170b GIT binary patch literal 12494 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/animation/walk-a.matrix b/design/tokegotchi/animation/walk-a.matrix new file mode 100644 index 0000000..bcc0573 --- /dev/null +++ b/design/tokegotchi/animation/walk-a.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +............1......1............ +...........151....151........... +...........1661..15561.......... +...........1561..15661.......... +...........1561111561........... +...........1562222561........... +..........11332222221........... +.........1333332222221.......... +.........13333332222221......... +........1333333222222221........ +........1233333222322221........ +........1222888228882221........ +........1223373333723221........ +........12234B2322B42421........ +........1222373443734441........ +........1222332442324441........ +.........12222244444441......... +..........1222411D44441......... +........1111444444444111........ +.......1A9A4144444414A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......19999AA999999BB999B1...... +......1332AAA999999BBB241....... +......1324AAA999999BBB241....... +......1324AAA999999BBB441....... +......1324AAA999999BBB41........ +......1324AAA999999BBB41........ +......1324AAA999999BBB41........ +......1324AAA999999BBB41........ +.....13324AAAF9CC9999941........ +.....13244FDDDDCCDDDDD41........ +.....1324199999BB9BBB941........ +......11114AAAAAAA9B941......... +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +...........1111.124441.......... +.................1111........... +................................ +................................ diff --git a/design/tokegotchi/animation/walk-a.png b/design/tokegotchi/animation/walk-a.png new file mode 100644 index 0000000000000000000000000000000000000000..02bec4be29c112f05c8faf943b8ebe243c6f53cd GIT binary patch literal 13803 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/animation/walk-b.matrix b/design/tokegotchi/animation/walk-b.matrix new file mode 100644 index 0000000..ef7539d --- /dev/null +++ b/design/tokegotchi/animation/walk-b.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +............1......1............ +...........151....151........... +...........1661..15561.......... +...........1561..15661.......... +...........1561111561........... +...........1562222561........... +..........11332222221........... +.........1333332222221.......... +.........13333332222221......... +........1333333222222221........ +........1233333222322221........ +........1222888228882221........ +........1223373333723221........ +........12234B2322B42421........ +........1222373443734441........ +........1222332442324441........ +.........12222244444441......... +..........1222411D44441......... +........1111444444444111........ +.......1A9A4144444414A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB99991...... +.......132AAA999999BBB2441...... +.......132AAA999999BBB3241...... +.......133AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAAF9CC9999932441..... +........13FDDDDCCDDDDD33241..... +........13A9999BB9BBB913241..... +.........12AAAAAAA9B941111...... +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441.1111........... +...........1111................. +................................ +................................ diff --git a/design/tokegotchi/animation/walk-b.png b/design/tokegotchi/animation/walk-b.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9c1df4856300e7b01e864111a3683c2f44128b GIT binary patch literal 13868 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 OTCSVior)cNfBY|Pi_@3@ literal 0 HcmV?d00001 diff --git a/design/tokegotchi/animation/walk-idle.matrix b/design/tokegotchi/animation/walk-idle.matrix new file mode 100644 index 0000000..4493c63 --- /dev/null +++ b/design/tokegotchi/animation/walk-idle.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +............1......1............ +...........151....151........... +...........151....1561.......... +...........1561..15661.......... +...........1561..1561........... +...........1561111561........... +...........1322222521........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +.......1314AAAAAAA9B92141....... +........1.142222222241.1........ +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/animation/walk-idle.png b/design/tokegotchi/animation/walk-idle.png new file mode 100644 index 0000000000000000000000000000000000000000..17c5971d9e4f6de7dc78f311da770518742a090b GIT binary patch literal 13432 zcmeHOX;hQv@=qYjCbBA4g;1e_MTJ{YkR_pj5~~QVxI$ctR9i!f61F5D3MxWGR0Ilv zYNfqa5w#)+1gexpS+ydHgqb!mqO>*Escm{@mjX+&?jF|Ow6S4{V`zNV z#T7GJk``UDh@la)*SYyDVhpcy*Is9Bn3~fzQ(G@{j#JM?CsOr|fo(SuuP@ntYpLH5 z^X2`It9wj_cQ$O7HOa=#IrXW7d9v$Eq#W@#)3w!p@i@E|LD$&Y>-~rKO86Tip(^t; zs^oham9v)WLKqwh@Tc!<$~^dMRC%DRIbY8Bv2r^pvx>9SNnEJ5QRyK;sYQDBxY#$} zO@4@>-^Dr~*NHpFI*z%-=yLotYSHeeB+NUyrxVQM=Xr_P7)TN-7Uttde@=Okj4kbq zkJk#Uh8K2(t|{7X}GqQewCrM)DLsO zs$jD~+~kW@Z+x(&hrPV;_wcrAUCcqBAA+U9_kUoZrG~opIG6Z-BHDSZKlM)g>{|gL zTCF@CwVXTFM?3YUNA3)sWj!ZK*u%1_=dsi~ucj-a%AL;iU+&;5oAMang!CIaa-w^A zzM{mQ$H_L*64i;RBMffc+gnNliJq6*b^jF~caV#!t&PS$_sY)%fCk+<2TP z%?_iG3S4czor7(MzugPZm&SCh$0*DNuB%=DfwprSNQ)=Rb1@3e`e)`w>?IsFO6WQA zk?3sw5z|vfOM|1N6$M82R#r2wvh2LWCyhAlhdPPFM;s>cZ3NjYp;|p}h4i`vs zOT^zG3X7c%uGcrcXGloO=%M-LeJ!bLrNo85tr-%e#8vgN)%Qy&DocUH?+JyJ&FDR) z4tE;=z&-JMit2*Fkj+^2sf;3}FJF6lBF$*9M(>Iq_`=+ZYHSPE0bcmJ+b&ty-mXCO z_+orI659hm&APd3KemCh5FM_x&Rd6RM+DKpBQ^u=6TJWIYMK)!Kpl9yXw-iprrj?< zfIo-HoPpF8Szf!kyV_Z=Xsbw{i$;q$GY9AkX(#)ORMn#|ZKSm%VJm&LsC85%4(ggK zJ=4lqTg**NO1xgDD3br0sa|W#@|1HDqrcYrLW}vA@Bfcf(q3+gyWrJAGl@+?08?~A z+vK!7X^QkgJz4lUO}Z>y@#_g`NNWFqqzsD3x4TI!=kX6B=r@X1k-8TkWFDgb9XmWm9x9SnG}ycD4XT%YpLB^yJ@en81~(V!{j-@bqn6J8iX z$w&FP{q;F(F_f5s2l&QaMku)mDEWxC6hjFGLeHPW#7juubHMXu=gU=8rs}D)=%QLl zWc3_PS5(_%H2aD!D=*()APtM$_m#uA$=b{yAL*z3nBvxwH8Qhw`cJgCEV`|l&yIU? zfx`3%7Sf{#H=~{f;7+sfKLuzcS`Gqb(@U0XgfO=VeD@zHmJVmr)xFQe;zDn(iOPp4 zz7&P7RS-!xWT4YJ7h+m2u|+~ACH^ZfPz(#*+t zE#uaVkFdy@3+GampJ6*snl;h<@pSALx@bV(VondePhou_@yW%?$=t9q_u^^<4S#aZmExnY>TAy z@-J`1b8!8#9CXre1RR)0`XFW9fH*fobHhME0V`~LZisAJ3ii3d9Y%%&*P-ljIgbIP zAB4){3nDiAZ`S;#d093~0R9XAC;-zq5CNDXyWi0Xz;Fta2R)gzB`(#H}z zO1CBFmeQ9xs|z`El0`g`FwUMe(fOG@(U3dXNIya9<&wW%dR~2vR^f7_Uj72KxWZ)- z^0S}8&nBcEdC1G*wE61rMg-z;$rpD$Iq;X3sgQjA0uYtV?>Zr{5>( z3B@h1LcCnZhbTJ45`Jc{KE-4F<2=XxrsH|m%iR$LieF`0?bSaPIwp(QtikUCRSj*S z_Ug0;1x4!ahVKs*Nd4HvnFCXeGxi!BziKeGwA&6>5z-<@j1z%z{6bVs#X!7_;pR^v zJWL01@&2fK8;5u~&iqt>G-(LpYG70KG6@Fcy$u38}5>fb+`t+(=d`fPNnBP5!yYEkgy zlIG*0LMvHpf#T=2#qtnW)}j^a*Wh!ae$T!Z9o@{?kh8Z9m0)Jx3~}`PNzkENc5sf z`BU!jq4mDM8Vz>I6AKg^R(H6)T2ka;*v~n}eRu6NcKRnM) zDk-5yF5rx%jpdLm>mNPS=;p;#iKoVJ=AfI?R$VVJ-Ry)I%wWC5bh80;!|%C{>E>t9 z&AaeI!U#9*m3oWj9GWFd6%v(IeyTlnG}kzmJ#mK7fxRrk;LPTv;P3$m!D{JHZ9$y# z{0VniwoifGuKRc9HUva2gg?beo)@TRNzV`^t%BGfTe6koLlw?9>Csh9fiKhZz}#1N zv=W*U^1+4Z*gOJZRY|bIe4Y>);)Q?Ch%iIGR|Wx_sb!=|W${|~9iazOS$Yb?w>5Yb zg`A*+p#KW|GLqNni#f$vaK$T}Ds9YPs@_5rxlcR10P`dYtZNJC#$zO?Q=s}+E-vX< zAiDzVhV6tnjKobjG(XvX-1vcNuxakj@D_-K`uYbV{w?Vr6DPEnR#BL#VN7AkI7P z7YxYx0RV>P`_WkKW2_4&@`t27*s7L7IAMlfm7~h=IGjDk9MlZpZ-P@vd^i~8#NKeI zoD8^xA$)uhoMh21MJOl!5S;U&9qKH|pfr?~=LDhC?=0lRy=G_?1MI@+YP^QLmg0ri z9n(XrNC0M%VDL9=qt>?F^p(ky-X1_p0WVqAB;XGDrw4T&?SJmLTJ&h`OS=V9_awUi z0x6k3UKF?B9ILOmgkgP-w~J$Sy1#vECQ)y|rG$98KY3YV%M>lrSzcPFa2L3aKT20T zwp?~CU6FN-tE{A`riv7w@tHvvo0C<3&wslX6p~iXniTSL(-mgqV##JrT$0cO2~L*` z8Pa37Yp`wO5^OJT=FWl^_P@?S>Ny9BvyIw^q`L|+=||cM6i>hk=eko-5}5@` zyjuBt_P++g(=iuRW$Xv-WXVF2LjF)DRf4_ikFk!9DilAq2==K*$WfxwAo8^VazIza z_{5UZpk+Z8KHM}$_^?QHjrf~{Q(Po`*1Nv1)A8X|_v)FR9TwTV*rI^Pw0#D}f~f9zlv0?#qfj&UGLJIA4kIUco~hQRYFs9o0{rRy;Ov6%8~ z7o@9vfEd9XrBt4vM9<*H9Atz*fSA^4w8{#2S``g8B8UNL0v=h^iw!*4LE=#4F+loQ zd@u4Czl05J_T(Vh+Z9L(?oTF*=)75S#@iy6&^Juw zkeTTtt*Lnd00XQ%7VLejzHqzUTg>Lg+Mef;Pcm5S$CkQ{T!}O&&yZ0?<^8xV*liOu zu|An-M5bQ@1~M%#MwWw!RQJ>cmG8C?#MTIZMG3+>0LUgDDxS~U=HqOu=b<9~6R`X` z#_yH*Iq*vY4ORSgVCz4JNtM$VH;PLrsDrhEqZnrU^(GpyqE?<)OD9;C4T6_kvj)Eh zMZ40JBw0<(Z+x?|CdZK71{JKay^qPxiWrHoz@~sLDP&3Qe56kTDvTS{eQKFcf#$s9 zefVK@=gq%$^$Mo?^GoFSOy0e=#e18)x5=N^6#Glim9U{b^mA7 z#mqVi13`5NRn&V>cW=b!?ogQR<2Ev#o|8`=6|Oz>fUjSmXkA-8Wi&maK$^&?j{8zZ zJ$k@SqSs3h5x!%^h=UJ*@_SCW7}`=#^w8?_@Y&ojxr$V5!F@3qX~}nr%*w7 zxtznY#Qo5m=&*1?jY3;!6zcI;Bkg_(o*~y7M2RHRm z^VVSPms?iONHH{|?yG)|D%J9XM*y52|!BqK55x&;Q^7KQULXNz&c{QnfAm}38 ziHJDRd_q*TGV+sgrL=!prZ7FErwE-=vdBPa-e{g@6Q@Z>=>s`^iY1O9hYN2k~0 zuk!r6FY2y~yz9fcU0iJ1P;?!p6OOs=6?3HV^<#bM66&EtOV0B;cNq@Q@0NH+@6o!T zX%dPi-e4Z{IiUJhVF^}gZw9n}9Kw66@sYr-(1VYSNzowJ>vP!k`xoA8={+>w`@~-BT@u<2^S_Vv{cbxZ2gOJ+9VJ9XEErp-U;(VwN3AAy?; z(^*7ixa*8Y^0q7C z{4()#^{IY!2U$Yg3Elc;PxpECMc3Cs7WsfxiA47g zWM_uA*0F|Ph}Q2{*$ARXYHg%)0qc?NIk?%Pu$+%SZ>V=%C7R(s8+A_!ZIHY>$0VYB zJrC@2fQBkC3f#SD;~S!7(U2PFRiNwC)^Ndsa@hqh=P~-lOWx`EyOYQ33`JqNLF%G1{_U1YjL!;#+#Wjl<{o7i zFzMp8y4}%$SRd+vY3#$FV;jxKNoJx6ux7kaeR(IELfGRfwUL{{1R+q!--;BWA1}ai zc;i2UG@4{%%u&&cwue + +import AppKit +import CoreGraphics +import ImageIO + +func hex(_ s: String) -> (UInt8, UInt8, UInt8) { + var t = s + if t.hasPrefix("#") { t.removeFirst() } + let v = UInt32(t, radix: 16) ?? 0 + return (UInt8((v >> 16) & 0xFF), UInt8((v >> 8) & 0xFF), UInt8(v & 0xFF)) +} + +let env = ProcessInfo.processInfo.environment + +// Role-based palette. Index in matrix refers to ROLE — the runtime substitutes the user's chosen color. +let skin = hex(env["SKIN"] ?? "#C7A5D9") +let skinLight = hex(env["SKIN_LIGHT"] ?? "#DBC1E8") +let skinDark = hex(env["SKIN_DARK"] ?? "#A07AB8") +let hair = hex(env["HAIR"] ?? "#E8DCC4") +let hairDark = hex(env["HAIR_DARK"] ?? "#A89473") +let iris = hex(env["IRIS"] ?? "#4A7BC5") +let shirt = hex(env["SHIRT"] ?? "#5A7F3F") +let shirtLight = hex(env["SHIRT_LIGHT"] ?? "#7DA055") +let shirtDark = hex(env["SHIRT_DARK"] ?? "#3F5A2A") +let pants = hex(env["PANTS"] ?? "#5C4033") +let pantsLight = hex(env["PANTS_LIGHT"] ?? "#7C5C45") +let pantsDark = hex(env["PANTS_DARK"] ?? "#3D2920") +let belt = hex(env["BELT"] ?? "#8B6F47") +let dark = hex(env["DARK"] ?? "#1A1A2E") +let white = hex(env["WHITE"] ?? "#FFFFFF") + +let palette: [(role: String, r: UInt8, g: UInt8, b: UInt8, glyph: Character)] = [ + ("transparent", 0, 0, 0, "."), + ("outline", dark.0, dark.1, dark.2, "1"), + ("skin", skin.0, skin.1, skin.2, "2"), + ("skin-light", skinLight.0, skinLight.1, skinLight.2, "3"), + ("skin-dark", skinDark.0, skinDark.1, skinDark.2, "4"), + ("hair", hair.0, hair.1, hair.2, "5"), + ("hair-dark", hairDark.0, hairDark.1, hairDark.2, "6"), + ("iris", iris.0, iris.1, iris.2, "7"), + ("white", white.0, white.1, white.2, "8"), + ("shirt", shirt.0, shirt.1, shirt.2, "9"), + ("shirt-light", shirtLight.0, shirtLight.1, shirtLight.2, "A"), + ("shirt-dark", shirtDark.0, shirtDark.1, shirtDark.2, "B"), + ("pants", pants.0, pants.1, pants.2, "C"), + ("pants-light", pantsLight.0, pantsLight.1, pantsLight.2, "D"), + ("pants-dark", pantsDark.0, pantsDark.1, pantsDark.2, "E"), + ("belt", belt.0, belt.1, belt.2, "F"), +] + +// Alpha threshold: pixels with alpha below this are treated as transparent. +let alphaThreshold: UInt8 = 128 + +func nearestIndex(_ r: UInt8, _ g: UInt8, _ b: UInt8) -> Int { + var best = 1, bestDist = Int.max + for i in 1.. "); exit(1) } + +guard let src = CGImageSourceCreateWithURL(URL(fileURLWithPath: args[1]) as CFURL, nil), + let cg = CGImageSourceCreateImageAtIndex(src, 0, nil) else { exit(2) } +let w = cg.width, h = cg.height +let cs = CGColorSpace(name: CGColorSpace.sRGB)! +let bm = CGImageAlphaInfo.premultipliedLast.rawValue +let ctx = CGContext(data: nil, width: w, height: h, bitsPerComponent: 8, bytesPerRow: 0, space: cs, bitmapInfo: bm)! +ctx.draw(cg, in: CGRect(x: 0, y: 0, width: w, height: h)) +let buf = ctx.data!.bindMemory(to: UInt8.self, capacity: w * h * 4) + +// Pass 1: build an opacity mask via threshold. opaque[y*w+x] = true if alpha >= threshold. +var opaque = [Bool](repeating: false, count: w * h) +for y in 0..= alphaThreshold { opaque[y * w + x] = true } + } +} + +// Pass 2: detect outline cells — transparent cells adjacent (4-neighbors) to opaque cells. +var isOutline = [Bool](repeating: false, count: w * h) +for y in 0..= w || ny < 0 || ny >= h { continue } + if opaque[ny * w + nx] { isOutline[y * w + x] = true; break } + } + } +} + +// Pass 3: write matrix. +var out = "# matrix \(w)x\(h)\n# palette (roles — runtime substitutes actual colors):\n" +for p in palette { + out += String(format: "# %@ = %@\n", String(p.glyph), p.role) +} +out += "#\n" +for y in 0.. + + + + + diff --git a/design/tokegotchi/belt-styles/leather.svg b/design/tokegotchi/belt-styles/leather.svg new file mode 100644 index 0000000..d75a3ae --- /dev/null +++ b/design/tokegotchi/belt-styles/leather.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/compose.py b/design/tokegotchi/compose.py new file mode 100644 index 0000000..029b44e --- /dev/null +++ b/design/tokegotchi/compose.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +"""compose.py — substitute SVG fragment placeholders + color placeholders. + +Reads the base SVG, replaces: + {{HAIR_BODY}} → contents of hair-styles/$HAIR_STYLE.svg (default: horns) + {{HAT_BODY}} → contents of cosmetics/hat/$HAT.svg (default: empty) + {{COLOR}} → env var value (SKIN, SKIN_LIGHT, etc.) + +Output goes to stdout (or to argv[2] if given). +""" +import os, sys, pathlib + +HERE = pathlib.Path(__file__).parent + +def read(path): + p = HERE / path + return p.read_text() if p.exists() else "" + +base = read(sys.argv[1] if len(sys.argv) > 1 else "tokegotchi-base-v3.svg") + +# --- Fragment placeholders --- +hair = os.environ.get("HAIR_STYLE", "horns") +hat = os.environ.get("HAT", "") +eyewear = os.environ.get("EYEWEAR", "") +shirt = os.environ.get("SHIRT_STYLE", "tunic") +pants = os.environ.get("PANTS_STYLE", "long-pants") +belt = os.environ.get("BELT_STYLE", "leather") +cape = os.environ.get("CAPE", "") +held_r = os.environ.get("HELD_R", "") +held_l = os.environ.get("HELD_L", "") +base = base.replace("{{HAIR_BODY}}", read(f"hair-styles/{hair}.svg")) +base = base.replace("{{HAT_BODY}}", read(f"cosmetics/hat/{hat}.svg") if hat else "") +base = base.replace("{{EYEWEAR_BODY}}", read(f"cosmetics/eyewear/{eyewear}.svg") if eyewear else "") +base = base.replace("{{SHIRT_BODY}}", read(f"shirt-styles/{shirt}.svg")) +base = base.replace("{{PANTS_BODY}}", read(f"pants-styles/{pants}.svg")) +base = base.replace("{{BELT_BODY}}", read(f"belt-styles/{belt}.svg")) +base = base.replace("{{CAPE_BODY}}", read(f"cosmetics/cape/{cape}.svg") if cape else "") +base = base.replace("{{HELD_R_BODY}}", read(f"cosmetics/held/{held_r}.svg") if held_r else "") +base = base.replace("{{HELD_L_BODY}}", read(f"cosmetics/held/{held_l}.svg") if held_l else "") + +# --- Color placeholders --- +DEFAULTS = { + "SKIN": "#C7A5D9", + "SKIN_LIGHT": "#DBC1E8", + "SKIN_DARK": "#A07AB8", + "HAIR": "#E8DCC4", + "HAIR_DARK": "#A89473", + "IRIS": "#4A7BC5", + "SHIRT": "#5A7F3F", + "SHIRT_LIGHT": "#7DA055", + "SHIRT_DARK": "#3F5A2A", + "PANTS": "#5C4033", + "PANTS_LIGHT": "#7C5C45", + "PANTS_DARK": "#3D2920", + "BELT": "#8B6F47", + "DARK": "#1A1A2E", + "WHITE": "#FFFFFF", + # Animation transforms — full SVG transform expressions. + # 1 source pixel = 3.125 SVG units (100 viewBox / 32 source res). + "HEAD_TRANSFORM": "translate(0,0)", + "R_ARM_TRANSFORM": "rotate(0 32 65)", + "L_ARM_TRANSFORM": "rotate(0 68 65)", + "R_LEG_TRANSFORM": "translate(0,0)", + "L_LEG_TRANSFORM": "translate(0,0)", +} +for key, default in DEFAULTS.items(): + base = base.replace("{{" + key + "}}", os.environ.get(key, default)) + +out = sys.argv[2] if len(sys.argv) > 2 else None +if out: + pathlib.Path(out).write_text(base) +else: + sys.stdout.write(base) diff --git a/design/tokegotchi/cosmetics/cape/bat-wings.svg b/design/tokegotchi/cosmetics/cape/bat-wings.svg new file mode 100644 index 0000000..113d14a --- /dev/null +++ b/design/tokegotchi/cosmetics/cape/bat-wings.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/cosmetics/cape/blue-cape.svg b/design/tokegotchi/cosmetics/cape/blue-cape.svg new file mode 100644 index 0000000..f6f7274 --- /dev/null +++ b/design/tokegotchi/cosmetics/cape/blue-cape.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/cosmetics/cape/rainbow.svg b/design/tokegotchi/cosmetics/cape/rainbow.svg new file mode 100644 index 0000000..3966995 --- /dev/null +++ b/design/tokegotchi/cosmetics/cape/rainbow.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/design/tokegotchi/cosmetics/cape/red-cape.svg b/design/tokegotchi/cosmetics/cape/red-cape.svg new file mode 100644 index 0000000..78904fd --- /dev/null +++ b/design/tokegotchi/cosmetics/cape/red-cape.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/cosmetics/eyewear/eye-patch.svg b/design/tokegotchi/cosmetics/eyewear/eye-patch.svg new file mode 100644 index 0000000..5fd08fd --- /dev/null +++ b/design/tokegotchi/cosmetics/eyewear/eye-patch.svg @@ -0,0 +1,4 @@ + + + + diff --git a/design/tokegotchi/cosmetics/eyewear/heart-glasses.svg b/design/tokegotchi/cosmetics/eyewear/heart-glasses.svg new file mode 100644 index 0000000..98752ec --- /dev/null +++ b/design/tokegotchi/cosmetics/eyewear/heart-glasses.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/design/tokegotchi/cosmetics/eyewear/monocle.svg b/design/tokegotchi/cosmetics/eyewear/monocle.svg new file mode 100644 index 0000000..a6cf2f5 --- /dev/null +++ b/design/tokegotchi/cosmetics/eyewear/monocle.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/design/tokegotchi/cosmetics/eyewear/round-glasses.svg b/design/tokegotchi/cosmetics/eyewear/round-glasses.svg new file mode 100644 index 0000000..d33fb6a --- /dev/null +++ b/design/tokegotchi/cosmetics/eyewear/round-glasses.svg @@ -0,0 +1,4 @@ + + + + diff --git a/design/tokegotchi/cosmetics/eyewear/shades.svg b/design/tokegotchi/cosmetics/eyewear/shades.svg new file mode 100644 index 0000000..aa51701 --- /dev/null +++ b/design/tokegotchi/cosmetics/eyewear/shades.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/cosmetics/hat/beanie.svg b/design/tokegotchi/cosmetics/hat/beanie.svg new file mode 100644 index 0000000..a6c6c33 --- /dev/null +++ b/design/tokegotchi/cosmetics/hat/beanie.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/cosmetics/hat/cap.svg b/design/tokegotchi/cosmetics/hat/cap.svg new file mode 100644 index 0000000..fd1d838 --- /dev/null +++ b/design/tokegotchi/cosmetics/hat/cap.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/cosmetics/hat/crown.svg b/design/tokegotchi/cosmetics/hat/crown.svg new file mode 100644 index 0000000..1756a3f --- /dev/null +++ b/design/tokegotchi/cosmetics/hat/crown.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/cosmetics/hat/halo.svg b/design/tokegotchi/cosmetics/hat/halo.svg new file mode 100644 index 0000000..0e05d5c --- /dev/null +++ b/design/tokegotchi/cosmetics/hat/halo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/design/tokegotchi/cosmetics/hat/jester.svg b/design/tokegotchi/cosmetics/hat/jester.svg new file mode 100644 index 0000000..0764979 --- /dev/null +++ b/design/tokegotchi/cosmetics/hat/jester.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/design/tokegotchi/cosmetics/hat/octopus.svg b/design/tokegotchi/cosmetics/hat/octopus.svg new file mode 100644 index 0000000..40110c2 --- /dev/null +++ b/design/tokegotchi/cosmetics/hat/octopus.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/design/tokegotchi/cosmetics/hat/wizard-hat.svg b/design/tokegotchi/cosmetics/hat/wizard-hat.svg new file mode 100644 index 0000000..66e8c75 --- /dev/null +++ b/design/tokegotchi/cosmetics/hat/wizard-hat.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/cosmetics/held/crystal-ball.svg b/design/tokegotchi/cosmetics/held/crystal-ball.svg new file mode 100644 index 0000000..85759ab --- /dev/null +++ b/design/tokegotchi/cosmetics/held/crystal-ball.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/design/tokegotchi/cosmetics/held/fish.svg b/design/tokegotchi/cosmetics/held/fish.svg new file mode 100644 index 0000000..77a07c4 --- /dev/null +++ b/design/tokegotchi/cosmetics/held/fish.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/design/tokegotchi/cosmetics/held/magic-wand.svg b/design/tokegotchi/cosmetics/held/magic-wand.svg new file mode 100644 index 0000000..86339b1 --- /dev/null +++ b/design/tokegotchi/cosmetics/held/magic-wand.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/cosmetics/held/mug.svg b/design/tokegotchi/cosmetics/held/mug.svg new file mode 100644 index 0000000..9aa4b5b --- /dev/null +++ b/design/tokegotchi/cosmetics/held/mug.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/cosmetics/held/rubber-duck.svg b/design/tokegotchi/cosmetics/held/rubber-duck.svg new file mode 100644 index 0000000..555e508 --- /dev/null +++ b/design/tokegotchi/cosmetics/held/rubber-duck.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/design/tokegotchi/cosmetics/held/shield.svg b/design/tokegotchi/cosmetics/held/shield.svg new file mode 100644 index 0000000..514a8ff --- /dev/null +++ b/design/tokegotchi/cosmetics/held/shield.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/design/tokegotchi/cosmetics/held/staff.svg b/design/tokegotchi/cosmetics/held/staff.svg new file mode 100644 index 0000000..0db15b9 --- /dev/null +++ b/design/tokegotchi/cosmetics/held/staff.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/cosmetics/held/sword.svg b/design/tokegotchi/cosmetics/held/sword.svg new file mode 100644 index 0000000..8b53cd3 --- /dev/null +++ b/design/tokegotchi/cosmetics/held/sword.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/dynamic/skin-coral.png b/design/tokegotchi/dynamic/skin-coral.png new file mode 100644 index 0000000000000000000000000000000000000000..df59121d4d39b8c1bb4bce08e26504ff939ea875 GIT binary patch literal 11195 zcmeHNX;_n27XA`JD2jksb;KH6p+bR9N5Lf!m$HZuq{@zFM4h5V(UvM$ zghWNrib6#U%96P9CVFF(3%S(9LzdH$jl$uK5f6jZ6ObyJUhp>EEw4Zxe(dKg^sUtQNbiU$Z%Z z)Zb3OusH5}y#f2q&l>0NYPc_uwl4iV+e?0UkMFr@|Mb3@_3}*cj-b|i)>C9pg=}85Xfv&HlUc=l%|rSFV^?&L2rtZNV=k= zSx$>lz_S8qq_XBNsRIgqbQOHEDxEW3g9h9EGcFPIb~te^!o?wkMsg6|qkp76BlQ5Qe>6*h2DcSfpv^46mZk@YV4 zWLNq4r^rBAGi>^tV^OsUvOcUktzP{*XL{LewpfzMj~RAmG?ceRSgD7OM_n7@Ge_Az zRc2Kw3Q^(k-!3WQm2u_$$20iW?2ObXVrAl0v=#HsG?G5`R4Ljs&4otl?tXxM^CIb* zk3_dDLEHF*q{}^P;f}Vu7B=|kj(-mFD^_PlYDS(l+MfQ$Uc_3Xoe{{7M;7q)swT-Cr$il^0BF;S?bN) zMF^9FfXR0H&OHbdFG#evaX(|=eQ2bE)ZBX*_+T38LYo@~-VcBujh$(Mfd3wVkF;<@ zz;6fOpEmiQLclk};)4<3fDhsNkX^q$efR#_Fq>`qg2vHqlLr{Vf`rH*CHY+qI#?^rLy#Ph^nU`K&FwPEaj-16~8S)X`jE?!EDq} zP{{8=sSvuJMw-3N{uc!79|o30iRwH~1rw5P=z(@G1gxDEm-s`T!n=6Ix(SMBcR!(pq5G{5~(Hz#TQb^#oaHc zNIxX`?#)pryK*)wvMK8OMvPl&za%Og*HYt-;vSCT)oTvdj= znJar;QyM!q_LI|KReUK;%pY~O5*o&L(bbMpv7(bnZfCI)o4T6X$Aqh7brTE2y=D#= z(oT9FL)G&&RL>i{k`-7#gP8ti9G+LUq!3&X=83|~bq#ljGVUd}Q@Ji+<`MAhN)i^#`Nn0C(Yw8s;yKlCk$FU05Z z&}$Qjs$YcBSbZ)8^;wpKN5jsb+_YmP`kS!Ai$?CDB`X|zlUgi7#%UIgdCFYMgbyQ) z&L23Z8Qw|<8SO_8)`jqs|9(>)qP$1B{)W}x5OsZMEQERXxa0@AO1|pyQBBij);Rr? zp<;4qi!c^Dv4Be)E;hqXgn<+OtR@_(gAl3Pk(MY@*$}BPr3a4GLWq=p`Dq*}7!PJk z?Q>BA9fn9P?E3*n${!-79V6qxbqo6xU&KN{+Bgw5DVc#3e%#k&kz6bLQ*C45A;|(Kv*N76-U<&eJx6JSK8R)`V%iYKGMl)1tkz=G0R+?p~WnA$eSpCSi)a$QYZ z-8U;`+-gDutu_C)lX5_<8SD413#l49;-jLdE@nj;s@=xFrleeznoyFfn>78Xyg#$W z;QwUCjVAm&TSgSz<>Us7pI0;-vgIgm*RY=aeO%0AJ%7j=`Gn3Jx|CKVblh#y7Z=D% zd^0M)+*TREU~MBmfVRxFDz6<^txYtN0OV#pHX zFtdFLw;1{s&WJ32hC~0lw-qzn3|K5UH5(myS7^n5F4`H7n8FKaTbCdZAUt`jTp4;wX)N))Nr+X1Uh>qa7NhUC2 zepM?beOD-t`|M93KHLbZK|4l7(Yvnvt~0t;)DpAvGW90h;fc8R>bDJ>G$^kbo|Ly& z98*j0zE_@7KXQMpiAR@nUYMTvc)(C_wO|aDXg@&2PbTj`GNcAJT9em-bU^4g5RJ}W z<|>V&)*x@JnTbZ49AF;@q>mR#`ZbOg!xX8wuZN0sfDgd#Q&q)76PT+I4ec0l2$BtU zc!~xs92?h`NuT=$$ix#-xf33Y6#I#BN-{8cQ;Jaia#o;Xim9tcy$wnGu*&)oRF;Y7 zVFbz|P;U>OlpyzvEy3|G9X?0M9|QHaD5PGDaO7HYi5V~M;(05mw_{1va-1w@K*}93 z#aGJ@;QwmJh+y027S5v6`a#r{iI$wNl*gjl)f<+{eZ(5?9~P(`<)bPIE4Ep3t7kW( z%8tE*B>d}a{=bOO+?g@kVQN&C7(3&$J<`XNYolt_rI2u#j~aQ>ne<)vDI@3IP5lDk z*t&CsuQVqzbPFWv;~J(tN>rF*TPLR+MTxov5_OBMq#Y$H4DpLcWYjzj_&%W3d@3vA zQKB|NqBeGoC1}9++XAOSI@E!Vy*p%xc8rLkAEzSZd7pw|uD#|@Di zoMdky8rqxN!A;lHTW0t{nI&+N-ICGJK2>lG3b0NTeo!VG#D#W@2wpr2`uZaf6#K`V zo;`c@`Z3&CwF_N@bE@=StO`-}%?sbAOJ*3rHAQVXa~a|u8{i(5o?sZUk_Y(me!LT1 zHm;zu_OLG%smudHd2L%yCJDk~l9sQ~An_Jt;d}f%i^wi6CfzhapA6+Akn>&tPX&Rp z{rhc~4Ku3CRq>Id;<3JA+uZMMirXTJVu!B2@0SxIyVxj(X@Vu$_h?1{XSi8fe{HCT zZ&X#TF5#=Yc77s&%ngV8*XW@QwzeMTe!xn%s!Q-4;02(PEh|=FiUJL!L#cm@DGK;% zbLVTUfr^2ml2%{B6!jZa_~V&a1Kk2v8W=3ZLhCnJZ1Kd;>*+ul)shk4-`1=kXRU#` zPo&aO4#XooealI|UGcqdy!r}v;(ccz^`r-pdtE!n9$nKsIP3PM=lUyaL-+j)^po^_ literal 0 HcmV?d00001 diff --git a/design/tokegotchi/dynamic/skin-lavender.png b/design/tokegotchi/dynamic/skin-lavender.png new file mode 100644 index 0000000000000000000000000000000000000000..954a7555e4d6f3549afb905e315c71723c7b58aa GIT binary patch literal 11226 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/dynamic/skin-sand.png b/design/tokegotchi/dynamic/skin-sand.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0c69eab3ee28519f6eb2c9ed22aed45b65aaa0 GIT binary patch literal 11199 zcmeHNYfzKd)_xOF5$XYjsue^O1r!udZH0;<(V~dRMUGMd6{HGOl%N%eBoNYiM2d=4 zQ40uBv}g;6rGUyMQLzfjMM0Enf{378!ZjfwA>VrUo-^~!eA6H2OmjxR@draTNmzS5 zYwh(sd#yL#!_8@`&TJimAf`I6cl0C(D!iOPXitJ)o_ZoT_(l2F(`gNnQ)T=H7LL2O zItRMC5{u!rHbIH|hR`BE0zb3i2foUuz}LyYz~A`Pf4xg3_!Iv1ntYoegqH(N3BqcT zv*YT`EJ|-nb;82n@JZrdJQ899;)3nNDid$SnftFlZt(HE#@UChx9wWajor2Kv$B&( z_FvlEZ`ggB&*Me>Wc*WuR1N0_u zXrf{4(01h+g!r~Sl!;=`^ylr!tWXZ0lrN3hfWomfKb9JHt-5FGL|a z=fj}ftm_=HLs1JWg-@0yq)#WU^IVqjiEVF(qKuJsJ3j`+PITXW3K?ACl^Gty(vd^7 z6Uch14WCGryv)P~JYm!46vZY^$a>XGyOrt(F&o4ITDJx6p7HMv~jSJsQY!rJU%^Dfk{@8<9qZhOf?XqT?2eC5h zH)PCoGlQZ{OU*~SVmL7^MhK3 z8Zx3>`nKlY_Oto6Ded)=41xUO10O^6aJ9@={-*!?THE6}{bfm#<5iNssVg6}HY<*D zm4$PEA1rFA7u{L1y6r?P^F8qKPl2@4X=!TIGKm*X7KN9Ld?8XMs`qxNRZZ9P2Wxl6 z)XrR%&e$%rCBp5UQAG8v_(WM+)k_po{!%_s*Si2mG%J>>&t92efD-a{EY+j%^a2#o z8&n-e&l_tu6wTn$}YjTPqD#J%XEnKP&I)sY7hk*yN zC)5+uH^`5p4(T1Z*#D(Q?6U4()-GO3DlJ!^<|1~;f#QY)-DZ~J)+Sy{Xt$*QiS8~v z*;Iy9wbvc(eglw5yz5c4`CY&p4YE8M+P&ozOJd=Qd1&(|K@;r~RZB5bE#MPpUK~b} zi%}3uJsC}J!c27vm@2?vK0>Gg{;!6Nh!$=SC|Y%~^7UxeP%=A`8UAvz-*|vdq56D7I&;0mtnO z#BF+tKJxq_#O*gp5F5vBx(Bgg?;0F8Uk2r2X?ib?n=^xAd1DGrj=hi^V=)CdITk{4 zl$kpscz=WB(2NmYhUbQ0rq+s-_PnZ3o7mM6FDGYO==sX4(>Pa>=;u}8{Ut5j)U@$v zY42p~aZ37FQ>QOga!58ee=yQve{%(B&l<(p*M&_c1vB(bKJK3?v=p=XMjG}j1jx!PeK;+o=;3uT=(0N{PNnbg4QT?f=x_jlH^D_XK+bN;=?Mx${iwU zi0CA{ike$ORX2yV__-E!RUj)RzjLlMo0mfeV-7 zWP3>nwn92=9UI?)4pIW(lwi`DM?&Dg4{*|q5#uF_(CStLo`g2?Gp*rr!5`nB^UIz% zchlRXO7*Hs?!QDoPK@c`hTL&F6V)+ZZl<{0_@KB~@yw@R{SWuTr+2lYsHK!Hxib#u zddS+ry=U=dfd*OIY2k{pc0OS7FwZ*~Wxz1RHZA=#T+$3Zi22ol-=GYrfsz&#^AsNq zPbg`tQm){m;SM(vjTjMI9td$UFzq+s^+_@wyf9#Oj5|vvI5a1?7<6fmPWo@(cK-Ax z@ZR0qK6rvN_g%V6e~8J4m}st3^A~0p?_N!bO=V+B<$!nR-=A~UaTiAKH0Aj1>&U$4 zUaZQ_uv*2EKYJqoRgVjtWO-*;K(Cbu)XGhdxTF;GaLJu1oyw?o$8_TeMEYY;9_E`a z5TP_WrW^f5e8MrU67vn;f=>)9FXIHc4DFIbD}WbB9#4y<)(oA-oc1G#&{qxCnAD8^Gd=^N`{Q(L&)sM^lj7MX}UUNn@L zyV@H%LAzJ3MofAVIzg{mt6n22sMH6s^yC*~{FQJs|G*%2ytGb8M`pXsF}) z44~!mMq&qjF*Gwb#oR-#2#tQT7}MX}QhsgDw3R+>ImY^H*|*q!9g(Y2WTtyEV{Y-Ua2Uk?Y{&jlMXFpke zbv?iJK-6Gvl0f}bmux^N>|2|B=BZTK57c&?A!)(LG?;L3C-{8Vuv7F7HB$clZjEu0 z=Nhf0@j|24!Oh(Z=iaIv3x6A#_NJ0<$GVu$wN+N>DV@8`LSq8!B_V#w?)ve&TBjy* zCY87&*wq8)^6R3%QZ-ujc-%1E;$1C>v^oN zF(-hOS$2)N0+S@Po{or*sEe0N8!#uV2a^2G_ACNxBjBSMBjVuToEuuwHR7t} zLD{t1g2Zt#-&S4mEF@c1)HYXIPiJ*5Pw&gAsfbkN2r@n&pLVz~QM{Z}_6roZts{f2 z$UPT`rAxY~opjHC3t;f<5!;q@&l-A)*3mJEB<1n8K%L)WBWWSs%l#e7{IHyc8gpL2 zi(VzgktBw~r+~rJP8o~DaO)OmzG%jXlZ&9W{oG7ePrNMuqrO!`SG-E?)or@mXUU?e zer!p4zC%ExBtI^l*=w`Wl$3GrOs@V12g2!o>MWkq{IHI<`A&mhJkyg)zqi?vK`*CC z%f@`;L1p_v|M0kJ*_#rF+rMIa!LsLfV7QZgjRyv9y ziJwe&ip$Ja`LRdkUJf)))ZjAJ6sbjS7L1_J(n{h`!hx<9Ry>zQpo9YtM9ER-8moa5PnbD7S zc!aBSGVs#3r?HlN0#r0Cx5o34J+P>B{Q;F)M~M29&b(D9eXqjRR5M15*D;xL7O66` zhK?fN272K94a~9jm`O%*q(AZW|C1*s`iri9sTb7yd?Go4m$~q-BwV}M$syLf68+J(hNOBEJi3B*Hgl@z z`~I&4qt|FJ?&@gOlTIc_%J!hzvkhvGQZKd>Ri$L8O7F)z;@|-pd;BF8D(w?0JmC~J zNP#9%!z&JqNv^^qh97F-j7TB?D&>n>Z+z{qgT?I&3(zS$3Y9XzJ!n5V%N{d5h_?}^ zFiAi;K1#cAA2ZQ*7}Pd7<9qQ|U?S{bY;9Jf4|u-^~$*7SeiN?VfT_i!-6-$!VFYUm7tY+|<=tZ{ELN zD`#6ty&|>UXfCs(mOGadsTQe(>1pAFKylw4rm$+&1@1Q;|D3V_Li-+wfj?Co;@tBF zW?_rS*(yB5Ch9F1pEFx|x~9Z0GF&Fnsc_eU8KS2M%>Yf8E#MO$-7&%s*_lJ;I!B`! zV65;YNO>(LevhsGF?KZ;z literal 0 HcmV?d00001 diff --git a/design/tokegotchi/dynamic/skin-slate.png b/design/tokegotchi/dynamic/skin-slate.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a37bf4847fe58b4d2d01e91ef43609bc0c20cc GIT binary patch literal 11222 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/hair-styles/antennae.svg b/design/tokegotchi/hair-styles/antennae.svg new file mode 100644 index 0000000..74287b1 --- /dev/null +++ b/design/tokegotchi/hair-styles/antennae.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/hair-styles/bald.svg b/design/tokegotchi/hair-styles/bald.svg new file mode 100644 index 0000000..a959a48 --- /dev/null +++ b/design/tokegotchi/hair-styles/bald.svg @@ -0,0 +1 @@ + diff --git a/design/tokegotchi/hair-styles/cat-ears.svg b/design/tokegotchi/hair-styles/cat-ears.svg new file mode 100644 index 0000000..4b30cb7 --- /dev/null +++ b/design/tokegotchi/hair-styles/cat-ears.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/hair-styles/flame.svg b/design/tokegotchi/hair-styles/flame.svg new file mode 100644 index 0000000..58f7cbe --- /dev/null +++ b/design/tokegotchi/hair-styles/flame.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/hair-styles/horns.svg b/design/tokegotchi/hair-styles/horns.svg new file mode 100644 index 0000000..e4c87b1 --- /dev/null +++ b/design/tokegotchi/hair-styles/horns.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/design/tokegotchi/hair-styles/long.svg b/design/tokegotchi/hair-styles/long.svg new file mode 100644 index 0000000..28f1c62 --- /dev/null +++ b/design/tokegotchi/hair-styles/long.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/hair-styles/mohawk.svg b/design/tokegotchi/hair-styles/mohawk.svg new file mode 100644 index 0000000..3da8f37 --- /dev/null +++ b/design/tokegotchi/hair-styles/mohawk.svg @@ -0,0 +1,4 @@ + + + + diff --git a/design/tokegotchi/hair-styles/mushroom.svg b/design/tokegotchi/hair-styles/mushroom.svg new file mode 100644 index 0000000..97cf542 --- /dev/null +++ b/design/tokegotchi/hair-styles/mushroom.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/design/tokegotchi/hair-styles/pigtails.svg b/design/tokegotchi/hair-styles/pigtails.svg new file mode 100644 index 0000000..1dc514d --- /dev/null +++ b/design/tokegotchi/hair-styles/pigtails.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/design/tokegotchi/hair-styles/spiky.svg b/design/tokegotchi/hair-styles/spiky.svg new file mode 100644 index 0000000..7682913 --- /dev/null +++ b/design/tokegotchi/hair-styles/spiky.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/design/tokegotchi/hair-styles/tentacles.svg b/design/tokegotchi/hair-styles/tentacles.svg new file mode 100644 index 0000000..afba38d --- /dev/null +++ b/design/tokegotchi/hair-styles/tentacles.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/design/tokegotchi/pants-styles/bell-bottoms.svg b/design/tokegotchi/pants-styles/bell-bottoms.svg new file mode 100644 index 0000000..68802c1 --- /dev/null +++ b/design/tokegotchi/pants-styles/bell-bottoms.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/design/tokegotchi/pants-styles/blue-trousers.svg b/design/tokegotchi/pants-styles/blue-trousers.svg new file mode 100644 index 0000000..78762da --- /dev/null +++ b/design/tokegotchi/pants-styles/blue-trousers.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/design/tokegotchi/pants-styles/kilt.svg b/design/tokegotchi/pants-styles/kilt.svg new file mode 100644 index 0000000..c0ca394 --- /dev/null +++ b/design/tokegotchi/pants-styles/kilt.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/design/tokegotchi/pants-styles/long-pants.svg b/design/tokegotchi/pants-styles/long-pants.svg new file mode 100644 index 0000000..2127402 --- /dev/null +++ b/design/tokegotchi/pants-styles/long-pants.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/design/tokegotchi/pants-styles/shorts.svg b/design/tokegotchi/pants-styles/shorts.svg new file mode 100644 index 0000000..5192512 --- /dev/null +++ b/design/tokegotchi/pants-styles/shorts.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/design/tokegotchi/pants-styles/striped-leggings.svg b/design/tokegotchi/pants-styles/striped-leggings.svg new file mode 100644 index 0000000..7c86fff --- /dev/null +++ b/design/tokegotchi/pants-styles/striped-leggings.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/design/tokegotchi/pixelate.swift b/design/tokegotchi/pixelate.swift new file mode 100644 index 0000000..1e600f1 --- /dev/null +++ b/design/tokegotchi/pixelate.swift @@ -0,0 +1,96 @@ +// pixelate.swift — render pipeline for Tokegotchi sprites. +// Pipeline: in.png → (optional outline at source res) → nearest-neighbor upscale → (optional CRT scanlines) → out.png +// +// Usage: swift pixelate.swift [outline] [crt] +// +// Notes: +// - `outline` adds a 1-pixel dark border around the silhouette AT SOURCE RESOLUTION, so it scales as 1 chunky pixel. +// For cosmetics, run outline ONLY on the final composite, not per-layer. +// - `crt` darkens every 3rd row of the upscaled image to simulate CRT scanlines. + +import AppKit +import CoreGraphics +import ImageIO +import UniformTypeIdentifiers + +let args = CommandLine.arguments +guard args.count >= 4, let scale = Int(args[3]) else { + FileHandle.standardError.write("usage: pixelate [outline] [crt]\n".data(using: .utf8)!) + exit(1) +} +let doOutline = args.contains("outline") +let doCRT = args.contains("crt") + +guard let src = CGImageSourceCreateWithURL(URL(fileURLWithPath: args[1]) as CFURL, nil), + let cg = CGImageSourceCreateImageAtIndex(src, 0, nil) else { exit(2) } + +let cs = CGColorSpace(name: CGColorSpace.sRGB)! +let bm = CGImageAlphaInfo.premultipliedLast.rawValue +func makeCtx(_ w: Int, _ h: Int) -> CGContext { + CGContext(data: nil, width: w, height: h, bitsPerComponent: 8, bytesPerRow: 0, space: cs, bitmapInfo: bm)! +} + +// Decode source into editable buffer at native resolution. +let w0 = cg.width, h0 = cg.height +let smallCtx = makeCtx(w0, h0) +smallCtx.draw(cg, in: CGRect(x: 0, y: 0, width: w0, height: h0)) +guard let smallData = smallCtx.data else { exit(3) } +let buf = smallData.bindMemory(to: UInt8.self, capacity: w0 * h0 * 4) + +// Outline pass: any transparent pixel adjacent to a non-transparent neighbor becomes outline color. +if doOutline { + let (or, og, ob): (UInt8, UInt8, UInt8) = (0x1A, 0x1A, 0x2E) + var marks = [Bool](repeating: false, count: w0 * h0) + let neighbors = [(-1, 0), (1, 0), (0, -1), (0, 1)] + for y in 0..= w0 || ny < 0 || ny >= h0 { continue } + let ni = (ny * w0 + nx) * 4 + if buf[ni + 3] != 0 { marks[y * w0 + x] = true; break } + } + } + } + for y in 0..] +# env: HAIR_STYLE (default: horns), HAT (default: none), plus palette overrides. +set -euo pipefail +cd "$(dirname "$0")" + +NAME="${1:-tokegotchi-base-v3}" +SVG_IN="$NAME.svg" +SVG_RESOLVED="$NAME-resolved.svg" +SMALL="$NAME-32x48.png" +PIXEL="$NAME-pixel.png" +CRT="$NAME-crt.png" +MATRIX="$NAME.matrix" + +if [[ ! -f "$SVG_IN" ]]; then echo "missing: $SVG_IN" >&2; exit 1; fi + +# Compose the SVG: substitute hair-style + hat fragments + all color placeholders. +python3 compose.py "$SVG_IN" "$SVG_RESOLVED" + +# Rasterize to source res. viewBox is 100×168, so 32 wide → ~54 tall. +rsvg-convert -w 32 -h 54 "$SVG_RESOLVED" -o "$SMALL" + +# Outline + 16x upscale (no CRT). +swift pixelate.swift "$SMALL" "$PIXEL" 16 outline + +# Outline + 16x upscale + CRT. +swift pixelate.swift "$SMALL" "$CRT" 16 outline crt + +# Bake matrix. Pass palette so bake's quantization matches render colors. +SKIN="${SKIN:-#C7A5D9}" SKIN_LIGHT="${SKIN_LIGHT:-#DBC1E8}" SKIN_DARK="${SKIN_DARK:-#A07AB8}" \ + HAIR="${HAIR:-#E8DCC4}" HAIR_DARK="${HAIR_DARK:-#A89473}" IRIS="${IRIS:-#4A7BC5}" \ + SHIRT="${SHIRT:-#5A7F3F}" SHIRT_LIGHT="${SHIRT_LIGHT:-#7DA055}" SHIRT_DARK="${SHIRT_DARK:-#3F5A2A}" \ + PANTS="${PANTS:-#5C4033}" PANTS_LIGHT="${PANTS_LIGHT:-#7C5C45}" PANTS_DARK="${PANTS_DARK:-#3D2920}" \ + BELT="${BELT:-#8B6F47}" DARK="${DARK:-#1A1A2E}" WHITE="${WHITE:-#FFFFFF}" \ + swift bake.swift "$SMALL" "$MATRIX" + +echo "rendered: $PIXEL $CRT $MATRIX (HAIR_STYLE=${HAIR_STYLE:-horns} HAT=${HAT:-none})" diff --git a/design/tokegotchi/render_matrix.swift b/design/tokegotchi/render_matrix.swift new file mode 100644 index 0000000..7eab27d --- /dev/null +++ b/design/tokegotchi/render_matrix.swift @@ -0,0 +1,98 @@ +// render_matrix.swift — render a baked matrix file to PNG using a palette from env vars. +// Demonstrates that matrix-as-runtime + palette-swap = N color combos from 1 matrix. +// +// Usage: swift render_matrix.swift [upscale] + +import AppKit +import CoreGraphics +import ImageIO +import UniformTypeIdentifiers + +func hex(_ s: String) -> (UInt8, UInt8, UInt8) { + var t = s + if t.hasPrefix("#") { t.removeFirst() } + let v = UInt32(t, radix: 16) ?? 0 + return (UInt8((v >> 16) & 0xFF), UInt8((v >> 8) & 0xFF), UInt8(v & 0xFF)) +} + +let env = ProcessInfo.processInfo.environment +let skin = hex(env["SKIN"] ?? "#C7A5D9") +let skinLight = hex(env["SKIN_LIGHT"] ?? "#DBC1E8") +let skinDark = hex(env["SKIN_DARK"] ?? "#A07AB8") +let hair = hex(env["HAIR"] ?? "#E8DCC4") +let hairDark = hex(env["HAIR_DARK"] ?? "#A89473") +let iris = hex(env["IRIS"] ?? "#4A7BC5") +let shirt = hex(env["SHIRT"] ?? "#5A7F3F") +let shirtLight = hex(env["SHIRT_LIGHT"] ?? "#7DA055") +let shirtDark = hex(env["SHIRT_DARK"] ?? "#3F5A2A") +let pants = hex(env["PANTS"] ?? "#5C4033") +let pantsLight = hex(env["PANTS_LIGHT"] ?? "#7C5C45") +let pantsDark = hex(env["PANTS_DARK"] ?? "#3D2920") +let belt = hex(env["BELT"] ?? "#8B6F47") +let dark = hex(env["DARK"] ?? "#1A1A2E") +let white = hex(env["WHITE"] ?? "#FFFFFF") + +// glyph → (r, g, b, a) +let lut: [Character: (UInt8, UInt8, UInt8, UInt8)] = [ + ".": (0, 0, 0, 0), + "1": (dark.0, dark.1, dark.2, 255), + "2": (skin.0, skin.1, skin.2, 255), + "3": (skinLight.0, skinLight.1, skinLight.2, 255), + "4": (skinDark.0, skinDark.1, skinDark.2, 255), + "5": (hair.0, hair.1, hair.2, 255), + "6": (hairDark.0, hairDark.1, hairDark.2, 255), + "7": (iris.0, iris.1, iris.2, 255), + "8": (white.0, white.1, white.2, 255), + "9": (shirt.0, shirt.1, shirt.2, 255), + "A": (shirtLight.0, shirtLight.1, shirtLight.2, 255), + "B": (shirtDark.0, shirtDark.1, shirtDark.2, 255), + "C": (pants.0, pants.1, pants.2, 255), + "D": (pantsLight.0, pantsLight.1, pantsLight.2, 255), + "E": (pantsDark.0, pantsDark.1, pantsDark.2, 255), + "F": (belt.0, belt.1, belt.2, 255), +] + +let args = CommandLine.arguments +guard args.count >= 3 else { print("usage: render_matrix [upscale]"); exit(1) } +let scale = args.count > 3 ? Int(args[3]) ?? 1 : 1 + +let raw = try String(contentsOfFile: args[1], encoding: .utf8) +let rows: [String] = raw.split(whereSeparator: { $0 == "\n" }) + .map(String.init) + .filter { !$0.hasPrefix("#") && !$0.isEmpty } + +let h = rows.count +let w = rows[0].count + +let cs = CGColorSpace(name: CGColorSpace.sRGB)! +let bm = CGImageAlphaInfo.premultipliedLast.rawValue +let ctx = CGContext(data: nil, width: w * scale, height: h * scale, + bitsPerComponent: 8, bytesPerRow: 0, + space: cs, bitmapInfo: bm)! +let buf = ctx.data!.bindMemory(to: UInt8.self, capacity: w * scale * h * scale * 4) + +for (y, row) in rows.enumerated() { + for (x, glyph) in row.enumerated() { + let (r, g, b, a) = lut[glyph] ?? (0, 0, 0, 0) + // Paint the scale×scale block for this matrix cell. + // CGContext y is bottom-up — flip. + for sy in 0.. + + + + + + + + + + + + + diff --git a/design/tokegotchi/shirt-styles/lab-coat.svg b/design/tokegotchi/shirt-styles/lab-coat.svg new file mode 100644 index 0000000..265fcf0 --- /dev/null +++ b/design/tokegotchi/shirt-styles/lab-coat.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/design/tokegotchi/shirt-styles/red-robe.svg b/design/tokegotchi/shirt-styles/red-robe.svg new file mode 100644 index 0000000..51cd155 --- /dev/null +++ b/design/tokegotchi/shirt-styles/red-robe.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/design/tokegotchi/shirt-styles/striped.svg b/design/tokegotchi/shirt-styles/striped.svg new file mode 100644 index 0000000..849d54f --- /dev/null +++ b/design/tokegotchi/shirt-styles/striped.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/design/tokegotchi/shirt-styles/tunic.svg b/design/tokegotchi/shirt-styles/tunic.svg new file mode 100644 index 0000000..c757220 --- /dev/null +++ b/design/tokegotchi/shirt-styles/tunic.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/design/tokegotchi/shirt-styles/vest.svg b/design/tokegotchi/shirt-styles/vest.svg new file mode 100644 index 0000000..e1bef15 --- /dev/null +++ b/design/tokegotchi/shirt-styles/vest.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/design/tokegotchi/swatches.sh b/design/tokegotchi/swatches.sh new file mode 100644 index 0000000..44f84ad --- /dev/null +++ b/design/tokegotchi/swatches.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# swatches.sh — render the v3 base sprite under each of the 6 skin presets. +# Demonstrates that the parameterized palette swap works end-to-end. +set -euo pipefail +cd "$(dirname "$0")" + +mkdir -p swatches + +declare -A PRESETS=( + [lavender]="#C7A5D9 #DBC1E8 #A07AB8" + [peach]="#E5A88E #F0C0A8 #B8826A" + [sage]="#A5D9B5 #C5E8CC #7AB590" + [sand]="#DDC893 #ECDDB5 #B89E5C" + [slate]="#A8B5C7 #C5CFDB #7E8AA0" + [coral]="#E89C9C #F2B8B8 #B86E6E" +) + +for name in "${!PRESETS[@]}"; do + read -r SKIN SKIN_LIGHT SKIN_DARK <<< "${PRESETS[$name]}" + echo "→ $name ($SKIN / $SKIN_LIGHT / $SKIN_DARK)" + SKIN="$SKIN" SKIN_LIGHT="$SKIN_LIGHT" SKIN_DARK="$SKIN_DARK" \ + ./render.sh tokegotchi-base-v3 > /dev/null + cp tokegotchi-base-v3-pixel.png "swatches/skin-$name.png" + cp tokegotchi-base-v3.matrix "swatches/skin-$name.matrix" +done + +echo +echo "wrote swatches/skin-{lavender,peach,sage,sand,slate,coral}.{png,matrix}" diff --git a/design/tokegotchi/swatches/skin-coral.matrix b/design/tokegotchi/swatches/skin-coral.matrix new file mode 100644 index 0000000..b40e1f8 --- /dev/null +++ b/design/tokegotchi/swatches/skin-coral.matrix @@ -0,0 +1,67 @@ +# matrix 32x48 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +............1......11........... +...........131....1521.......... +...........1221..15221.......... +...........1361..1561........... +...........1561111561........... +...........1322222561........... +..........133322222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1233583223532221........ +........1223858228583221........ +........1223575335773221........ +........1223715225172441........ +........1222575445754441........ +........1222232444244441........ +.........122222FD444441......... +..........1224FEED4441.......... +........1111444444441111........ +.......1AAA6114444116A991....... +......19AA999999999999BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB99BB1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA99BB99BB9241....... +.......132FFFFFCCFFFFF241....... +.......1329999BBBBBBBC241....... +........126AAA99999BB621........ +.........11222222222211......... +..........1DDDC11FDCC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DEEE11EEEC1.......... +..........124F44124F41.......... +...........11111.1111........... +................................ +................................ diff --git a/design/tokegotchi/swatches/skin-coral.png b/design/tokegotchi/swatches/skin-coral.png new file mode 100644 index 0000000000000000000000000000000000000000..30871db7024edf52c9a6cea8c3cfd2359aeebab5 GIT binary patch literal 12610 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/swatches/skin-lavender.matrix b/design/tokegotchi/swatches/skin-lavender.matrix new file mode 100644 index 0000000..a2e29d7 --- /dev/null +++ b/design/tokegotchi/swatches/skin-lavender.matrix @@ -0,0 +1,67 @@ +# matrix 32x48 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +............1......11........... +...........151....1561.......... +...........1561..15661.......... +...........1561..1561........... +...........1561111561........... +...........1322222561........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1233383223832221........ +........1223828228283221........ +........1223372333723221........ +........1223412222122441........ +........1222343443434441........ +........1222232444244441........ +.........12222244444441......... +..........1224411D4441.......... +........1111444444441111........ +.......1AAA4114444114A991....... +......19AA999999999999BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA99BB99BB9241....... +.......132FFFFFCCFFFFF241....... +.......1329999BBBBBBBC241....... +........124AAA99999BB421........ +.........11222222222211......... +..........1DDDC11FDCC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DEEE11EEEC1.......... +..........124444144441.......... +...........11111.1111........... +................................ +................................ diff --git a/design/tokegotchi/swatches/skin-lavender.png b/design/tokegotchi/swatches/skin-lavender.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa313576ae0e02eb1a03bef45ddd1a215fa8bcc GIT binary patch literal 12590 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/swatches/skin-peach.matrix b/design/tokegotchi/swatches/skin-peach.matrix new file mode 100644 index 0000000..a1fddc3 --- /dev/null +++ b/design/tokegotchi/swatches/skin-peach.matrix @@ -0,0 +1,67 @@ +# matrix 32x48 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +............1......11........... +...........131....1521.......... +...........1221..15221.......... +...........1361..1561........... +...........1561111561........... +...........1322222521........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1233553223532221........ +........1223858228583221........ +........1225575335773221........ +........1223715225172441........ +........1222575445754441........ +........1222232444244441........ +.........122222FF444441......... +..........1224FEED4441.......... +........1111444444441111........ +.......1AAA6114444116A991....... +......19AA999999999999BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB99BB1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA99BB99BB9241....... +.......132FFFFFCCFFFFF241....... +.......1329999BBBBBBBB241....... +........126AAA99999BB621........ +.........11222222222211......... +..........1DDDC11FDCC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DEEE11EEEC1.......... +..........124F44124F41.......... +...........11111.1111........... +................................ +................................ diff --git a/design/tokegotchi/swatches/skin-peach.png b/design/tokegotchi/swatches/skin-peach.png new file mode 100644 index 0000000000000000000000000000000000000000..407f50497e4895b77675eebc87a89eff5cddb957 GIT binary patch literal 12594 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 Dp4~1$ literal 0 HcmV?d00001 diff --git a/design/tokegotchi/swatches/skin-sand.matrix b/design/tokegotchi/swatches/skin-sand.matrix new file mode 100644 index 0000000..3dde7c0 --- /dev/null +++ b/design/tokegotchi/swatches/skin-sand.matrix @@ -0,0 +1,67 @@ +# matrix 32x48 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +............1......11........... +...........121....1521.......... +...........1221..15221.......... +...........1261..1561........... +...........1561111561........... +...........1322222321........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1233583223532221........ +........1223858228583221........ +........1225575335773221........ +........1223715225172441........ +........1222575445754441........ +........1222232444244441........ +.........122222FF444441......... +..........1224FEEF4441.......... +........1111444444441111........ +.......1AAA6114444116A991....... +......19AA999999999999BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB99BB1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA99BB99BB9241....... +.......132FFFFFCCFFFFF241....... +.......1329999BBBBBBBB241....... +........126AAA99999BB621........ +.........11222222222211......... +..........1DFDC11FDCC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DEEE11EEEC1.......... +..........126F44126F41.......... +...........11111.1111........... +................................ +................................ diff --git a/design/tokegotchi/swatches/skin-sand.png b/design/tokegotchi/swatches/skin-sand.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4d3229cadb2bf909b68818bb5947d8297cf707 GIT binary patch literal 12622 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/swatches/skin-slate.matrix b/design/tokegotchi/swatches/skin-slate.matrix new file mode 100644 index 0000000..fb3cd32 --- /dev/null +++ b/design/tokegotchi/swatches/skin-slate.matrix @@ -0,0 +1,67 @@ +# matrix 32x48 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +............1......11........... +...........151....1521.......... +...........1261..15261.......... +...........1561..1561........... +...........1561111561........... +...........1322222561........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1233383223832221........ +........1223838228383221........ +........1223372333723221........ +........1223212222122441........ +........1222323443234441........ +........1222232444244441........ +.........12222244444441......... +..........1224411D4441.......... +........1111444444441111........ +.......1A9A4114444114A991....... +......19AA999999999999BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB99BB1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA99BB99BB9241....... +.......132FFFFFCCFFFFF241....... +.......1329999BBBBBBBB241....... +........124AAA99999BB421........ +.........11222222222211......... +..........1DDDC11FDCC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1CEEE11EEEC1.......... +..........124444124441.......... +...........11111.1111........... +................................ +................................ diff --git a/design/tokegotchi/swatches/skin-slate.png b/design/tokegotchi/swatches/skin-slate.png new file mode 100644 index 0000000000000000000000000000000000000000..b387305439fa22bedc1f67e7919e90b1e586f88d GIT binary patch literal 12675 zcmeHOdpy)>+nL>ar6}akj2SvOWFv=G5<}8(f_><8TD{brMefEBLWli?E_A#Z6W{0{`a2KbV?_hv}-nz~Ax+|NfMK%bWD?-&G&ua21#K7~pVA`!_hP z^^C;#w*>ywB|5A-*qs%%C%nI`snzD5|E%**6Ftmt?_GH29^vkV%WDrfZwk0>Mz}nE z)3VGw^+Rs?iAS$(U$^YqzHgGnwx#2$&K`($im{# z==X2d?;LGWyzXHsOgR+kg?kx-(AR=c{X$Nb^@<#^R;*L(nKK>3FT`BsV~V|Y6<2p| z`N}kwI9nleF_JVi%&K=SKeCFU?A&&!+N@L)skD{L!kEW8v6%&lx~oR>%(72F+igR zcyOO?v8C!OwBJv{Pw~~#j-HH0*G%$oo~37_HQ)aYK#E=RlA2u#`g^NDSpRcJ05 zKe$kZ0G_aLsu^yfeoHzA_%wWMHKAVOXM0=u?AfR*BV?%kgW5V`ZB(R#S7h+X?H5aYP^b~NQy4vZY!N##g3L#0y?5Hkz7=( z=58XG)>Wx-Nkgnbo?rGGvc`Zy#=j`G#`f$I&~xv|SF;cRcK9g<+*WLRP6OR9)#+gy zE(Eu*qhmWk2KPC=K6ojz{{^_2u+IZy%U%FxViq~ud1_S_dB?}x@3Ps6jOu}+Qi_W( zTTkz~p@inclAKDFrI5x_3s3SdHl3&`Hc#cg_c_~_#E*ywk1&+nXy(e(T@~xc>U@39 z!`rj}K6d@z!HeD78j!BxZeni!ygO?K#crscq?5&Ac4?+K2`%??zV&?EU4Pljk7-5k z&^mqNh5sY@`!iGpznCjy_$k=(mnrf(SBG;uciOjcKbl=&6q9?j*j?9;B4Wgle}S#7 z4z|IzR)>lU`P~Ck$?LGSi#Tl=Xr}K@~qR~S(k)* z8}kAa=KU@wCx0wf}}#oz-Iv&fZ} za+x{54FuAWLsis0C$h}e72R5@+-1z_`FJ2z?58a6q$*l3#yd(bMl6`x$&OOEn1s{Se}R!m^UDVG#E)3%QVi7a8yB z5Ho}g96_$B*6E0l#;{XWYD;s`z)$_v^0;%WO=5G@jGFrfo-r4SE8Q9mJ519Zi^SDs zh0~)euI8@MtLAj{2dj5-X%A*sQ+9P{Ka$@Fo>8NG`(5`sNw5QxWv1LWI36(+GB~dH zfw{b?$%kPk)@fg;2`R_(=b|vgmaV`R(U=cn%R+dEg+yLGVhat}!fU3lR#_JYu!S)g z6vP%LAjJ$8bgFEqEdsU-4cQ|~N`aEnva(D>$>(78#4K`lbUe&bsU!@43UM_QkMkXi zgO3YVAF&zH;f%0o8l5CXNduMXAE95(i|GE1%B0h6Gn5VKg>gbQ<1-L!L^4WM6eP#B zr@zcx67TS_w(Y(AN_tCl{*>dTb3sXNas_CAYE`*uZ)X`2jEAt-4;?tqk!^)wTVbXs z2m!bq0F=t~5pl{O=9c-imLdQH0l?m2I-+^<=y}d zKkVtQ`5Jm+m*F_p)JJOW3eY|PGJ2?7lDh4Ey?k8^In4l?8zx|aW`v;ZWoz8r8pQ1`) z9XTm7qMf3Sc*9EK}Sl1_fvv@?uMPM_pnsZRP-;5>XLx8Fq6o$MKC>mSzwzpL_ zgyzenqo=42^Buy(wU+B0I*5uKE%|S*%)_I{S!zzWB#`DjG5!Xov)e&u=dS!3sWEj2 z8E?iU_hOt{qGc$j-HX??KEBJIHiC$BKug|01coM!xEY3wjEC(Ht zx3<1SIFA)ZQ5iX64)mteEs+o>gZ0TNf=@_@3qh;|{blD>h^+y!TH{cD6^RuG z#ENrY6oSNR8;I4!EK<*84|LMMf%KN4FFEf*WXbYfnY(w(ze|-hm^brw@S8EXxp z`*N)c>jJgI{E1rTW5nwF*ZP0h1BmqKKIU|&2_9PBex2hYkZPsMMn@~HU4-{7TJA2a z;6HadSVv|u_?tl#lEkAx(Gd-aSt9DIFU((p-?UFv>8E?Y?T)p--NmSgxJcNO9Epz`oT3SFlRU z6Ef~Iyn~2Ir;YM({0G_pL>$`;2zoM~V4x*KD%}yZ2+`6NQpe4b=@?&E1L(=6*AbHq zzK4W)ViqZ)#pM(iU$@rSA2hI_{8MnS#Ik!>V&NY&V}DTp@3Q;Hl%uchRw-X;TE>UB zww#ijh|{FZoqOe*6UQPrCK)Mlx|zC;L>-30Z|~kA*8qIm8z|4HQpV4i5eLAC?CjZ? z(^=%Y z_cdphlr$krV#umm)7{h+LGc-4-r->XPz(wvIIQY5FgiU1C|a7EFrrxjVl`n$F(_^V z6r%7|7~(bX*oqtjg!naxlW)s%YB0qA9)_Np1wZHLTbz5p^KbRBSLn0;BzbCeFSz|W?@81>(6oNRV zOxi;15va|9Vr*^6bR(4NbwGXn?2wu_7LwM2kbL>*3mRXzfsTj1xWoTfaX5Qw_jK=( zMN7ST8us?*w5D@($`3^AOA{npem%zaZkbk-5-0HSni2iw7A%>t`myVqpIfH&)h%a7+f@K2aZaVf}DDYA}p$b1@6Nsh1 zfBBSGhCg@_HpMp69?q2}Tn@C&XIL@lBa=*C=2PD9cp0sn_DUR0C zlFU4A7i*=;OfOoWMco5FJCJBIVw_ z5EgMJNtVzeO)xKQ^#&RV%Tn>zSnyYqzoTUA$8KBvt0tsCe1vEYwVDP8IVTlJxRr zXUx6xWvSFPBt}$!NI+t5_bNw8a}a4>HLKpbymzZ1@gSU>T{VFDsRQPYzCU(~Pti8yirB1?6~xu^vzYx2 zcm0hd^7w&=E7CG=SR9P%mu=@yaq$TqsY#WMx5{6f_}95J55MW@<0#T!@a}&uM6xA4 zTUM9Y>umE{?U2H#6>&N&Xear)d(zbmCB=c>K$ORq>jV<=07~oK&p`(TA47{f#3+ zlH%$MwH@0^=O$8eZ4a->pygVeC?|2mC+^mY{GoqII_9W5J6Ro0Pn;+}WBUnwIH~{o z1EP%q^h}&a{IHT^6PVP~_NxafZ45y+{x(x$z3R$tc=%E#uUf*HDLsF8MUkv&>k{Z_ z51W%j9B_}m*S1i}NX?=De>pVMQS!3zyjEvQ`PeoyOZU9na7n|nJhuh2@*>o4>Za?F zk&B=(J5%T%fn1;#+9Otv6R}dZ8qDwPZNhHvSV5V0>fkQS(cox}DmfC4)o-WZF{AVI zu=)+^zc0&t0qqOZzWB`qiB0jd^YdaisqgRaJ3jWHyl76fps!EWwz+HGy-xF2L6YQ# zn*83q-NW6(Q3(g>5w;n+CR8s-6Bg091DJYkf;8dyEG$hp1M$DQvDg-=R{-2Ln&0*m zOA~&CNFW^T!_tKL@Ys5rWmuX3cLA<3>`SpUVLd#iv+*YsRy-k1n5bo9y>@T>sRG(p zH+S%Kz4%Eq#yR+d=?=fPb$WCW4@sf~6Et5`gmd>pa`iKV?>HSG~&bq1>?o5kx- z)e`@%%QT*u`H$0!KAQfem+b!FO+MeBSG@Bi(2WlIMtt%%WQX-x(8l{yW%=Vb?PpgN z(#oXn#>(BK5l7{sw3I!>=)R)+E)E?ceP#_Yfp6(ke#9V+*OaTQS6$)UztnQ0fd}}< zf4W%u6DzU`tKd6TliLZZE1W}=>*E>)1*V&oUw5&4X`<}F;boBeRm{8TtA^ZnDO^2X zy7a*zM0($8aDDv0=p)opMQ@IBH>6a^l~H>YiI}Rf^q>00RaeYv(7}Cr;&X_o`VSBr NoHsh%T<3fAe*o5xSu_9u literal 0 HcmV?d00001 diff --git a/design/tokegotchi/tokegotchi-base-v1.svg b/design/tokegotchi/tokegotchi-base-v1.svg new file mode 100644 index 0000000..23550a1 --- /dev/null +++ b/design/tokegotchi/tokegotchi-base-v1.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/design/tokegotchi/tokegotchi-base-v2-32.png b/design/tokegotchi/tokegotchi-base-v2-32.png new file mode 100644 index 0000000000000000000000000000000000000000..9600129ea879adc012494c0886fd8a4002235833 GIT binary patch literal 1168 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 K%-U~v?cV_65sYmB literal 0 HcmV?d00001 diff --git a/design/tokegotchi/tokegotchi-base-v2-pixel.png b/design/tokegotchi/tokegotchi-base-v2-pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..d425c882b60294e885085fdcde5f96bfc2078777 GIT binary patch literal 12215 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/tokegotchi-base-v2.matrix b/design/tokegotchi/tokegotchi-base-v2.matrix new file mode 100644 index 0000000..cd3a092 --- /dev/null +++ b/design/tokegotchi/tokegotchi-base-v2.matrix @@ -0,0 +1,42 @@ +# matrix 32x32 +# palette: +# . = transparent #000000 a=00 +# 1 = outline #1A1A2E a=FF +# 2 = skin #5BA9BA a=FF +# 3 = skin-light #7FC1CE a=FF +# 4 = hair #D97757 a=FF +# 5 = white #FFFFFF a=FF +# 6 = iris #1A1A2E a=FF +# +...............11............... +...............44............... +..........11...44...11.......... +..........441..44..141.......... +..........144224422441.......... +..........144222222441.......... +.........12222222222221......... +.........22222222222222......... +........1222222222222221........ +........2222222222222222........ +.......122223222222322221....... +.......122235532235532221....... +.......122252352253252221....... +.......122332152252133221....... +........2225115225115222........ +........1223353223533221........ +........1222221221222221........ +.........12222222222221......... +..........122222222221.......... +...........1222222221........... +...........2222222222........... +..........122222222221.......... +..........122223322221.......... +..........122223322221.......... +..........121223322121.......... +...........1.222222.1........... +.............122221............. +.............121121............. +.............121121............. +.............122221............. +................................ +................................ diff --git a/design/tokegotchi/tokegotchi-base-v2.svg b/design/tokegotchi/tokegotchi-base-v2.svg new file mode 100644 index 0000000..d28ab6d --- /dev/null +++ b/design/tokegotchi/tokegotchi-base-v2.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/design/tokegotchi/tokegotchi-base-v3-32x48.png b/design/tokegotchi/tokegotchi-base-v3-32x48.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc5439a8fb2da5cd39d0e2035193b8c70d5bcd9 GIT binary patch literal 1791 zcmVE@aL{APFdnP&!A(TY~&L87Zm&WxN|GhchA z@1M=0t4sFcDR~J_uT%DD`C>fX)73V+ZDQa|t1GeIUNybXi>D`AAw)waHC~&g{nIkCtND1Moxii^XqLjK^vBVF(Q25y!-2Sym89`x?dapjW3|= zo$eq26w(G9+npWC1R;;#^RS~Oej*o~Z32BWHkV9W>0bYL1*1yGd`TUQIk zcSBkc=sbP6JF;wmK#kR5mmE2tETWJ#aNCv$lomfWY-)fb8-C zRQCb^7XY+W3GHoRL|gB|mfP#lcYXw8{TXatUx#ShHng|aBRMn)#u!ppv#@o&Z!!C- zKEtzz<9`Ft2>{WS5Y(msas!jNbaoH`uxdjTYulTViD!`Lod5v%1HRN(_V1W?>z-Cs zyP?FfpG&wOfSMcCfl(cf`>)^oQ9f5Vz+5JA!H~+O z0066_t055z00;zqe|mJ^j@{LIE(oyuz~?tb>gtc{MR!ezG)Nuc``>E`ZhmSiUHGP2M=MODBUyKPwj#O3EG^)`C}2r83lfCX!UMFDJEd7H`}j}L$#goqkd zhU2iBLx;{OO9tq8r1=9uh*&Icwix3js!+%ZMRSR5T`~XwaK;U<0N^51S%?Z4XE&du zuBocsP%vbaq8*~VQi9hR0*Xa3I#j6%TUu*S3l(8su+o7lgma#tvUIzmC}51wTbfk| zz*&MNj1A1F0H^>|NSG{F7H9pW1i%MS9{|8$t|U0=qq6iFrG~;a+?!6*o&X@Ei=}Av zvu3RZ0MHE+rIH1swvw3os0p*=pj4v+mQI$yxUJD=Db z2?h}#eD%^qR>$CY5)I+iLq|^De1kHdJl&800B0^N%Rt%GF_w&LJQ9K9lwsQ?FxT;F z=kvgy2h^2R8-$vOAENK-qEt0tD1(z>BA+M0ECW{8&NDJvcNl z1Yb=QjjLimc7x`S>T8$=6O6te%Iy h_wfNQ{Z}-X{s)~0@SDK+-97*S002ovPDHLkV1l|hQq%wd literal 0 HcmV?d00001 diff --git a/design/tokegotchi/tokegotchi-base-v3-crt.png b/design/tokegotchi/tokegotchi-base-v3-crt.png new file mode 100644 index 0000000000000000000000000000000000000000..cc9eb949550c44ef0637aa9863252fef3bd1b00a GIT binary patch literal 14776 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/tokegotchi-base-v3-pixel.png b/design/tokegotchi/tokegotchi-base-v3-pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9c1df4856300e7b01e864111a3683c2f44128b GIT binary patch literal 13868 zcmeHOX;hQfx=s)UM41at5DH}75 zDu}4a7*te18I(F8LZA!*83IWl1Tx$=-}bC^?~kr^?z+cy>|Oogf{*0ed%w?q-sc_m zHp$c7dGW$!3voEyVpkWZZ8)3^{5sE9egXX0J=dlIKk#AOoE>n*Eh~oM!Rf$G*Mn|u zxRvm`JPv>I5KdP575KLd{=usSc-%briI@JZK<1yH%HRs-{qy&EzVJD2SC;Bw9BxCF ztJB8qQTVYg>J9CPXu?F;xFvsf;N9dF2YFJphQX#U=8^p7A1*l7{v8 zXj|7#Q>|I6!*#RC!lwe;LpqWc?#6SsmeX6gv399raTSvH59;XhD!TUZIJ}JPU%&hX z!k?K5Gso4Ih&NJiwHi$9mA`Q__kyifSTV`Z&#x=LaHQ8pPD1C?mC}-T?o7DyQ`htT zi0^gB=4-@{yquB49(|9()8m?(&6qFzi9UPsMr0($C$Q{wXGQNlYS=|t`mHwnmoK<_ z0t$W1`e3^7$&*>r47Tm^8c6_oHm_5ELAgz7tYHR2beR53q#u9#noO-sS`)m0;~S2W&S84->q2APHDRKiqJtL{pejXwu&~*y96FsOw|U*eV+1Y<*fgk#U#fW!mJ8He*)DXnNveYV*nw zIGgeF3sl|DV5sp{7vOktwiF|5gk%6$|I!i+^`Tw%_#r_|H^OZh%(~g)Z)iDXFf@0n zIu{#ZJ>Z^v1QEC(0ET9bL|bDc1ZpfH4c5!QSCJ{}7|m*MY{|1bW|2WAE$h~5^lEL% zIw&#SKT+?Os-4uIUwLHwZhH0VguMB2|6>GC+_K(!jQ{qnu(&@9Bxja~?UxNvNx0&y zr)+sE#zKv7N!)baM{73zLvKe!MezHASgMFyc+iKzx)T%P1@?_U=} z6?k>8Xv`Nrm&6e>7%aBr>G@5Z<;zFJO3ApUs|!I8K7ZZ&Lvfv`xe@l>O;lO;?p@L@ z**@`{9nV8gaPHg{Pg-U8Ap#M=#X76%ymlm~Jz-d7-%(WDZ@sV{+& z^+t$=vl^bb+3FlGMAo!;8I|AF(YL4|j@0hv>u8}a_IUY81@tYu`Ee#6?AQ^Hs$&k1 z)vxAUn4|ZS=!O|g`Vm35i`|^Ey*xYnu}N;nnH%J{T^))8TDmq#qo&K1B%wsfYsTDb zzO$4Z9gLs!ThF^`f^ziFTjGH&+6>HDbZi}(^ENm|9Ig*NB*H^sh#}GxhzS|WzBb5R zR6KEJzcmvvfoTMzIruXuBrJu8#L8^sI}j3F?BXZUgCjVSCn*y{kO-ltQO-0Ed+?Vx z#x4DDPz?)L{(zGJ_XHWe2p$}}wjw`<$U`L5MWKf;dtzM!{?4>t_vW?xiCP1Zh)*4g z)f*Z0*(Web7v7p-_uOpGm1p*Fe!5;*J>k2`-*j2+$_)Cm)aogJBBQj_Tj=5GR3f=i zg5%L0mt#dlLIuRE3Z#?q_7bo|Lb`*;%)PM39)IDZ9?J7fU|&D8mwas^9pdXY$n*_d z;d^u2E9e%yt_GHQmHDmmbv4sPG~s*2QRU=IEwt5VwG35MVE1u(#+YeC-vNK8Lc0-v zWx#5j$60J!c#sG2Vl3H+nRwWWc%!dTdhi9L2Q`->(I&+Mf9upywp9cCt?_QDLiDi* z{`MrHef0)#y-iqMhzq&}IN1p&^sN$@v*bKC1lw2@AeKzjFUTFez#ZQ_izZQ>WcVz5Y&9Bakj11&8E}LT z1mAj`MLNTckXcXxF0_FgE6D(u2vISvA3%sV07`ld_tq-F@t};1@jiM zwi$?ItoKUevz*hN2bh_bAS!J8Hp3R!l-oyLU44B?c?LTdfFD{sp)>5~@I zjPGC5xz7su9uadj>*h z6`&JqrHs%S0~4xpi3pt?fX;Nd4$30mfe8`Tt_Yo*fX>*k%_VGvJ0Kuq5g7=bJuq}< zdo;@a1GNC1F(TqtISgH1#65yWSPSTMx*|S?z|bKcEL0d2?1QwpJQK-T*TVYR?3nVP z*cpNJ1iPaLOxE*imFZudmH3$`i>9^XMz}j1xcMISFi!jfyz4s?3Poy-F%aytc;U?TwIS>h z#pj7EN6k`7fX*_}-HE^zBexiw(x;A;ncvuPx@YNA&$@M*7!ge4vy3C+{l;|8x~f8< zGi?kw);o{6yonhRrP)NER4j53?4eleG!ZN-W7hKU53kJMPmj&IT84-}TY?4MvxXZTa8>WEtmzi&(`FgM{GX`vu3-e zAt7C5I?f;V7T=J+F-o=KSyuJcc+yPeMLN|{vtI`a_eJU~9w6NBdsQe*qEvi!mOkN_ zuRIVL>Bov4;8*Lem(1jrC=9SG`&^7A^+xbrqfA$0dQ9J5W4fP6hS<}8qDp! zgSG$Td^skXXTjXB^O+o}9iAZce~*cdm9EeJ5G?O=c)@q)v7@mPI+pgHdMqb-MHhP# zC0nQ69>f{bgquz}2+r+MPUNr%G_$jk_eMGj1DAVQ3|`cbzIW7{-Ny9k!m>i4pAlmj zsJfieI9Xe8hCpjo?$T_e1mBp8w3ofbg%BT3vu{OGvj(>O^ubjyo^L4zURu4ZDByM?%bkp;>agI5dJDNX_3H zQC`skJJO;&BtRo<0yce<`6ZS)^tjGl{#3s#zqgz}O z>qxR$SC7+$$%JwtKm5={V%GZ&+2?|2Hhkq)`T*yBHf5nKx2h_Z$vesw`&*o%TJt-6 z&Djl<*(o2w{H(tp??61AEQvh zq=p!SS7_MPzLGAmpcrI{KW#2WGT|Xu`#HQ|Kbo`a&9O4UoB6M$iD03yL^PrtN0$vV z&k@BD$=O>S4Wa@9jLc{gbwzfXO_C-$m2NCK<6|s&;>7@8d!@}(1@1iBI9gJdlX6q+ z(7%{3?pGGuOOr&MJ-TLl@5Lsx`Ovy36l}|NJ-6HAjboyMFgH33Y?u}u#u&5-cKMf+ z<>u0_{RV#b1Cu!|-SPkE3vnjHEy~b1(wkn~WzCeZXuMjw%C6prf-Pj7MvrO3LN(i5 zH@!Z&qSkyRaIMZ1rsnLaE4{{NQxlbo$0f??tuviut|Q$5nr~I5rQ^&mwF!UYo%ebg z8*7E(@!5o-eAfH5 z^gTpL#TEj63z6Q-89qv+5C7gCpeJ}y*gK*xNR_;N-1;%C)W9z~=tvhV2sn*7I9|pT z{7J346q5*DC@C9$BjsS~LxeQYb>az%OIslc|CSkyNlY3M>Y)eAw_tK%2ISjHEkinz z0acqUWi_@x4Nz*DO*Nw&{@*%@{ZQ;TMl~I8gJhpPyX?alEDDnxnQ9v{2s>GXVht}Hhi}@|0M_s2gJ!$3&5ktd)<0PhUf?qm+bTmYA?YXd2OZ(?D zgheOIJjK5Yo)yBD6xZr<@FWw0f=HyAy(Y&*McBEDjyI9kiD29yNaP?X6Fqf-l6K{{ zVaV9~((vMg5Mc4E)31sgo}ZlopV6r{m8Ze^w~yYkr&0m?x)nVo-TO&V%Zx ztB^nXf5<^qTn5B4Vw4|Z!&P9zH3}w6DlX9M$mmH%wOTe%?rLoZqMR#K>OYdQFv|Hu z0LY#_h(Zq$D5uc96HyL28lPs8grhI_`sEuWJSA9(Jo_)-Ygy#2+NjKLc3`Sdr)IwP z7xoPHm9kkhmUgRhGdWTmYD}N}{hVhle*##NxZ{45`5=A#w<~Qzzw&O4rjkW|40`H{ zw}gv~$Oy@fp?N2&qz#Y%Rt!N54$IWTD6tQivoF8(W5?t3uI@}jPP^Lfk%2zWqqYDl zuYPrgB-cj>O=H2$Ro0Q4IRuNjRK3Xufd|x@6yIpRt*BI&d23UpJA|aZ5k1dh;5J~q>WHeY;b|}XxrPxh;0?Xwofz3lA^5}c!{bPS`JD`oC_}k zhv9U@RGw+*8zb!_yTRq*Hal<`zq%n*yVGMf!qX(~K;Gv^5jY^9$&)VMi={^<|Ho#+XW&0)I`?lot!Mf^M_kgd_A>Rd%ib*e zH!@`pda@-!lGZ?*U}bXVUhiE>P%br=w#msyu7MMRKZ~RPaT~|?y=LZajfC9X0Xe;@ z6}yvvJ)jV7VtP8*bcK?mfV!&hdw=oxxW5lk(h@12JLe+a$DS3pi9s<6Mfwz<6HpDU ze)z@M$6yG_!JsS`6|;4EQ0JUJvdJ11EtZf`SUwP<;`o-l%)&aoy)Tq7jqr7c@ak^L zK*jdzALC_i$$Q90rnc=Yp!hxfjh*1i61lj;Sx1%>Q@S|P8c@YLhLO0A@mWu(I`4*8|kwhIRs zoS_J5$8sozT9|5Kvr}Opb=+t1z@y$598=EH_F-PB3vIpkY?ccxI@(f=u+^}=>i-im zMyZ=3vTg1OUV75POw^PE{Fu!&)16D}t!6U49GNM0)sl20KQ>{}^wVzBg@b(DvDB5r}}p^{g#l7<}1Xx`QGDY%h#Xldn$1vGLFscC+f6#cfVgqeR6J9XQ6Pg*A7+A>mt*w=0|NtX68Y-;BHq{jwZX;q zLo*c~By_t$B@i@V_dq}D2|Wcno<8Mf1qUL-GXh=#b3ng6zAP<4(GW9W4 z)`omko6y>h@{H?{XRI`GMm-_uDp=X&6`_1=2lO7kb5FrC_Hfvk@HiU}q&zoa*6Wv6 zAoO-ZlWQg_52b3mVb&d%mS{PpF!bc44O;h|g=h9050$MoycHVA3sX(1@|h-eFKLu? zKlX{+MP!uUSqdlad+pSk*oTuH1l^BV`BsG8-$x3z8q;|_&4t1o#@HB{Ac#M{<>Yv3 zfB8YL@#KC!VXr8h$S9lY*H0I&>j;A~#lFt#UpwBBX&V`+MisCuh*Y1Jcd!gv=c z5j&agH(*S*%z5bxj3Qn$mNYWscm}Ph{U^6rh1Z*0%-w1P8Z=d}wbse5Cq=&``g@|J zi(MJJ?w`$+jY-bDaxcBw7br+&?uZBpprF$<*z2R;T@%QDZ z(7O%Ltd0&tRQUxW(J2Z_Y8#-?yWQW6Qtu?-!>5^KqUJ(bf3t{+^>5`L+m=Y~IqM6? zY7`@#I7RMHYjfwa70*L^i9Vi8p&#gIjlsH`(=EXRUSq{kXHct!fi9 zly|Rq3lX&Lv~=K6LZcc zSkVCw%26o{e+N(BUR&EGowwiyG-RiFnpi`&36}8J3xA>X7d1XFf2g}ZItVNBy;X7S zhjOz=;pW-fyP4y6r8W3xeRA+ehZ(+m!zn=~r|Je@9}LVaB9%J`#=2@e?UvCvqsQAD z0))L}@p1b43`tk2BnJ}7io5Df9sy;Zv_ppkSx|+m5AB2$;L~L>#<-iIp-6iDAVKQu zi$=Yue|K6|cYlMibI)d#3v0XXm~c|$7~y7Wgy%mpQ)w0}5(gPmZfsg~|2!p~CG1Tc zW%BeZm$)OxVo7HS^)n0Pyiy2fY8yB~5P0sWas538M^Xbe<2zIY>y*AtR#7a8&HP#vQR;FNB%bCN< zo8?4q;*<@4Xipc~N`!|cU%_qeX-fWP&TUyU@Q%;soCART-yWtc${bv_rH3y)l6X>(|BN!#_vyl4F*553sRJIU=7mMHSz9te+0ETdw=Y7%WN7{+N~OvnmEw!4(M6;6z%I972jnyq7@9p7ZHtW%2wCLCwZ%ScQ*@?Jghr3T&}QUO!QfGIGJ^X@IT2PaQhaPlH|-v0yoB`C^b@_+#BN46TpHQvZpMNO^UVd0MsKyuZWtm@oaG OTCSVior)cNfBY|Pi_@3@ literal 0 HcmV?d00001 diff --git a/design/tokegotchi/tokegotchi-base-v3-resolved.svg b/design/tokegotchi/tokegotchi-base-v3-resolved.svg new file mode 100644 index 0000000..a5c7982 --- /dev/null +++ b/design/tokegotchi/tokegotchi-base-v3-resolved.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/design/tokegotchi/tokegotchi-base-v3.matrix b/design/tokegotchi/tokegotchi-base-v3.matrix new file mode 100644 index 0000000..ef7539d --- /dev/null +++ b/design/tokegotchi/tokegotchi-base-v3.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +............1......1............ +...........151....151........... +...........1661..15561.......... +...........1561..15661.......... +...........1561111561........... +...........1562222561........... +..........11332222221........... +.........1333332222221.......... +.........13333332222221......... +........1333333222222221........ +........1233333222322221........ +........1222888228882221........ +........1223373333723221........ +........12234B2322B42421........ +........1222373443734441........ +........1222332442324441........ +.........12222244444441......... +..........1222411D44441......... +........1111444444444111........ +.......1A9A4144444414A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB99991...... +.......132AAA999999BBB2441...... +.......132AAA999999BBB3241...... +.......133AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAA999999BBB3241...... +........13AAAF9CC9999932441..... +........13FDDDDCCDDDDD33241..... +........13A9999BB9BBB913241..... +.........12AAAAAAA9B941111...... +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441.1111........... +...........1111................. +................................ +................................ diff --git a/design/tokegotchi/tokegotchi-base-v3.svg b/design/tokegotchi/tokegotchi-base-v3.svg new file mode 100644 index 0000000..482312e --- /dev/null +++ b/design/tokegotchi/tokegotchi-base-v3.svg @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + {{CAPE_BODY}} + + + + + + + + + + + + + + + + + {{PANTS_BODY}} + + + + + + + + + + + + + + + + + + + + + + + + + {{SHIRT_BODY}} + + + + + {{BELT_BODY}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{EYEWEAR_BODY}} + + + + + {{HAIR_BODY}} + + + + + {{HAT_BODY}} + + + + + + {{HELD_R_BODY}} + + + {{HELD_L_BODY}} + + + diff --git a/design/tokegotchi/variations/antennae.matrix b/design/tokegotchi/variations/antennae.matrix new file mode 100644 index 0000000..c4948f6 --- /dev/null +++ b/design/tokegotchi/variations/antennae.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +.............11..11............. +............15511551............ +.............11..11............. +................................ +............1111111............. +...........1222222211........... +..........133322222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/antennae.png b/design/tokegotchi/variations/antennae.png new file mode 100644 index 0000000000000000000000000000000000000000..073f75a5ec494a68ded12a99cf76a14f4fd92c9e GIT binary patch literal 13340 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/antennae_vest_blue-trousers_wizard-hat_gold_L:staff:.png b/design/tokegotchi/variations/antennae_vest_blue-trousers_wizard-hat_gold_L:staff:.png new file mode 100644 index 0000000000000000000000000000000000000000..ae01a0789ed12798a1515e9be267f20b53d07a26 GIT binary patch literal 14030 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 J)!BdFe*s3?wsimi literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/bald-beanie.matrix b/design/tokegotchi/variations/bald-beanie.matrix new file mode 100644 index 0000000..0f3bd83 --- /dev/null +++ b/design/tokegotchi/variations/bald-beanie.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +................................ +...............11............... +..............1551.............. +.........1111115511111.......... +........1DDDCCC66CCCCC1......... +........1DDDCCCCCCCCCCC1........ +........1DDDCCCCCCCCCCC1........ +........1DDDEEEEEEEEEEE1........ +........1DDDCEEEEEEEEEE1........ +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/bald-beanie.png b/design/tokegotchi/variations/bald-beanie.png new file mode 100644 index 0000000000000000000000000000000000000000..39f140965d35422f605b10c12ba50588842cc8af GIT binary patch literal 13224 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 V*ZfSn75^o(af7$(EocA4{{m7zGROb` literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/bald-wizard-hat.matrix b/design/tokegotchi/variations/bald-wizard-hat.matrix new file mode 100644 index 0000000..3dec141 --- /dev/null +++ b/design/tokegotchi/variations/bald-wizard-hat.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +...............11............... +..............1B71.............. +..............1171.............. +.............171771............. +.............171771............. +.............176271............. +............17117771............ +............17117771............ +.......111117711777711111....... +......11111177117777111111...... +......111111CCCCCCCE111111...... +.......111133332222221111....... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/bald-wizard-hat.png b/design/tokegotchi/variations/bald-wizard-hat.png new file mode 100644 index 0000000000000000000000000000000000000000..039e4e8a4147abf5262ce84b6f23421ea431be3a GIT binary patch literal 13865 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 C0l)PC literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/cat-ears.matrix b/design/tokegotchi/variations/cat-ears.matrix new file mode 100644 index 0000000..ff9a5c2 --- /dev/null +++ b/design/tokegotchi/variations/cat-ears.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +................................ +..........1..........1.......... +.........151........151......... +.........1561......1651......... +..........165111111561.......... +...........1222222211........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/cat-ears.png b/design/tokegotchi/variations/cat-ears.png new file mode 100644 index 0000000000000000000000000000000000000000..044dd87f60719e39923644fc4c388c7986adb3c9 GIT binary patch literal 13278 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 Uo2<*!{NI`Y-&H=jULlA70VnFFsQ>@~ literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns-shades.matrix b/design/tokegotchi/variations/horns-shades.matrix new file mode 100644 index 0000000..b7b643f --- /dev/null +++ b/design/tokegotchi/variations/horns-shades.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +............1......1............ +...........151....151........... +...........151....1561.......... +...........1561..15661.......... +...........1561..1561........... +...........1561111561........... +...........1322222521........... +..........133332222221.......... +.........13333322222221......... +........133333332222221......... +........1332222224444221........ +........124B111DD1B11421........ +........1241111CC1111421........ +........1241111111111D21........ +........1241111CC1111D41........ +........1241111DD1111441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/horns-shades.png b/design/tokegotchi/variations/horns-shades.png new file mode 100644 index 0000000000000000000000000000000000000000..d098f1ad0d96958b6676c2fdd7c14ea72013833e GIT binary patch literal 13469 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 Y2&D!0`%JFM{x!&LtB1=Sr+^dx1-~4XqyPW_ literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns-wizard-hat-shades.matrix b/design/tokegotchi/variations/horns-wizard-hat-shades.matrix new file mode 100644 index 0000000..18353b5 --- /dev/null +++ b/design/tokegotchi/variations/horns-wizard-hat-shades.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +...............11............... +..............1B71.............. +..............1171.............. +.............171771............. +............11717711............ +...........1517627151........... +...........15711777561.......... +...........14711777461.......... +.......111117711777711111....... +......11111177117777111111...... +......111111CCCCCCDC111111...... +.......111133332222221111....... +.........13333322222221......... +........133333332222221......... +........1332222224444221........ +........124B111DD1B11421........ +........1241111CC1111421........ +........1241111111111D21........ +........1241111CC1111D41........ +........1241111DD1111441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/horns-wizard-hat-shades.png b/design/tokegotchi/variations/horns-wizard-hat-shades.png new file mode 100644 index 0000000000000000000000000000000000000000..b9901e305b80606a7ba7d08c55ade0a30deec1eb GIT binary patch literal 13961 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns-wizard-hat.png b/design/tokegotchi/variations/horns-wizard-hat.png new file mode 100644 index 0000000000000000000000000000000000000000..5084ef775ae30bf7c9cce607c11b3bd39c41ee8a GIT binary patch literal 12699 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns_red-robe_long-pants_gold_L:.png b/design/tokegotchi/variations/horns_red-robe_long-pants_gold_L:.png new file mode 100644 index 0000000000000000000000000000000000000000..97914590b3f9afddb4e78ed4688daceb91e93736 GIT binary patch literal 13670 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns_striped_shorts_cap_leather_L:.png b/design/tokegotchi/variations/horns_striped_shorts_cap_leather_L:.png new file mode 100644 index 0000000000000000000000000000000000000000..988c6374736f6dce2a43ba9b9abcc9aea36734e3 GIT binary patch literal 13713 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns_striped_shorts_leather_L:.png b/design/tokegotchi/variations/horns_striped_shorts_leather_L:.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf7f7af1aa355e68986c29abb42e8cea4a497b6 GIT binary patch literal 13635 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 E7wnQ1Bme*a literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns_tunic_long-pants_leather_L:.png b/design/tokegotchi/variations/horns_tunic_long-pants_leather_L:.png new file mode 100644 index 0000000000000000000000000000000000000000..1d406a3464c7ad2f9080205c88d78a8dc8b48124 GIT binary patch literal 13448 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 VWcH1U^iRdMZrNp>W#xAI-vD4@>HPoz literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/horns_vest_long-pants_leather_L:.png b/design/tokegotchi/variations/horns_vest_long-pants_leather_L:.png new file mode 100644 index 0000000000000000000000000000000000000000..fceaad293835f387372b4315329b37a942313204 GIT binary patch literal 13459 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/long.matrix b/design/tokegotchi/variations/long.matrix new file mode 100644 index 0000000..0111665 --- /dev/null +++ b/design/tokegotchi/variations/long.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +................................ +................................ +................................ +..........111111111111.......... +.........15555555555551......... +........1555555555555551........ +.......155666666666666551....... +.......165333332222222561....... +.......165333333222222561....... +.......165333332222222561....... +.......165233832238322561....... +.......165238282282832561....... +.......165232723337232561....... +.......165232B2222B224561....... +.......165223234432344561....... +.......165222224444444561....... +.......16522224DD44444561....... +.......16512444CC44441561....... +.......165114444444411561....... +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/long.png b/design/tokegotchi/variations/long.png new file mode 100644 index 0000000000000000000000000000000000000000..43f626da8d9fdd28c72c9afae958933a8c5538d2 GIT binary patch literal 12863 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 QKMtI`%Vy_0j=m@V4k(3(G5`Po literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/mohawk.matrix b/design/tokegotchi/variations/mohawk.matrix new file mode 100644 index 0000000..eedecef --- /dev/null +++ b/design/tokegotchi/variations/mohawk.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +...............1................ +..............151............... +..............1561.............. +..............1561.............. +..............1561.............. +............1155661............. +...........1223562211........... +..........133335622221.......... +.........13333322222221......... +........133333332222221......... +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/mohawk.png b/design/tokegotchi/variations/mohawk.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f5b29db4d530a4fb6e4b3281b60367c246d73f GIT binary patch literal 13279 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 H3)%l)3@DLm literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/pigtails.matrix b/design/tokegotchi/variations/pigtails.matrix new file mode 100644 index 0000000..dcc8003 --- /dev/null +++ b/design/tokegotchi/variations/pigtails.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +................................ +................................ +................................ +..........111111111111.......... +........1155555555555511........ +.......155555555555555551....... +......15665222222222256651...... +......15565333322222226551...... +.......156333333222222651....... +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/pigtails.png b/design/tokegotchi/variations/pigtails.png new file mode 100644 index 0000000000000000000000000000000000000000..ff88396584d64ef632e879f1e4b74532bac36578 GIT binary patch literal 13173 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/spiky.matrix b/design/tokegotchi/variations/spiky.matrix new file mode 100644 index 0000000..9a76806 --- /dev/null +++ b/design/tokegotchi/variations/spiky.matrix @@ -0,0 +1,73 @@ +# matrix 32x54 +# palette (roles — runtime substitutes actual colors): +# . = transparent +# 1 = outline +# 2 = skin +# 3 = skin-light +# 4 = skin-dark +# 5 = hair +# 6 = hair-dark +# 7 = iris +# 8 = white +# 9 = shirt +# A = shirt-light +# B = shirt-dark +# C = pants +# D = pants-light +# E = pants-dark +# F = belt +# +................................ +................................ +................................ +................................ +................................ +................................ +................................ +................1............... +............1..161.1............ +...........1611561161........... +...........1611561161........... +..........156225622651.......... +..........156635626651.......... +.........13333322222321......... +........133333332222221......... +........1333333222222221........ +........1223383223832221........ +........1223828228283221........ +........1223272333723221........ +........12232B2222B22441........ +........1222323443234441........ +.........122222444444441........ +.........122224DD444441......... +..........12444CC44441.......... +........1111444444441111........ +.......1A9A4112442114A991....... +......19AA99999999BB99BB91...... +......19A999BBBBBBBB999B91...... +......1B999AA999999BB999B1...... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAA999999BBB241....... +.......132AAAF9CC99999241....... +.......132FDDDDCCDDDDD241....... +.......13299999BB9BBB9241....... +........114AAAAAAA9B9411........ +..........142222222241.......... +..........1DDCE11DDEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DDCE11DCEC1.......... +..........1DCCE11CCEC1.......... +..........1DEEE11EEED1.......... +..........122441124441.......... +...........1111..1111........... +................................ +................................ diff --git a/design/tokegotchi/variations/spiky.png b/design/tokegotchi/variations/spiky.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1cb0439f5c28f819fb76d8012d99a6f6eaa200 GIT binary patch literal 13443 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 UJpY9JKLBmo=xkqP>vihC0LQYA5C8xG literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/spiky_vest_long-pants_shades_leather_Rsword_Lshield.png b/design/tokegotchi/variations/spiky_vest_long-pants_shades_leather_Rsword_Lshield.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd8f21eb809a667e4b1d4cc43eb104776a510dc GIT binary patch literal 13902 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

iwS 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/weird/03-shroom-oracle.png b/design/tokegotchi/variations/weird/03-shroom-oracle.png new file mode 100644 index 0000000000000000000000000000000000000000..5733f33549a4e8dec23057640b8a203fd7afe8e8 GIT binary patch literal 13788 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 literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/weird/04-court-jester.png b/design/tokegotchi/variations/weird/04-court-jester.png new file mode 100644 index 0000000000000000000000000000000000000000..14aeb54f01470c3a68f15a894173c9bc8f6295e3 GIT binary patch literal 14188 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 QcNIxn+%^|&^gHwa0EW@9*#H0l literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/weird/07-monocle-mage.png b/design/tokegotchi/variations/weird/07-monocle-mage.png new file mode 100644 index 0000000000000000000000000000000000000000..bcfc3d21d11da0f2d64976525b986eb5f2e3546f GIT binary patch literal 13786 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 HyPf+#(66oG literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/weird/09-fire-witch.png b/design/tokegotchi/variations/weird/09-fire-witch.png new file mode 100644 index 0000000000000000000000000000000000000000..7334e25edf21cfc4700a814aec38cb4018ef2a9f GIT binary patch literal 14172 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 R%KzE6X~Pzevh{&K{SO6cVmJT* literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/weird/10-duck-buddy.png b/design/tokegotchi/variations/weird/10-duck-buddy.png new file mode 100644 index 0000000000000000000000000000000000000000..204d5e7be37babba5df0e6f08ae79de010707721 GIT binary patch literal 13695 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 T3c@6R{Ip@cv)w}*k8}S831{#n literal 0 HcmV?d00001 diff --git a/design/tokegotchi/variations/weird/11-maximum-weird.png b/design/tokegotchi/variations/weird/11-maximum-weird.png new file mode 100644 index 0000000000000000000000000000000000000000..8e816c2ef2ebdce66088faac74cf530b25a965cb GIT binary patch literal 14952 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 literal 0 HcmV?d00001 diff --git a/docs/02-design/TOKADE_TAB.md b/docs/02-design/TOKADE_TAB.md index 85defc2..367d238 100644 --- a/docs/02-design/TOKADE_TAB.md +++ b/docs/02-design/TOKADE_TAB.md @@ -1,319 +1,463 @@ -# Tokade tab — design doc +# Tokade tab — design > **Last reviewed**: 2026-05-13 > **Owner**: @bjamba -> **Status**: design draft (not implemented) -> **Companion ADR**: [0005-tokade-tab-data-architecture.md](../adr/0005-tokade-tab-data-architecture.md) +> **Status**: design (no implementation yet) +> **Companion ADR**: [0005-tokade-tab-rpg-system.md](../adr/0005-tokade-tab-rpg-system.md) ## Vision -A fourth top-level tab that hosts a small library of light "games" coupled -to your real Claude Code telemetry. The games don't simulate Claude -usage — they *consume* it. Empty install = empty tab. The point is to -make patterns visible, make milestones feel earned, and (eventually) -turn a number on a chart into something with personality. +The Tokade tab is a small RPG that lives inside the Tokade menu bar app and is fueled by your real Claude Code telemetry. You raise a creature called a **Tokegotchi**, walking it through *regions* (your projects), fighting monsters, completing quests, and aging it through tokens you spend with Claude. The longer it lives, the better. -v1 ships with two features: +It is not a Tamagotchi (passive observation). It is not Stardew Valley (active sim). It sits in between: telemetry generates events; the player makes light tactical choices at occasional encounters. -- **Achievements** — auto-detected badges for usage patterns. Passive, - observational, immediate-reward. -- **Tokegotchi** — a single pet that lives in a card. Mood and vitals - driven by your current rate-limit state and recent activity. Active in - the sense that it changes over time, but no input gameplay yet. +The aesthetic target is **SNES-era pixel-art JRPG** — Final Fantasy VI, Chrono Trigger. Tokegotchis are ~32×54 pixel sprites, animated by transforms on named body parts. -The tab is built so that adding a third or tenth game is the same shape -as adding the second. See the -[companion ADR](../adr/0005-tokade-tab-data-architecture.md) for the -architecture. +--- -## Out of scope for v1 +## Player experience -- Any game requiring keyboard input (Snake, Tetris, etc. — explicitly - deferred to v2) -- Multiplayer / leaderboards / social -- Network calls of any kind — the no-network promise stands -- Custom art assets — start with SF Symbols and unicode -- User-naming the Tokegotchi (lock the name in v1; revisit) +### First launch + +A character creator screen lets the player pick: + +| Trait | Options | Notes | +|---|---|---| +| Skin color | 6 swatches (lavender, peach, sage, sand, slate, coral) | Body color | +| Iris color | 6 swatches | Saturated, distinguishable at 32×54 | +| Hair style | 11 styles | horns, spiky, cat-ears, pigtails, mohawk, antennae, long, bald, flame, tentacles, mushroom | +| Hair color | 6 swatches | Independent of style | +| Name | free text (12 char cap) | Default "Boba" | + +This gives **6 × 6 × 11 × 6 = 2,376 visible base appearances** — plenty of identity without a customization rabbit-hole. + +### The game loop + +1. **Work in Claude Code.** Telemetry events fire: messages, tool calls, slash commands. +2. **Items drop, HP drains.** Specific kinds of work generate specific kinds of items (see "Tick economy" below). Token consumption drains HP. +3. **Open the Tokade tab to check on the pet.** Stats, current region, recent drops, active quests, idle animation. +4. **Take light actions** — feed the pet, accept a quest, equip a cosmetic, travel to a previously-visited region's town center. +5. **Encounter events fire as you accumulate "steps"** (LoC + tool calls + token output). Monsters drop EXP/gold; NPCs offer quests/skills/items; shops sell cosmetics and equipment. +6. **The pet ages with every token consumed.** When age points exhaust the lifespan, the pet dies a peaceful, celebrated death. A new generation hatches with partial inheritance. + +The player's long-term score is **how many days each Tokegotchi lived**, recorded in a Hall of Fame. + +--- ## Tab layout ``` -┌─────────────────────────────────────────────────────────┐ -│ Tokade tab │ -├─────────────────────────────────────────────────────────┤ -│ │ -│ ┌───────────────────────────────────────────────────┐ │ -│ │ Tokegotchi │ │ -│ │ ───────────── │ │ -│ │ ╭───╮ Boba │ │ -│ │ │ ◕‿◕ │ Status: content │ │ -│ │ ╰───╯ Born: 2026-04-22 (Day 21) │ │ -│ │ │ │ -│ │ Energy ████████░░ 82% │ │ -│ │ Hunger ██████░░░░ 62% │ │ -│ │ Mood ███████░░░ 73% │ │ -│ │ │ │ -│ │ "I'm cozy. Send me an Opus message later 🌟" │ │ -│ └───────────────────────────────────────────────────┘ │ -│ │ -│ ┌───────────────────────────────────────────────────┐ │ -│ │ Achievements 12 / 24 earned │ │ -│ │ ───────────── │ │ -│ │ 🏅 First message Apr 22 │ │ -│ │ 🏅 Lifetime: 1M tokens Apr 28 │ │ -│ │ 🏅 First Opus message Apr 22 │ │ -│ │ 🏅 3-day streak Apr 24 │ │ -│ │ 🏅 7-day streak Apr 29 │ │ -│ │ 🏅 … │ │ -│ │ 🔒 Lifetime: 100M tokens │ │ -│ │ 🔒 30-day streak │ │ -│ │ … (Show all) │ │ -│ └───────────────────────────────────────────────────┘ │ -│ │ -└─────────────────────────────────────────────────────────┘ +┌────────────────────────────────────────────┐ +│ Tokade tab │ +├────────────────────────────────────────────┤ +│ ┌──────────────────────────────────────┐ │ +│ │ Region: tokade (Iron Fortress) │ │ +│ │ Day 12 · Reputation: 47 │ │ +│ │ │ │ +│ │ [animated sprite, idle/walk] │ │ +│ │ "Boba" │ │ +│ │ │ │ +│ │ HP ████████░░ 82/95 │ │ +│ │ SP ██████░░░░ 60/80 │ │ +│ │ Age 312K / 500K · Gen 3 │ │ +│ │ STR 18 DEX 22 INT 31 AGI 14 CHA 26 │ +│ └──────────────────────────────────────┘ │ +│ │ +│ ┌──────────┬──────────┬──────────┐ │ +│ │Inventory │ Quests │ Events │ │ +│ ├──────────┴──────────┴──────────┤ │ +│ │ 🍖 Hearty meat × 3 │ │ +│ │ 🧪 Sonnet potion × 2 │ │ +│ │ 🏋 Dumbbell (STR +1) × 1 │ │ +│ │ 🗡 Iron Sword [equipped] │ │ +│ └────────────────────────────────┘ │ +│ │ +│ ▸ A wild Compile Beetle appeared! (tap) │ +└─────────────────────────────────────────────┘ ``` -## Tokegotchi specification +Sub-sheets that open over the main panel: + +- **Character sheet** — full stats, skills learned, gear equipped, ancestry +- **Region map** — visited regions with discovered nodes, current location, fast-travel (only within current region) +- **Battle modal** — passive (auto-resolve) or active (4-button menu) depending on user toggle +- **Quest dialog** — NPC text + quest description + accept/decline +- **Shop** — list of items with gold prices +- **Hall of Fame** — past generations, peak stats, days lived + +--- + +## Layer 1: Tick economy + +Every Claude Code event generates a game effect. **This is the central mechanic.** + +### Token consumption → HP drain + +| Model | HP drain | +|---|---| +| Haiku | 1 HP per 10K tokens | +| Sonnet | 1 HP per 5K tokens | +| Opus | 1 HP per 2K tokens | + +HP persists between sessions — no auto-regen. A heavy Opus day leaves the pet wounded next morning. + +### Token consumption → age + +Aging is the long-term version of HP drain. **Aging is irreversible** (except via Youth Elixir). -### Identity +| Model | Age multiplier | +|---|---| +| Haiku | ×0.5 per token | +| Sonnet | ×1.0 per token | +| Opus | ×2.0 per token | -- Lives in a single card at the top of the Tokade tab -- Has a fixed name `Boba` in v1 (we'll let users rename in a later milestone) -- Has a "birthday" = the timestamp of the user's first archived event -- Has an "age" in days computed from birthday +Default `lifespan = 500K` age points (~1 week of moderate mixed-model use). Aging only happens when CC actively emits tokens; vacations don't age the pet. -### Vitals +### Tool calls → stat-boost item drops -Three meters, each a percentage 0–100. Computed from telemetry on every -30-second poll. Updates live. +Each tool that has high user-controllability drops a themed stat item: -| Vital | Source | Mapping | -|-------|--------|---------| -| **Energy** | `100 - current_5h_pct` | High = window fresh; low = window almost spent | -| **Hunger** | Time since last event in `events` | 100% if last event ≤ 12h ago; linearly drops to 0% at 7 days | -| **Mood** | `(Energy + Hunger) / 2`, optionally biased by `Tokegotchi.streak` (3+ consecutive active days nudges Mood up by 10) | Composite | +| Stat | Source tool(s) | Drop | +|---|---|---| +| STR | `Bash` | dumbbell, axe, anvil | +| DEX | `Edit`, `Write` | chisel, scalpel, brush | +| INT | `WebFetch`, `WebSearch` | scroll, lens, tome | +| AGI | switching cwd + `Task` | boots, signal flag, map | +| CHA | sustained messages in single project | banner, signet ring, lyre | -Display as three short horizontal bars colored by the existing palette -(blue family). When any vital drops below 25%, that bar turns amber. +Low-user-control tools (`Read`, `Grep`, `Glob`, `TodoWrite`) drop **generic scrap**, sold at shops for a few gold each. -### Mood states + speech +Drop weights are not uniform — Bash drops 60% STR items, 10% each of other stats. Weighted random rewards diversification but doesn't deterministically punish specialization. -Mood determines a single sprite + speech line shown in the card. The -sprite is a unicode-art expression rendered in a monospace font. +### Skills (slash commands) → potion drops -| Mood band | Sprite (illustrative) | Sample lines | -|-----------|----------------------|--------------| -| 80–100 | `╭───╮` / `│ ◕‿◕ │` / `╰───╯` | "I'm cozy. 🌟" · "Plenty of budget left. Keep cooking." | -| 60–79 | `╭───╮` / `│ ·_· │` / `╰───╯` | "Good pace today." · "Steady. Boba approves." | -| 40–59 | `╭───╮` / `│ -_- │` / `╰───╯` | "You're using me a lot. Pace yourself." | -| 20–39 | `╭───╮` / `│ >_< │` / `╰───╯` | "Burning hot. Window won't last." · "Maybe a Sonnet for the next one?" | -| 0–19 | `╭───╮` / `│ x_x │` / `╰───╯` | "You hit the cap. Boba needs a nap." (locked emoji 😴) | +Using a Claude Code skill (slash command) drops a **potion** that refills SP. Different skills produce different rarity potions: -Three speech lines per band, rotated daily by hash(date + line index) so -the same line doesn't appear two days running. Lines live in a single -file (`Sources/Tokade/Arcade/Tokegotchi/Lines.swift`) so they're easy to -edit and contribute to. +| Skill complexity | Drop | +|---|---| +| Common skills (`/review`, `/clear`) | small SP potion (+10 SP) | +| Heavier skills (`/security-review`) | medium SP potion (+30 SP) | +| Custom user-defined skills | rare SP potion (+60 SP) | -Special override: when `isFiveHourDataStale(rateLimits)` is true, mood -flips to "asleep" with sprite `( - . - ) zzz`. The pet sleeps through -windows you're not using. +### File edits → food drops -### Life cycle / age +`Edit` / `Write` / `NotebookEdit` calls drop **food items** that recover HP. -Boba doesn't reset, evolve, or die in v1. There's a single Tokegotchi -that grows older over time. Age in days is shown next to the name. +| Edit size | Drop | +|---|---| +| ≤10 LoC | bread (+5 HP) | +| 10–100 LoC | hearty meat (+25 HP) | +| 100+ LoC | feast (+75 HP) | -Future (v1.1): an "evolutions" system where Boba changes appearance at -milestones (Day 7, Day 30, Day 100). v1 does **not** ship this — the -sprite is fixed across the age dimension. We just track + display age. +The bigger the change you write, the better the food. -### Persistence +--- -A single JSON file at `~/.tokade/history/tokegotchi.json`: +## Layer 2: State model -```json +Lives in `~/.tokade/games/tokegotchi.json` (file mode 0600). + +```jsonc { - "name": "Boba", - "bornAt": "2026-04-22T18:12:04Z", - "lastSeenMoodBand": 60, - "todaysLineIndex": 1 + "identity": { + "name": "Boba", + "generation": 3, + "bornAt": "2026-05-13T15:42:08Z", + "ageTokens": 312000, // accumulated weighted token count + "appearance": { + "skin": "lavender", + "iris": "blue", + "hairStyle": "horns", + "hairColor": "coral" + } + }, + "vitals": { + "hp": 82, + "hpMax": 95, // derived: 80 + (STR + DEX) * 2 + "sp": 60, + "spMax": 80, // derived: 40 + (INT + CHA) * 2 + "stats": { "STR": 18, "DEX": 22, "INT": 31, "AGI": 14, "CHA": 26 } + }, + "progress": { + "exp": 450, + "gold": 1284 + }, + "world": { + "currentRegion": "code/tokade", + "reputation": { "code/tokade": 47, "code/old-project": 12 } + }, + "inventory": { + "items": { "bread": 4, "hearty-meat": 3, "sonnet-potion": 2, "dumbbell": 1, "revive-stone": 1 }, + "equippedCosmetic": { "hair": "horns", "shirt": "tunic", "pants": "long-pants", "hat": null, "eyewear": "shades" }, + "equippedGear": { "weapon": "iron-sword", "amulet": null, "ring": null, "armor": null }, + "skillsLearned": ["strike", "mend", "athletics", "persuasion"], + "activeQuests": ["compile-beetle-cull", "find-the-librarian"] + }, + "bloodline": { + "ancestors": [ + { "name": "Mochi", "generation": 1, "peakStats": { /* ... */ }, "daysLived": 8, "causeOfDeath": "natural" }, + { "name": "Yuki", "generation": 2, "peakStats": { /* ... */ }, "daysLived": 4, "causeOfDeath": "hp-zero" } + ] + } } ``` -Created on first launch from the user's earliest archived event. Updated -on each poll. File permissions: 0600 (same as other archive files). +There is no explicit "level" — age in days lived is the score. -If the file is missing or corrupt, recreate from `events.jsonl`'s -earliest event. If `events.jsonl` is also empty, Boba enters an "egg" -state until the first event lands. +--- -## Achievements specification +## Layer 3: Regions and world -### Definition shape +Each project (cwd) maps to a **region**. Regions are matched by **cwd prefix**, so `~/code/foo` and `~/code/foo/subdir` are the same region. -Each achievement is a value type with: +### Region content (seeded + grown) -- `id: String` — stable identifier (e.g. `"lifetime-1m-tokens"`) -- `title: String` — display name -- `description: String` — one sentence -- `icon: String` — SF Symbol or emoji -- `predicate: (TelemetrySnapshot) -> Bool` — pure function over the - current state. Called on every poll; once true, sticky. +When a new cwd is first observed, the system analyzes the project to **seed** the region's flavor (language, dependency manager, file count, etc.): -Stickiness: once earned, the achievement records its `earnedAt: Date` -and never re-evaluates. We persist the entire earned set; predicates run -only for unearned items. +| Project signature | Region flavor | +|---|---| +| Swift / Xcode project | Stonework Town (stoic architecture, granite golems) | +| Python / poetry | Garden Village (lush flora, plant-themed monsters) | +| Rust / cargo | Iron Fortress (industrial, mechanical foes, blacksmith shop) | +| JS/TS / npm | Bazaar (busy market, trickster NPCs, deal-making) | +| Go / mod | Open Steppe (wide plains, fast couriers, wolves) | +| (no project file) | Wilderness (unstructured, more monsters than NPCs) | -### Initial v1 badge set (24) +The flavor seeds **what's possible** in the region — monster types, NPC archetypes, dungeon theme — but everything is hidden. -**Volume** +### Discovery via LoC steps -| id | title | predicate | -|----|-------|-----------| -| `lifetime-1m` | First million | total tokens ≥ 1M | -| `lifetime-100m` | Heavy hitter | total tokens ≥ 100M | -| `lifetime-1b` | One billion | total tokens ≥ 1B | -| `lifetime-10b` | Token whale | total tokens ≥ 10B | +The player explores a region through **steps**. The step formula: -**Model coverage** +``` +steps = (lines_edited * 1.0) + (tool_calls * 0.5) + (output_tokens / 200) +``` -| id | title | predicate | -|----|-------|-----------| -| `first-haiku` | Hello, Haiku | any event with model containing "haiku" | -| `first-sonnet` | Hello, Sonnet | … "sonnet" | -| `first-opus` | Hello, Opus | … "opus" | -| `polyglot-day` | Three-model day | all three tiers used same calendar day | +This means even chat-heavy days advance discovery; refactor-heavy days advance much faster. -**Tools and skills** +| Step threshold | Unlocked | +|---|---| +| 0 | Open road (just walking) | +| 200 | First village (1 NPC, shop opens) | +| 1500 | More NPCs, side paths visible | +| 5000 | Dungeon discovered (boss monster, rare drop) | +| 15000 | Hidden zone (mythic NPC, late-game quest) | -| id | title | predicate | -|----|-------|-----------| -| `tool-set-bero` | Bash · Edit · Read · Other | all of {Bash, Edit, Read, Write} in one session | -| `skill-sampler` | Skill sampler | 5 distinct slash commands used lifetime | -| `skill-explorer` | New tool | invoked a slash command never used before | +After the first NPC is discovered, **fast-travel** between nodes within the same region becomes available. Travel between *regions* still requires switching cwd in CC. -**Rhythm** +### Reputation -| id | title | predicate | -|----|-------|-----------| -| `streak-3` | 3-day streak | activity 3 consecutive calendar days | -| `streak-7` | 7-day streak | activity 7 consecutive days | -| `streak-30` | 30-day streak | activity 30 consecutive days | -| `early-bird` | Early bird | 3 sessions before 7am | -| `night-owl` | Night owl | 3 sessions between midnight and 4am | +Reputation per region grows with **sustained messaging in that project's cwd**. Specifically: every 50 messages in a region grants +1 reputation. Reputation caps at 100. High reputation unlocks: -**Budget** +- Shop discounts (≥30) +- Special quests from NPCs (≥50) +- A region-flavored cosmetic gift (≥75) +- A late-game item (≥100, mythic) -| id | title | predicate | -|----|-------|-----------| -| `window-survivor` | Window survivor | finished a 5h window between 90–99% utilization | -| `near-miss` | Walked the line | finished a 7d window between 95–99% | -| `capped` | Maxed out | hit 100% on any window (badge of honor or shame, ymmv) | -| `cache-pro` | Cache pro | `cache_read / total_input ≥ 70%` for a 7-day stretch | +--- -**Project flavor** +## Layer 4: Encounters -| id | title | predicate | -|----|-------|-----------| -| `multi-project` | Multitasker | events from 3+ distinct cwds in one day | -| `deep-dive` | Deep dive | a single session ≥ 1M tokens | -| `marathon` | Marathon | a single session ≥ 4 hours wall-clock | +### Monster combat -**Tokegotchi-linked** +User-toggleable between two modes: -| id | title | predicate | -|----|-------|-----------| -| `boba-first-week` | Boba's first week | Tokegotchi age ≥ 7 days | -| `boba-survived-cap` | Boba survived the cap | hit 100% window without going idle for 24h after | +- **Passive**: auto-resolve based on stats vs monster stats. Result appears as a brief banner. Used by default; respect "I'm coding, don't interrupt me." +- **Active**: turn-based menu RPG modal. `Attack` / `Use Skill` / `Use Item` / `Run`. 2–6 turns until one side drops. -That's 24 badges. Reasonable for a v1 gallery: ~half achievable in the -first month of use, ~quarter in the first day, ~quarter as long-term goals. +A subset of monsters (bosses, rare encounters) trigger active mode regardless of toggle — these are the meaningful fights. -### UI shape +Combat math: +- Damage dealt = `(attacker_STR or weapon_atk) - target_DEF` with stat-scaling from skills +- Skill damage = `base + relevant_stat × multiplier` (e.g., Fireball = `10 + INT × 2.5`) +- Dodge chance = `target_AGI - attacker_AGI` percent (capped 5–60%) -Achievements card body: +### NPCs -- Header: `Achievements N / 24 earned` -- List view, sorted: earned first (newest first), then locked (in catalog order) -- Each row: icon + title + (earned: date) | (locked: lock emoji) -- "Show all" expands the locked section if >5 hidden -- Tooltip on hover: full description + predicate explanation +NPCs appear in regions at discovery thresholds. Each NPC has a role: -Tap a badge: opens a sheet with the badge's description + a small chart -or stat showing your progress toward it (e.g., for `lifetime-1b`, a -horizontal progress bar with current total vs. 1B). Sheet is read-only. +| Role | What they do | +|---|---| +| **Merchant** | Sells items, cosmetics, gear | +| **Trainer** | Teaches in-game skills (spend EXP) | +| **Quest-giver** | Offers explicit prompt-style quests | +| **Lore-keeper** | Background flavor + sometimes hints | -### Persistence +NPCs sometimes block paths and trigger **D&D-style skill checks** (see Layer 6). -A single JSON file at `~/.tokade/history/achievements.json`: +### Quests -```json -{ - "earned": { - "lifetime-1m": "2026-04-28T12:33:01Z", - "first-opus": "2026-04-22T18:13:11Z", - "streak-3": "2026-04-24T09:00:00Z" - } -} -``` +Two distinct flavors: -On startup, load earned set. On each poll, evaluate unearned predicates -against the current `TelemetrySnapshot`. If any flip to true, record -`earnedAt: now`, persist, fire a one-shot notification banner -("🏅 First million tokens — earned"). +- **NPC quests** are explicit, prescriptive: *"Use `/review` three times today and report back."* They appear in the Quest log, you complete them by doing the thing in Claude Code, you return to the NPC for the gold/EXP/item reward. These intentionally try to **change your CC behavior**. +- **System achievements** are implicit milestones: *"Hello, Opus" (first Opus message), "Three-model day", "7-day streak"*. They fire silently when triggered and reward small items + a Hall-of-Fame entry. They reward **what you naturally do**. -File permissions: 0600. +### Encounter frequency -### Notification banner +Default scaling: -A minimal toast in the panel for newly-earned badges, dismissable. No -macOS-level notification — we don't have `NSUserNotification` permissions -and the bar for Tier 2 OSS doesn't include them. +| Session intensity | Monsters | NPC interactions | Achievement triggers | +|---|---|---|---| +| Light (10K LoC, 1hr) | 1–2 | 0–1 | 0–2 | +| Medium (50K LoC, 4hr) | 5–8 | 2–4 | 3–6 | +| Heavy (200K LoC, 8hr+) | 15–25 | 6–10 | 8–15 | -## Telemetry contract +A `encounter_frequency_multiplier` setting (default 1.0, range 0.25–4.0) lets the player tune. -The Tokegotchi card and the Achievement predicates both consume a -shared **`TelemetrySnapshot`** value type computed once per poll: +--- -```swift -struct TelemetrySnapshot { - let now: Date - let events: [UsageEvent] - let snapshots: [UsageSnapshot] - let rateLimits: RateLimitSnapshot? +## Layer 5: Aging, death, inheritance - // Derived; cached. - let currentFiveHourPct: Double? - let currentSevenDayPct: Double? - let totalTokens: Int - let lastEventAt: Date? - let dailyActiveStreak: Int -} -``` +### Aging + +Aging is purely token-driven; see Layer 1 for the per-model multiplier. Pet ages only when CC is actively consuming tokens. + +When `age > 0.7 × lifespan`, the pet enters **Elder state**: hair tinged gray, idle pose tired, occasional "I'm not as quick as I once was" dialog. Visible to the player. + +### Two-track death + +- **Natural death** (age reaches lifespan): peaceful eulogy line, sprite fades, Hall-of-Fame entry written. **No revive possible** — death by old age is final. The achievement is the days lived. +- **HP=0 death**: pet enters **Critical state** for 24 real-time hours. Player can: + - Use a Revive Stone (consumable) → restore HP to max, abort death + - Refill HP via food items → exit critical state naturally + - Do nothing → tragic eulogy + next generation + +### Lifespan-extension items + +| Item | Effect | Source | +|---|---|---| +| **Revive Stone** | Auto-consumed on HP=0 to restore HP. No effect on natural death. | Rare boss drop, 5000 gold | +| **Youth Elixir** | Pauses aging for next 24 real-time hours | Quest chain, 2000 gold | +| **Phoenix Feather** | Pauses aging for 7 real-time days | Single hand-placed in a late-game dungeon | +| **Ancient Tonic** | Halves age-cost of next 100K tokens | Crafted (recipe is a quest reward) | + +### Inheritance on death + +| Trait | Carryover | +|---|---| +| Each stat (STR/DEX/INT/AGI/CHA) | 30% of peak value | +| Learned skills | Carry at 50% effectiveness; re-train by spending half original EXP | +| Town reputation per region | 100% — "your ancestor was the great Boba" | +| Gold | 10% | +| Inventory items | All carry | +| Equipped cosmetics | All carry | +| Equipped gear | Carry only one piece (player picks); rest goes to Hall | +| Appearance | 70% chance each color (skin/iris) inherits; hair style re-rolls | + +### Hall of Fame + +- Last 20 generations stored in full detail (name, peak stats, days lived, cause of death, ancestry quotes) +- Older entries roll up to summary (just name + days lived) — infinite history at low storage cost +- Browsable in a sheet within the Tokade tab + +--- + +## Layer 6: Skills + +Two distinct categories. Both bought with **EXP** from Trainer NPCs. + +### Combat skills (20 total) + +Used during battle, cost SP per use. Damage/effect scales with the relevant stat. + +| Category | Skills | Stat scaling | +|---|---|---| +| **Damage** (4) | Strike, Pierce, Fireball, Inspire-Attack | STR / DEX / INT / CHA | +| **Heal** (4) | Mend, Greater Heal, Group Heal, Resurrection | CHA / CHA / CHA / INT | +| **Buff** (4) | Power-Up (+STR), Quickness (+AGI), Focus (+INT), Rally (+all) | self-targeted, multi-turn | +| **Debuff** (4) | Weaken, Slow, Confuse, Demoralize | inflicted on monster | +| **Utility** (4) | Block, Escape, Steal, Analyze | combat tools, no damage | + +Example: Fireball cost = 12 SP. Damage = `10 + INT × 2.5`. So at INT=20, Fireball deals 60 damage. + +### RPG skills (10 total) + +D&D-style narrative skills triggered by **skill checks** in dialog. Possessing the skill + meeting a stat threshold unlocks alternative branches. + +| Skill | Stat | What it unlocks | +|---|---|---| +| Athletics | STR | force doors, climb walls, push obstacles | +| Lockpicking | DEX | open chests + gates without keys (consumes lockpicks) | +| Stealth | DEX | sneak past monsters, find hidden NPCs | +| Investigation | INT | clues in environments, identify item rarity | +| Arcana | INT | decode runes, identify magical items | +| Persuasion | CHA | extra quest dialog options, shop discounts | +| Intimidation | CHA | force NPC info, scare low-tier monsters | +| Insight | CHA | detect lying NPCs | +| Survival | DEX or INT | track monsters, find wilderness shortcuts | +| Performance | CHA | entertainer NPCs, festival quests | + +Example branching scene: + +> *A locked iron gate bars the path.* +> [Athletics 25] kick it down (costs 15 HP) +> [Lockpicking 15] pick the lock (consumes lockpick) +> [Persuasion 20] convince the guard (requires reputation ≥ 30) +> [back away] + +Each option requires the skill **and** the stat threshold. Player builds determine which paths open. + +--- + +## Sprite + animation system + +> See [docs/adr/0005-tokade-tab-rpg-system.md](../adr/0005-tokade-tab-rpg-system.md) for the architecture rationale. + +- **Source resolution**: 32×54 pixels (viewBox `0 -18 100 168`) +- **Proportions**: FFVI-ish humanoid — head ~33% of height, torso ~30%, legs ~37% +- **Color**: 16-color palette per sprite, parameterized by ROLE (skin/skin-light/skin-dark/hair/hair-dark/iris/etc.); the runtime swaps actual RGB values to produce 6 skin × 6 iris × 6 hair-color variants of every shape from a single matrix +- **Animation**: per-part transforms (`HEAD_TRANSFORM`, `R_ARM_TRANSFORM`, `L_ARM_TRANSFORM`, `R_LEG_TRANSFORM`, `L_LEG_TRANSFORM`). At least 3 frames per Tokegotchi: idle, walk-A, walk-B +- **Stylization**: every other source pixel row darkened 12% for a pixel-grid scanline feel (toggleable) +- **Outline**: 1-pixel dark border applied at source resolution to every silhouette +- **In-app render**: matrix → nearest-neighbor upscale → blit to SwiftUI Canvas. No PNG files at runtime. + +### Cosmetic slots and inventory + +| Slot | v1 items | +|---|---| +| Hair (style chosen at creation) | 11: horns, spiky, cat-ears, pigtails, mohawk, antennae, long, bald, flame, tentacles, mushroom | +| Hat | 7: beanie, wizard-hat, cap, crown, jester, octopus, halo | +| Eyewear | 5: shades, round-glasses, eye-patch, monocle, heart-glasses | +| Shirt | 6: tunic, striped, vest, red-robe, lab-coat, jester-motley | +| Pants | 6: long-pants, shorts, blue-trousers, kilt, bell-bottoms, striped-leggings | +| Belt | 2: leather, gold | +| Cape | 4: red-cape, blue-cape, rainbow, bat-wings | +| Held items (R + L) | 8: sword, shield, staff, mug, rubber-duck, crystal-ball, fish, magic-wand | + +Total: **49 cosmetic items across 9 slots** at v1. Each is one ~5-line SVG; new items take minutes to author. + +### Animation rig + +The base sprite has named part groups: `head`, `r-arm`, `l-arm`, `r-leg`, `l-leg`. Each accepts a full SVG transform expression as an env-var-driven placeholder. + +Locked canonical animation frames: + +| Frame | Transforms | +|---|---| +| **idle** | all noop | +| **walk-A** | head `translate(0,1.5)`, r-leg `translate(0,-3.125)`, both arms `rotate(8 ...)` (body twists right) | +| **walk-B** | head `translate(0,1.5)`, l-leg `translate(0,-3.125)`, both arms `rotate(-8 ...)` (body twists left) | + +Both arms tilt the **same direction** in each frame — front-view walking shows up as body sway, not counter-swing. Cycle at ~6fps to read as walking. + +Future animations using the same rig: `eat`, `sleep`, `wave`, `attack`, `cast`, `death`. -The exact shape and computation rules live in -[ADR-0005](../adr/0005-tokade-tab-data-architecture.md). +--- -## Open questions +## Open questions (not blocking v1) -These need an answer before we ship v1 but don't block design review: +1. **Per-region soundtrack?** Could tie to project language. Big scope addition; defer. +2. **Cross-Tokegotchi memory?** Should ancestors leave physical objects in regions (graves, journals)? Atmospheric but expensive. +3. **Custom NPC dialog from project metadata?** Hooking into `package.json` or `README.md` for region flavor text. Risky for privacy; defer. +4. **Cosmetic mutations on inheritance** — should the new generation occasionally inherit a *new* color (e.g., the ancestor's blue eyes mutate to teal)? Adds variety; complicates UI. +5. **Active animations** — beyond walk + idle, when does the pet visibly do something? On feed, on level up, on quest accept? -1. **Naming the pet.** v1 hardcodes "Boba." Should we ship a "rename" - action and persist user choice? Adds a settings sheet. (Lean: defer.) -2. **Notification banner styling.** Toast-in-panel vs. a small badge that - dot-appears next to the Tokade tab label like "GitHub notifications - count" on the segmented control? (Lean: dot indicator.) -3. **What happens if `~/.claude/projects/` is empty?** Achievements - gallery still shows the locked list. Tokegotchi enters an "egg" state - with no animation. (Lean: yes.) +--- ## Future (v2+) -- Snake / Breakout as the first playable game -- Tokegotchi evolutions at age milestones (Day 7, 30, 100) -- Tokegotchi customization (rename, color tint from model mix) -- A "year-in-Claude" Polaroid view as a third game-card -- Daily oracle: fortune-cookie line from yesterday's usage -- Plant-a-tree garden (token volume = growth rate) -- Idle factory (in-game tokens earned from real tokens 1:1000) -- Achievement leaderboards (anonymized, opt-in, would break no-network) +- Multiplayer Tokegotchi exchange — gift cosmetics between users +- A second game in the tab — pure card game or puzzle, share the Tokegotchi state +- "Year-in-Claude" Polaroid review at year-end, generated from Hall of Fame data +- Tokegotchi customization (rename mid-life, color-shift via potion) +- Cosmetic crafting system — combine items at a workbench NPC diff --git a/docs/adr/0005-tokade-tab-data-architecture.md b/docs/adr/0005-tokade-tab-data-architecture.md deleted file mode 100644 index 20821cc..0000000 --- a/docs/adr/0005-tokade-tab-data-architecture.md +++ /dev/null @@ -1,214 +0,0 @@ -# ADR 0005 — Tokade tab data architecture - -- **Status**: Accepted (design draft) -- **Date**: 2026-05-13 -- **Deciders**: @bjamba -- **Companion**: [docs/02-design/TOKADE_TAB.md](../02-design/TOKADE_TAB.md) - -## Context - -The new Tokade tab will host a growing library of "games" (Tokegotchi and -Achievements in v1; Snake, Year-in-Claude, etc. queued for v2+). Each -game needs to consume Claude usage telemetry, persist some small amount -of state to disk, and be added/removed without disturbing other games or -the rest of the codebase. - -We could let each game reach into `UsageStore` directly and store its -own data wherever it likes. That works for two games but rots fast: - -- Five games each computing `current_5h_pct` from `rateLimits` slightly - differently produces five subtly different numbers -- Each new game touches `MenuView.swift` to register its tab content -- Persistence formats diverge — game A uses JSON, game B uses - `UserDefaults`, game C uses a `.plist` -- No place to enforce "games can't write outside `~/.tokade/games/`" - -This ADR locks down the contract before the first game ships, so the -boundary is the same shape for game #1 and game #10. - -## Decision - -### 1. `TelemetrySnapshot` is the read interface - -A single value type computed once per `UsageStore.refresh()`, passed -into every game and every achievement predicate. Games and predicates do -**not** read `UsageStore` directly — only `TelemetrySnapshot`. - -```swift -struct TelemetrySnapshot { - let now: Date - - // Raw — same arrays UsageStore holds. - let events: [UsageEvent] - let snapshots: [UsageSnapshot] - let rateLimits: RateLimitSnapshot? - - // Derived (computed lazily; cached on first access). - var currentFiveHourPct: Double? { /* … */ } - var currentSevenDayPct: Double? { /* … */ } - var totalLifetimeTokens: Int { /* … */ } - var lastEventAt: Date? { /* … */ } - var hoursSinceLastEvent: Double? { /* … */ } - var dailyActiveStreak: Int { /* … */ } - var modelsUsedToday: Set { /* … */ } - var distinctSlashCommandsLifetime: Set { /* … */ } - var distinctCwdsToday: Set { /* … */ } -} -``` - -`TelemetrySnapshot` lives at `Sources/Tokade/Tokade/TelemetrySnapshot.swift`. -Tests in `Tests/TokadeTests/TelemetrySnapshotTests.swift` lock the derived -fields against fixture event arrays. - -**Why a value type, not an actor or class:** snapshots are immutable; a -new one is built per refresh; games hold a reference to the latest one -via SwiftUI's @Observable propagation. No threading concerns. - -### 2. `Game` protocol - -```swift -@MainActor -protocol Game: Identifiable { - var id: String { get } // "tokegotchi", "achievements" - var title: String { get } // "Tokegotchi" - var icon: String { get } // SF Symbol name - func view(telemetry: TelemetrySnapshot) -> AnyView -} -``` - -A game is a value type that: -- Knows its name + icon -- Renders its UI given a snapshot -- May read/write its own state via `GameStateStore` (below) - -Games are registered once in `TokadeTab.allGames` (a static array). The -tab body iterates `allGames`, asks each for its view, and renders them -in a vertical stack of `Card`s. - -To add a new game: create one Swift file conforming to `Game`, append it -to `allGames`. No other file changes. **This is the success criterion -of the architecture.** - -### 3. `GameStateStore` is the write interface - -Every game persists its state through a single store: - -```swift -actor GameStateStore { - func read(_ type: T.Type, for gameId: String) async -> T? - func write(_ value: T, for gameId: String) async - func erase(gameId: String) async -} -``` - -Implementation: writes JSON to `~/.tokade/games/.json` with mode -`0600` (same promise as other archives). Atomic via `tmp + mv`. - -The "Erase history…" action in the panel footer calls -`GameStateStore.eraseAll()` and resets all game state. Tokegotchi -re-hatches from the first archived event; Achievements re-evaluate from -zero. - -### 4. File layout - -``` -Sources/Tokade/ -├── Tokade/ -│ ├── TokadeTab.swift # the new tab view + game registry -│ ├── TelemetrySnapshot.swift # the read interface -│ ├── GameStateStore.swift # the write interface -│ ├── Game.swift # the protocol -│ ├── Games/ -│ │ ├── Tokegotchi/ -│ │ │ ├── Tokegotchi.swift # game conforming to Game -│ │ │ ├── TokegotchiCard.swift # SwiftUI view -│ │ │ ├── TokegotchiState.swift # Codable state struct -│ │ │ ├── Mood.swift # mood band logic -│ │ │ └── Lines.swift # speech lines (data) -│ │ └── Achievements/ -│ │ ├── Achievements.swift # game conforming to Game -│ │ ├── AchievementsCard.swift # SwiftUI view (list + sheet) -│ │ ├── Achievement.swift # value type -│ │ └── Catalog.swift # the 24 v1 badges -``` - -The `Tokade/` subdirectory under `Sources/Tokade/` is deliberately -named — it's the *tab*, not the app namespace. (We considered `Arcade/` -to disambiguate; rejected because the user calls it the Tokade tab.) - -### 5. Persistence rules - -- All game state lives under `~/.tokade/games/` -- Each file is `.json`, owned by that game -- Files are `0600` -- Schema changes to a game's state require a new ADR or schema-versioned - Codable shape with `migrate()` logic -- Games **must not** write outside their own state file -- Games **must not** read other games' state files (use shared - `TelemetrySnapshot` for cross-game signals) - -### 6. Achievement-fire side effect - -Achievements need to fire a one-shot toast when newly earned. This is -the only place games are allowed a UI side-effect on the rest of the -panel. The mechanism: - -- `Achievements.tick(_ snapshot:)` returns a `[Achievement]` list of - newly-earned items in this tick -- `TokadeTab` reads that list, prepends them to an internal - `pendingToasts` array -- A `ToastOverlay` view in `MenuView` renders the queue with auto-dismiss - -No other game gets to push toasts in v1. - -### 7. CLAUDE.md rules added - -Three new enforceable rules: - -- **Games read telemetry only via `TelemetrySnapshot`.** No `UsageStore` - references inside `Sources/Tokade/Tokade/Games/`. Enforced by - `scripts/check.sh` grep. -- **Games persist only via `GameStateStore`.** No direct - `FileManager.write` calls inside `Sources/Tokade/Tokade/Games/`. - Enforced by `scripts/check.sh` grep. -- **Every game in `allGames` has a smoke test.** Just `view(snapshot:)` - returns without crashing on empty-data and on full-data snapshots. - Enforced by `scripts/check.sh` greppingfor `func test......` - in `Tests/TokadeTests/`. - -These get appended to `CLAUDE.md` when v1 ships. - -## Consequences - -**Positive** - -- New games are a one-file addition + one registry-line edit -- All telemetry derivations live in one place; no drift -- All game state lives in one place with consistent perms -- The "Erase history…" action correctly nukes game state too -- Future audits can grep `Sources/Tokade/Tokade/Games/` for compliance - -**Negative** - -- More indirection for game-1 than strictly needed. We're paying - architecture cost up front to enable games 2..N cheaply. -- `TelemetrySnapshot` has to keep growing as games request new derived - fields. Risk: a kitchen-sink type. Mitigation: lazy computation + - document each field's "who needs this" in the source comment. -- `GameStateStore` adds another actor; one more thing to manage Swift - concurrency around. - -## Alternatives considered - -- **Direct `UsageStore` access from each game.** Rejected as discussed - in Context. Doesn't scale past two games. -- **A single `GamesViewModel` that owns all game state.** Rejected; - putting Tokegotchi and Achievements in the same file (eventually - also Snake, Year-in-Claude, …) is exactly the monolith we're avoiding. -- **Use `UserDefaults` for game state.** Rejected; doesn't fit the - "your data is in `~/.tokade/`" promise, hard to inspect, doesn't - participate in "Erase history…" cleanly. -- **Make games SwiftUI views directly, no protocol.** Rejected; the - protocol gives us a registration list + uniform testing surface. - Without it, adding a game requires editing `TokadeTab` body in - multiple places. diff --git a/docs/adr/0005-tokade-tab-rpg-system.md b/docs/adr/0005-tokade-tab-rpg-system.md new file mode 100644 index 0000000..4f939f6 --- /dev/null +++ b/docs/adr/0005-tokade-tab-rpg-system.md @@ -0,0 +1,164 @@ +# ADR 0005 — Tokade tab RPG system architecture + +- **Status**: Accepted (design — implementation TBD) +- **Date**: 2026-05-13 +- **Deciders**: @bjamba +- **Companion**: [docs/02-design/TOKADE_TAB.md](../02-design/TOKADE_TAB.md) + +## Context + +The Tokade tab adds a small RPG to the app — a Tokegotchi creature with stats, regions, encounters, and a death/inheritance loop, fed by real Claude Code telemetry. This ADR captures the architectural decisions made during the design discussion that produced the v1 spec. + +The challenge is that the Tokade tab combines several distinct subsystems that all have to work together: +- An RPG state machine driven by externally-observed events +- A pixel-art rendering pipeline with per-character customization +- An animation system that has to compose with cosmetics +- A persistent save state that handles death + inheritance +- A composable cosmetic system that can grow to many items + +The decisions below are the load-bearing ones — getting them right early means the rest of the implementation is mechanical. + +## Decisions + +### 1. Matrix is the runtime asset format; SVG is the design-time format + +Sprites at runtime are **text matrix files** — 32×54 grids of palette-role indices. The base sprite, each hair style, each cosmetic item, and each animation frame is one such file (~1.5KB). + +SVG is the **design intermediary**. Iteration happens in SVG, where a designer (human or LLM) edits geometry, runs `bake.swift`, and gets a matrix. SVG is not loaded at runtime. + +Reasoning: SVG editing is fast and forgiving for iteration but heavy at runtime (requires a rasterizer). Matrix is cheap to load (just text), trivially diff-able in git, and supports the palette-swap trick (decision 2) without re-bakes. + +**Pipeline:** + +``` +design/tokegotchi/.svg ← author edits this + ↓ compose.py + rsvg-convert +design/tokegotchi/-32x54.png ← rasterized 32×54 + ↓ bake.swift +design/tokegotchi/.matrix ← runtime asset +``` + +### 2. Palette roles are parameterized; specific RGB is applied at render time + +The matrix encodes **role indices** (1 = outline, 2 = skin, 3 = skin-light, 4 = skin-dark, …) — not literal RGB. + +At runtime, each Tokegotchi has a **palette table** mapping each role to a specific RGB color (the user's chosen skin, iris, hair, etc.). Rendering = for each cell, look up `palette[role]` and paint. + +This means **all 6×6×6×6 = 1,296 color combinations of any sprite share a single matrix**. Storage for the full character creator is ~10–20KB, not hundreds of MB. + +Implication: stat-bearing equipment (rings, amulets) has its own palette entries too. New cosmetic categories add new roles, but the base palette is capped at 16 entries to keep glyph encoding to one hex character per cell. + +### 3. Cosmetics use additive composition via z-ordered SVG fragments + +Each cosmetic slot has a placeholder in the base SVG (`{{HAT_BODY}}`, `{{SHIRT_BODY}}`, `{{HELD_R_BODY}}`, etc.). Each cosmetic is a small SVG fragment substituted into the placeholder by `compose.py` at design time. + +Slots and their z-order (back-to-front): + +``` +cape → legs → pants → arms → torso → shirt → belt + → [head group: face → eyewear → hair → hat] → held-r / held-l +``` + +This means: +- Slot file structure is flat: `cosmetics//.svg` +- New cosmetics = one file + one folder entry. No base SVG changes needed. +- Z-order is fixed in the base SVG; cosmetics can't reorder themselves. + +### 4. Animation is rig-based: per-part transforms, not per-frame matrices + +Each animatable body part is wrapped in a `` group with a `{{X_TRANSFORM}}` placeholder. Animation frames are **tuples of transform strings**: + +```swift +struct AnimationFrame { + let headTransform: String + let rArmTransform: String + let lArmTransform: String + let rLegTransform: String + let lLegTransform: String +} +``` + +At equip time (when cosmetics change), the compositor pre-bakes each frame for the current outfit. Frames are then PNG/matrix files cycled at runtime. + +Arm groups have clip-paths removed because clip-paths don't transform with their parent — rotation breaks them. Shading rects are sized to naturally stay within arm bounds, making the clip-path redundant. + +### 5. State persistence is one JSON file per Tokegotchi, at `~/.tokade/games/tokegotchi.json` + +File mode is `0600` (same promise as other Tokade archives). Atomic write via tmp + mv. Schema is versioned with a `schemaVersion` integer to support future migrations. + +On death, the file is **not deleted** — the dead Tokegotchi rolls into the `bloodline.ancestors` array of the next generation's file. Hall of Fame is a derived view over that array. + +If the file is missing or corrupt, the app shows a character creator to start a new lineage. No data is lost from the user's actual Claude Code logs — they're the source of truth and replayable. + +### 6. Telemetry events are consumed via a `TickProcessor`; state is updated via pure functions + +A `TickProcessor` watches the existing `UsageStore` (or its successor) and translates each new event into game effects: + +```swift +protocol TickProcessor { + func consume(_ event: UsageEvent, against state: inout TokegotchiState) -> [TickResult] +} + +enum TickResult { + case itemDropped(itemId: String, count: Int) + case hpChanged(delta: Int) + case spChanged(delta: Int) + case ageAdvanced(byTokens: Int, multiplier: Double) + case questUnlocked(questId: String) + case encounterTriggered(kind: EncounterKind) + case achievementEarned(id: String) +} +``` + +All state changes go through `consume(...)`. The UI subscribes to state changes; `TickResult` values surface as toasts, animations, or modals. This isolates game logic from UI logic. + +### 7. The game is single-tab, no nested abstractions + +The earlier draft of this ADR proposed a `Game` protocol with multiple games registered via a static `allGames` array. **That is dropped.** The Tokade tab is a single RPG, not a games library. If a second game is ever added, this ADR will be amended. + +This simplifies the code substantially — no protocol, no compositor for cross-game state, no game-state-store actor. State is just the Tokegotchi save file. + +### 8. Region identity is cwd-prefix-matched and seeded by project analysis + +A region is uniquely identified by its **cwd prefix** (top-level project root). Subdirectories share the parent's region. + +When a new cwd is first observed, the system runs a **one-time region analysis**: + +1. Walks the project root looking for marker files (`Package.swift`, `Cargo.toml`, `package.json`, `pyproject.toml`, `go.mod`) +2. Picks a region "flavor" from a small table +3. Writes the seed to `~/.tokade/games/regions/.json` + +Seed information stays hidden from the player until LoC steps reveal it (Layer 3 in TOKADE_TAB.md). This way the world has consistent structure on first visit but unfolds gradually. + +### 9. Combat is mode-toggled, not fundamentally different code paths + +The user toggles `combatMode = passive | active` in settings. The combat engine is the same in both modes — the difference is **whether the UI presents a turn-based modal**. Passive mode simply auto-clicks "Attack" each turn until resolution, and renders a brief result banner. Active mode renders the modal and waits for input. + +A small set of "boss" monsters override `combatMode` to always-active. This is encoded per-monster, not at the global level. + +## Consequences + +**Positive** + +- Adding a cosmetic = 1 SVG file. No code change. +- Adding a hair style = 1 SVG file. No code change. +- Changing a Tokegotchi's colors = updating their palette table. No re-bake. +- Saving the full game state = serializing one struct. +- The full sprite library fits in ~100KB at any size. +- All telemetry-to-game logic is in one place (`TickProcessor`), easy to test in isolation. + +**Negative** + +- The bake pipeline is a real piece of tooling (`compose.py`, `pixelate.swift`, `bake.swift`, `render_matrix.swift`). It must be kept working as new SVGs are authored. +- The 16-color palette cap will eventually be limiting — a cosmetic that wants three new fill colors uses up 3 slots fast. v2 will need to extend. +- Region seeding is one-time at first-visit; if the project changes language later, the region's flavor doesn't update. Acceptable; user can request a re-seed. +- Per-part transforms can't easily express *bone-chain* animation (e.g., wrist independently rotating from elbow). That's out of scope for v1's anatomy. + +## Alternatives considered + +- **PNG-baked-per-combo cosmetics.** Rejected — would require ~1,728 PNGs per cosmetic to cover every character creator combination. Matrix + palette swap is 1 file per cosmetic. +- **A general `Game` protocol** so multiple games can share the tab. Rejected — over-engineering for a single game. If a second game lands, this ADR is amended. +- **Realtime SVG rendering** (load SVG, rasterize on every frame). Rejected — slow on cold start, complex runtime dependency on libsvg or similar. +- **Per-frame matrix files for animation** (instead of rig transforms). Rejected — would mean each cosmetic combination × each frame = explosion in matrices. Rig-based wins by an order of magnitude. +- **Skeletal/bone animation** with named joints + IK. Rejected — overkill for 32×54 sprites. The 5 part-groups + transforms cover everything v1 needs. +- **UserDefaults / SQLite for state.** Rejected — JSON in `~/.tokade/` matches the existing privacy promise and is inspectable. From b5c6f8a1ef7678e7571b2d08e8ec935c293de454 Mon Sep 17 00:00:00 2001 From: "Chris Ling (bjamba)" Date: Wed, 13 May 2026 16:53:12 -0700 Subject: [PATCH 3/3] Naming: split Tokade tab / Token Gaiden / Tokegotchi terminology MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Tokade = the macOS app (unchanged) - Tokade tab = the container tab in the app - Token Gaiden = the v1 game in the Tokade tab (multi-generation RPG saga) - Tokegotchi = the creature you raise (one per save, ancestors in Hall of Fame) Renames the ADR file 0005-tokade-tab-rpg-system.md → 0005-token-gaiden-rpg-system.md and updates header + terminology section. Updates the design doc header, vision, tab layout, and Hall of Fame copy to match. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/02-design/TOKADE_TAB.md | 8 +++++--- ...ystem.md => 0005-token-gaiden-rpg-system.md} | 17 ++++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) rename docs/adr/{0005-tokade-tab-rpg-system.md => 0005-token-gaiden-rpg-system.md} (89%) diff --git a/docs/02-design/TOKADE_TAB.md b/docs/02-design/TOKADE_TAB.md index 367d238..ff71378 100644 --- a/docs/02-design/TOKADE_TAB.md +++ b/docs/02-design/TOKADE_TAB.md @@ -1,13 +1,15 @@ -# Tokade tab — design +# Token Gaiden — design +> *The v1 game inside the new Tokade tab.* +> > **Last reviewed**: 2026-05-13 > **Owner**: @bjamba > **Status**: design (no implementation yet) -> **Companion ADR**: [0005-tokade-tab-rpg-system.md](../adr/0005-tokade-tab-rpg-system.md) +> **Companion ADR**: [0005-token-gaiden-rpg-system.md](../adr/0005-token-gaiden-rpg-system.md) ## Vision -The Tokade tab is a small RPG that lives inside the Tokade menu bar app and is fueled by your real Claude Code telemetry. You raise a creature called a **Tokegotchi**, walking it through *regions* (your projects), fighting monsters, completing quests, and aging it through tokens you spend with Claude. The longer it lives, the better. +**Token Gaiden** is a small RPG that lives inside the new Tokade tab and is fueled by your real Claude Code telemetry. You raise a creature called a **Tokegotchi**, walking it through *regions* (your projects), fighting monsters, completing quests, and aging it through tokens you spend with Claude. The longer each Tokegotchi lives, the better — but every Tokegotchi eventually dies, and a new generation hatches with partial inheritance. Token Gaiden is the multi-generation saga; Tokegotchi is the protagonist of any one chapter. It is not a Tamagotchi (passive observation). It is not Stardew Valley (active sim). It sits in between: telemetry generates events; the player makes light tactical choices at occasional encounters. diff --git a/docs/adr/0005-tokade-tab-rpg-system.md b/docs/adr/0005-token-gaiden-rpg-system.md similarity index 89% rename from docs/adr/0005-tokade-tab-rpg-system.md rename to docs/adr/0005-token-gaiden-rpg-system.md index 4f939f6..a31df39 100644 --- a/docs/adr/0005-tokade-tab-rpg-system.md +++ b/docs/adr/0005-token-gaiden-rpg-system.md @@ -1,15 +1,22 @@ -# ADR 0005 — Tokade tab RPG system architecture +# ADR 0005 — Token Gaiden RPG system architecture - **Status**: Accepted (design — implementation TBD) - **Date**: 2026-05-13 - **Deciders**: @bjamba - **Companion**: [docs/02-design/TOKADE_TAB.md](../02-design/TOKADE_TAB.md) +## Terminology + +- **Tokade** — the macOS menu bar app (existing brand). +- **Tokade tab** — the new tab in the app (the container; may host other games in the future). +- **Token Gaiden** — the v1 game inside the Tokade tab. The subject of this ADR. +- **Tokegotchi** — the creature the player raises in Token Gaiden. One per active save; ancestors live in the Hall of Fame. + ## Context -The Tokade tab adds a small RPG to the app — a Tokegotchi creature with stats, regions, encounters, and a death/inheritance loop, fed by real Claude Code telemetry. This ADR captures the architectural decisions made during the design discussion that produced the v1 spec. +Token Gaiden is a small RPG inside the Tokade tab — a Tokegotchi creature with stats, regions, encounters, and a death/inheritance loop, fed by real Claude Code telemetry. This ADR captures the architectural decisions made during the design discussion that produced the v1 spec. -The challenge is that the Tokade tab combines several distinct subsystems that all have to work together: +The challenge is that Token Gaiden combines several distinct subsystems that all have to work together: - An RPG state machine driven by externally-observed events - A pixel-art rendering pipeline with per-character customization - An animation system that has to compose with cosmetics @@ -112,9 +119,9 @@ enum TickResult { All state changes go through `consume(...)`. The UI subscribes to state changes; `TickResult` values surface as toasts, animations, or modals. This isolates game logic from UI logic. -### 7. The game is single-tab, no nested abstractions +### 7. Token Gaiden is the only game in the Tokade tab at v1; no game-registry abstraction -The earlier draft of this ADR proposed a `Game` protocol with multiple games registered via a static `allGames` array. **That is dropped.** The Tokade tab is a single RPG, not a games library. If a second game is ever added, this ADR will be amended. +The earlier draft of this ADR proposed a `Game` protocol with multiple games registered via a static `allGames` array. **That is dropped.** The Tokade tab at v1 hosts Token Gaiden and nothing else. If a second game is ever added, this ADR will be amended to introduce the registry shape at that time. This simplifies the code substantially — no protocol, no compositor for cross-game state, no game-state-store actor. State is just the Tokegotchi save file.