Updated readme and plan
This commit is contained in:
@@ -37,7 +37,7 @@ A sandbox exhibitionist life-sim where the player accepts fetish commissions fro
|
||||
Yumi, while browsing the internet after a rent increase, discovers a hidden fetish forum that pays for exposure-themed commissions. After completing her first task she realizes she enjoys it. She begins taking commissions to cover rent and explore the new feelings.
|
||||
|
||||
### 2.2 Setting
|
||||
A modern Japanese-style city. Currency is Yen. The city is the entire playable map: residential, commercial, parks, alleys, a beach (TBD), a gym, a beauty salon, multiple shop types, the player's apartment.
|
||||
A modern Japanese-style city. Currency is Yen. The city is the entire playable map: residential, commercial, parks, alleys, a beach, a train station, a gym, a beauty salon, multiple shop types, the player's apartment. See §10.4 for the locked location list.
|
||||
|
||||
### 2.3 Tone
|
||||
Sexual, playful, transgressive. The player character is a willing participant, not a victim. The "stalker" NPC is the only non-consensual antagonist and exists as a session-loss threat, not a narrative one.
|
||||
@@ -94,7 +94,7 @@ Player returns home. All carried items persist. Rewards from completed commissio
|
||||
Triggered by any session-loss condition (§3.3). On loss:
|
||||
- **The player returns to the apartment.** The route home depends on the cause:
|
||||
- **Energy = 0** — a cutscene plays of the player trudging home, exhausted, and going to bed. The player never sleeps outside; the apartment bed is the only sleep location. Time advances by one sleep cycle.
|
||||
- **Embarrassment = max** — fade to apartment (or a dedicated fail-state location — TBD).
|
||||
- **Embarrassment = max** — fade to apartment. No extra cost beyond the session loss itself (no time skip, no money penalty, no reputation hit).
|
||||
- **Police capture** — the player is processed (money penalty below) and returned home.
|
||||
- **Equipped clothing is never forcibly removed by loss.** Whatever the player was wearing at the moment of failure stays equipped on arrival home.
|
||||
- **A bag placed in the world** (not carried) is lost along with its contents — the player did not retrieve it before the failure.
|
||||
@@ -109,7 +109,7 @@ Triggered by any session-loss condition (§3.3). On loss:
|
||||
|
||||
## 5. The Three Progression Paths
|
||||
|
||||
The player chooses how they level up but is not locked into one path. XP earned from commissions is path-tagged.
|
||||
The player chooses how they level up but is not locked into one path. **XP is a single shared pool** — every commission, mission, and stream feeds the same number. The player decides which path's attribute pool to spend it on. Given enough XP, every attribute on every path can be upgraded; there is no requirement to earn "Slut XP" before buying a Slut-path upgrade.
|
||||
|
||||
### 5.1 Slut
|
||||
- **Unlocks:** revealing clothing (mini skirts, high heels, lingerie variants), masturbation action, masturbation-related missions.
|
||||
@@ -127,7 +127,7 @@ The player chooses how they level up but is not locked into one path. XP earned
|
||||
- **Playstyle:** physically demanding, restriction-based puzzles (cuffs require NPC help to remove).
|
||||
|
||||
### 5.4 Path level
|
||||
Each path has a level (e.g., 1–10). Level gates clothing, missions, and attribute upgrades. XP per path is independent.
|
||||
Each path has a level (e.g., 1–10). Level gates clothing, missions, and attribute upgrades within that path's pool. **A path's level is derived from how much the player has invested into that path's attribute upgrades** (§7.10), not from any per-path XP counter — XP itself is a single shared pool.
|
||||
|
||||
---
|
||||
|
||||
@@ -147,11 +147,13 @@ Each path has a level (e.g., 1–10). Level gates clothing, missions, and attrib
|
||||
- **Bags** (§6.4)
|
||||
- **Phone** (one — special, §9)
|
||||
- **Consumables** (food, §6.7)
|
||||
- **Gadgets** (TBD beyond phone)
|
||||
- **Toys** — sex toys for the toy slots (§6.5). Bought at the Adult Shop (§10.4).
|
||||
|
||||
There are no other gadget categories. The phone is the only electronic device the player carries.
|
||||
|
||||
### 6.3 Clothing
|
||||
Attributes per clothing instance:
|
||||
- `type` — equipment slot (top, bottom, underwear-top, underwear-bottom, outerwear, footwear, accessory, restraint, etc. — final slot list TBD).
|
||||
- `type` — equipment slot. See **§6.5 Equipment slots** for the canonical 18-slot list (body clothing, accessories, restraints, toys), exclusion rules, and which slots drive the face-cover bypass.
|
||||
- `covers` — set of body parts: `{ boobs, ass, genitals, ... }`.
|
||||
- `progressionPath` — Slut / Exhibitionist / Slave / None.
|
||||
- `color` — primary color enum.
|
||||
@@ -212,10 +214,61 @@ Theft applies to lose clothing on the ground and to bags placed in the world (se
|
||||
- Bags follow the same theft rules as clothing (§6.3.4) and the same session-loss rules as other items (§4.4 / §6.6).
|
||||
|
||||
### 6.5 Inventory & Equipment
|
||||
- **Clothing slots** — one per equipment slot type (see §6.3 `type` field for the slot vocabulary; final list is TBD per §21 Q1).
|
||||
|
||||
The player has 18 equipment slots in four groups, plus a bag slot, a hand slot, and container slots exposed by what's currently equipped.
|
||||
|
||||
#### Equipment slots
|
||||
|
||||
**Body-clothing slots (layering, with one exclusion rule):**
|
||||
|
||||
| # | Slot | Examples |
|
||||
|--:|--------------------|-----------------------------------------|
|
||||
| 1 | `Outerwear` | Coat, jacket, hoodie |
|
||||
| 2 | `Top` | T-shirt, blouse, crop top |
|
||||
| 3 | `Bottom` | Skirt, pants, shorts |
|
||||
| 4 | `UnderwearTop` | Bra, sports bra, bikini top |
|
||||
| 5 | `UnderwearBottom` | Panties, thong, bikini bottom |
|
||||
| 6 | `Bodysuit` | Latex catsuit, leotard |
|
||||
| 7 | `Socks` | Stockings, tights, socks |
|
||||
| 8 | `Footwear` | Shoes, heels, boots, sandals |
|
||||
|
||||
`Bodysuit` is **mutually exclusive** with `Top`, `Bottom`, `UnderwearTop`, and `UnderwearBottom`. Equipping a bodysuit auto-unequips all four of those slots; equipping any of those four while a bodysuit is on auto-unequips the bodysuit. `Outerwear`, `Socks`, `Footwear`, and the accessory / restraint slots are unaffected by bodysuit equipping.
|
||||
|
||||
**Accessory slots (cosmetic unless noted):**
|
||||
|
||||
| # | Slot | Examples | Notes |
|
||||
|--:|--------|---------------------------------------|--------------------------------------------------------|
|
||||
| 9 | `Head` | Hat, hood, headband | Cosmetic only. |
|
||||
| 10 | `Face` | Mask, face shield | **Face-cover for recognition bypass (§7.6).** |
|
||||
| 11 | `Eyes` | Glasses, sunglasses, blindfold | **Face-cover for recognition bypass (§7.6).** |
|
||||
| 12 | `Neck` | Necklace, choker, scarf | Cosmetic. |
|
||||
|
||||
**Restraint slots (independent — all three can be active simultaneously):**
|
||||
|
||||
| # | Slot | Examples |
|
||||
|--:|-------------------|-----------------------------------|
|
||||
| 13 | `WristRestraint` | Wrist cuffs, rope bindings |
|
||||
| 14 | `AnkleRestraint` | Ankle cuffs, spreader bar |
|
||||
| 15 | `NeckRestraint` | Collar (restraint variant), gag |
|
||||
|
||||
Restraint slots are governed by §6.3.7 (effects) and §10.4.1 (removal). `NeckRestraint` is distinct from cosmetic `Neck`; a restraint collar and a necklace do not auto-exclude — content authoring is responsible for ensuring they don't visually collide (e.g., hide the necklace mesh when a collar is present).
|
||||
|
||||
**Toy slots (independent — all three can be active simultaneously):**
|
||||
|
||||
| # | Slot | Examples |
|
||||
|--:|-----------|-------------------------------------------------------|
|
||||
| 16 | `Nipples` | Nipple clamps, nipple suckers, pasties with vibrators |
|
||||
| 17 | `Anal` | Butt plug, anal beads |
|
||||
| 18 | `Vagina` | Vibrator, dildo, internal egg |
|
||||
|
||||
Sex toys are bought from the Adult Shop (§10.4) and follow the standard item-identity rules (§6.1). Toys do **not** contribute to coverage (§6.3.2); a butt plug under panties leaves `UnderwearBottom`'s coverage value unchanged and the ass remains "covered" by panties for embarrassment math. Toys can be hidden beneath clothing or worn while otherwise nude — the slot is orthogonal to the body-clothing layering rules. Effects (lust modifier, embarrassment modifier, pulse modifier, audible vibration that NPCs may detect) are per-toy and authored on the toy's `UItemInstance`.
|
||||
|
||||
#### Other equipment
|
||||
- **Bag slot** — 1 (see §6.4).
|
||||
- **Hand slot** — 1. Holds one carriable item at a time (phone, food, key, etc.). Restrictive clothing (§6.3.7) disables all hand-dependent actions while equipped.
|
||||
- **Container slots** — additional storage exposed by equipped clothing (e.g., pants pocket) and by the equipped bag. Each container slot has a size class (S / M / L, §6.3.1) that constrains what fits.
|
||||
- **Hand slot** — 1. Holds one carriable item at a time (phone, food, key, etc.). Any item in `WristRestraint` disables all hand-dependent actions (§6.3.7).
|
||||
|
||||
#### Container slots
|
||||
- Each equipped clothing item may expose container slots (e.g., pants pocket). The equipped bag exposes container slots as well. Each container slot has a size class (S / M / L, §6.3.1) that constrains what fits.
|
||||
- There is no abstract "backpack" inventory. Total carry capacity = sum of container slots provided by currently equipped items.
|
||||
|
||||
### 6.6 Item loss summary table
|
||||
@@ -229,14 +282,30 @@ Theft applies to lose clothing on the ground and to bags placed in the world (se
|
||||
| Sleep with clothing left outside the apartment (voluntary or forced energy-zero cutscene) | **Guaranteed** loss of every clothing item left outside, regardless of grace / chance state. |
|
||||
|
||||
### 6.7 Consumables — Food
|
||||
- Restores energy.
|
||||
- May grant timed buffs (e.g., ramen: +stamina regen for 3h in-game).
|
||||
- Buffs are typed and stackable per design (specifics TBD).
|
||||
- Some foods require cooking (ingredients from convenience store), some are pre-made (from café).
|
||||
- Food is cooked via mini-games
|
||||
- Slice ingredients via fruit ninja
|
||||
- Stir ingredients via clicker(Mortal Kombat - Test your strength)
|
||||
- Cook ingredients via Genshin Impact cooking minigame(DBD generator fix minigame)
|
||||
|
||||
Food items live in the `UItemInstance` system (§6.1). They come from two sources: **ingredients** at the Convenience Store (require cooking) and **pre-made** food at the Café (eat immediately). Eating consumes the item and applies any combination of the effects below.
|
||||
|
||||
**Instant effects** (one-shot on consumption, no timer):
|
||||
- **Energy restore** — adds a fixed amount of energy (§7.3).
|
||||
- **Lust decrease** — subtracts a fixed amount of lust. Particularly relevant for non-Slut players who cannot masturbate to reset lust (§7.2).
|
||||
|
||||
**Timed buffs** (run for a per-item duration):
|
||||
- **Stamina regen +** — raises `staminaRecoveryRate` above baseline (§7.4). The original ramen example.
|
||||
- **Max stamina +** — additive bonus to base max stamina before the energy multiplier in §7.4 applies.
|
||||
- **Embarrassment-gain resistance** — multiplier < 1 on the embarrassment-gain rate (§7.1).
|
||||
- **Lust-gain resistance** — multiplier < 1 on the lust-gain rate (§7.2).
|
||||
|
||||
The effect list above is locked. No pulse-specific buffs, no caffeine "energy trickle," no other categories at launch.
|
||||
|
||||
**Stacking:**
|
||||
- **Different effect types always stack** and run in parallel.
|
||||
- **Same effect type stacks additively up to a per-type cap.** Two ramens (each +X stamina regen for 3h) compose to `min(2X, cap)` for 3h, with timers tracked independently.
|
||||
- Per-type caps and the instant-effect amounts are TBD per §21.
|
||||
|
||||
**Cooking:**
|
||||
- Ingredients from the Convenience Store must be cooked at the apartment before they become edible.
|
||||
- Cooking runs through three minigames: **slice** (fruit-ninja-style), **stir** (rhythm / timing-mash), and **cook** (timing-stop). Performance on each minigame modulates the buff strength of the resulting dish; failing badly produces a weaker variant of the intended effect, never poison or negative buffs.
|
||||
- Pre-made Café food has no cooking step — eat directly.
|
||||
|
||||
---
|
||||
|
||||
@@ -303,7 +372,7 @@ All attributes update in real time. Indoor and outdoor behavior is identical —
|
||||
- Each photo taken by a Blogger NPC and published increases recognition.
|
||||
- Higher recognition → faster embarrassment gain (NPCs recognize the player).
|
||||
- Reducible by reporting articles on the city news site (PC, §11.1).
|
||||
- Can be **bypassed** by hiding the face (mask, hat-and-glasses combo — TBD specifics).
|
||||
- Can be **bypassed** by hiding the face. Each of the face-cover slots — `Face` (mask) and `Eyes` (glasses / sunglasses / blindfold) — applies an additive recognition-resistance modifier when occupied. Either one alone provides a partial bypass; both equipped stacks toward a full bypass. The `Head` slot (hat / hood) is cosmetic only and does not contribute. Per-slot resistance magnitudes are TBD per §21.
|
||||
|
||||
### 7.7 Wanted
|
||||
- Boolean. Set when a Snitch (§10.2) successfully reports the player to police during a session. The tag persists even if the session ends safely afterward (§4.3).
|
||||
@@ -324,7 +393,7 @@ All attributes update in real time. Indoor and outdoor behavior is identical —
|
||||
- **Money (Yen)** — earned from commissions, livestream donations, selling worn underwear. Spent on rent, clothing, food, gym, beauty salon.
|
||||
|
||||
### 7.10 Attribute leveling
|
||||
Path XP unlocks the *ability* to upgrade attributes within that path's pool. Money or a separate currency may be required per level-up (TBD — recommend keeping it tied to XP only for clarity, but flag for playtest).
|
||||
Each attribute upgrade in a path's pool costs only **XP** — no money, no separate currency. **XP is a single shared pool, not per-path** (§5): every commission, mission, and stream credits the same number, and the player decides which path's attribute pool to spend it on. With enough XP a player can max all three paths. Per-level XP costs (flat, escalating, or stepwise) are tuning numbers, not design decisions; they live in the per-path attribute table and are calibrated in playtest.
|
||||
|
||||
---
|
||||
|
||||
@@ -342,10 +411,10 @@ Movement should be implemented as a state machine on the character with clear tr
|
||||
|
||||
## 9. Phone
|
||||
|
||||
TODO: Add battery charge
|
||||
|
||||
The phone is the player's diegetic UI hub. It can be used if it is in: hand, pocket (pants with phone-sized container slot), or equipped bag. **Exception:** the livestream app (§9.1.1) continues to operate while the phone is placed in the world, so the player can keep streaming after setting the phone down for a back-camera shot.
|
||||
|
||||
The phone is battery-powered (§9.8). A dead phone is unusable until charged — no forum, no camera, no maps. Plan accordingly.
|
||||
|
||||
### 9.1 Camera
|
||||
- **Front camera** — held in hand, framed selfie shot.
|
||||
- **Back camera** — phone is placed in the world via `place camera` action. A floating window shows the camera's view. Photos are triggered via hotkey while the camera is placed.
|
||||
@@ -355,9 +424,15 @@ The phone is the player's diegetic UI hub. It can be used if it is in: hand, poc
|
||||
- Available at any time via the phone, regardless of whether the player is holding it or it is placed in the world.
|
||||
- Same dual-mode setup as the camera: front-facing while held, back-facing when placed.
|
||||
- Generates donation income in real time. Income rate scales with exposure visible in the stream (similar logic to photo follower-gain math, but continuous).
|
||||
- Also grows **followers** in a continuous trickle. The live `streamQualityScore` is fed into `FollowerGainCalculator` (§13.5) per tick at a tunable rate; gains accumulate over the stream. Reputation sign applies — streaming with negative reputation shrinks the audience instead of growing it.
|
||||
- Recommended implementation: livestream is a `StreamSession` object owned by the phone, tickable, with `viewerCount`, `tipRate`, and `streamQualityScore` (a function of what the camera sees and player attributes).
|
||||
- Ending the stream returns earnings to the bank.
|
||||
- TODO: Stream requests for huge donations
|
||||
- Ending the stream returns earnings to the bank and finalizes the accumulated follower delta.
|
||||
- **Tip requests.** During an active stream, viewers post named action requests with a fixed yen reward attached. Each request is a small commission expressed in the §13.4 typed objective vocabulary — e.g. `ExposeBodyPart(boobs, 8s)` for a small tip, `BeFullyNaked(15s)` for a medium tip, `TakePhotoAtLocation(fountain)` for a large tip. The full tip-size range is wide; occasional high-roller requests pay several times a normal commission for correspondingly demanding objectives.
|
||||
- Requests appear as a phone popup with **Accept** / **Decline** hotkeys and a short countdown. Ignoring the popup until it times out is treated as a decline.
|
||||
- **Decline** has no penalty — viewers keep watching and baseline tip rate is unaffected. Players who don't want to engage with the request system can ignore it indefinitely and still earn passive donation income.
|
||||
- **Accept** spawns a live objective tracker for the duration of the request. Completing it in time deposits the tip into the bank along with the rest of the stream earnings.
|
||||
- **Failing an accepted request** drops the viewer count slightly (less passive income for the remainder of the stream) but does **not** damage reputation (§7.8). A failed accept is a missed opportunity, not a breach of contract.
|
||||
- Request frequency, tip-size distribution, acceptance countdown, and the viewer-count-drop magnitude on failure are TBD per §21. Higher viewer count generally → more frequent and higher-value requests.
|
||||
|
||||
### 9.2 Gallery
|
||||
- Lists all captured photos with metadata (time, location, equipped state, exposed parts).
|
||||
@@ -368,6 +443,7 @@ The phone is the primary access point for the forum. See §13.
|
||||
|
||||
### 9.4 Bank app
|
||||
- Track balance, income, spending. Pay rent (or auto-pay).
|
||||
- Income line items break down by source: commissions, livestream donations, in-stream tip-request completions, underwear sales (§15.1), and the **weekly follower-income auto-deposit** (§7.9) that lands at each week boundary.
|
||||
|
||||
### 9.5 Feetex (deliveries)
|
||||
- Track pending online orders (clothing, food). Items arrive at the apartment door one in-game day after purchase.
|
||||
@@ -378,6 +454,25 @@ The phone is the primary access point for the forum. See §13.
|
||||
### 9.7 Health Tracker
|
||||
- Displays the player's attribute readouts (energy, stamina, lust, embarrassment, recognition).
|
||||
|
||||
### 9.8 Battery
|
||||
The phone has a finite battery that drains while powered on and recharges at the apartment.
|
||||
|
||||
- **Drain.** Two layers, multiplied together:
|
||||
- **Passive base** — slow tick whenever the phone is powered on (idle in pocket, hand, or bag).
|
||||
- **Per-app multiplier** — foreground app raises the drain rate above baseline. Indicative ranking (concrete numbers TBD per §21):
|
||||
- Forum / Bank / Feetex / Maps / Gallery / Health Tracker: ~1× (baseline + minor UI cost).
|
||||
- Camera placed in the world (back-camera mode): ~3×.
|
||||
- Livestream: ~5× — heaviest drain. Livestream is the only app that ticks in the background and stacks its drain on top of whatever app is in the foreground.
|
||||
- **Charging.**
|
||||
- **Apartment charger** — primary source. A charger spot in the apartment recharges the phone at a fixed rate (TBD) while the phone is placed on it.
|
||||
- **Portable powerbank** — purchasable consumable (Convenience Store, §10.4). Single-use; consuming one restores a fixed percentage of charge (TBD). Occupies one container slot (size S, §6.3.1) in the player's inventory and follows normal item-identity / theft rules.
|
||||
- **Dead battery (0%).** Hard shutdown:
|
||||
- All apps lock. Opening the phone shows a "dead battery" overlay; no input passes through.
|
||||
- An active livestream **ends immediately**. Earnings accrued up to the cut-off are deposited; further viewers / tips that would have arrived are forfeit.
|
||||
- The phone can still accept a powerbank charge from the player's inventory — consuming a powerbank wakes the phone at the powerbank's restore percentage. Without a powerbank, the phone stays dead until the player reaches an apartment charger.
|
||||
- **Sleep.** Sleeping at the apartment always charges the phone to 100%, whether or not the player explicitly docked it on the charger. This applies equally to voluntary sleep and to the energy-zero cutscene (§4.4) — that cutscene's sleep cycle includes the charge-to-full step.
|
||||
- **Persistence.** Current battery percentage is part of the phone's `UItemInstance` state and persists across saves.
|
||||
|
||||
---
|
||||
|
||||
## 10. The City
|
||||
@@ -412,14 +507,17 @@ Sleeping at home fast-forwards 8 hours.
|
||||
|
||||
### 10.4 Locations
|
||||
- **Apartment** — safe zone. Wardrobe, bed, PC, kitchen.
|
||||
- **Convenience store** — cooking ingredients.
|
||||
- **Convenience store** — cooking ingredients; portable phone powerbanks (§9.8).
|
||||
- **Café** — pre-made food.
|
||||
- **Clothing shops** — various types, each with a different inventory mix.
|
||||
- **Gym** — increase max energy. Costs energy in the process. Costs money.
|
||||
- **Beauty salon** — boobs size, ass size, makeup, hairstyle, hair color.
|
||||
- **Adult shop** — Buy adult toys.
|
||||
- **Adult shop** — Buy sex toys for the `Nipples`, `Anal`, and `Vagina` toy slots (§6.5).
|
||||
- **Streets / parks / alleys** — commission space.
|
||||
- **(TBD)** beach, train station, school exterior, hot springs, etc. — design pass needed for variety.
|
||||
- **Beach** — open sand, daytime crowds, nighttime privacy. Strong fit for exhibitionist / swimwear content.
|
||||
- **Train station** — platforms, concourses. Dense voyeur space; an indoor-transit setting distinct from streets.
|
||||
|
||||
The location set above is **locked for launch**. School exterior and hot springs (onsen) were considered and explicitly cut.
|
||||
|
||||
#### 10.4.1 Cuff / restraint removal
|
||||
Restrictive clothing (§6.3.7) is removed by **Key + timed unlock action**:
|
||||
@@ -459,49 +557,59 @@ Restrictive clothing (§6.3.7) is removed by **Key + timed unlock action**:
|
||||
|
||||
The forum is accessed via phone or PC. It is both diegetic and the primary mission UI.
|
||||
|
||||
TODO: Review
|
||||
### 13.1 Weekly missions
|
||||
- Generated at week start, semi-random, weighted by player path progression.
|
||||
- Rewards: money, XP.
|
||||
- If the player doesn't meet entry requirements (level, path level), missions are visible but not marked failed — they serve as goals.
|
||||
- Must be completed by end of week or marked failed.
|
||||
- Rewards: money, XP, followers. Money / XP scale larger than daily commissions (week-long commitment); follower payouts are correspondingly larger.
|
||||
- The player must **accept** a weekly mission from the forum before it counts as committed (same accept lifecycle as daily commissions in §13.2). Un-accepted weekly missions stay visible as goals and carry no penalty.
|
||||
- An accepted weekly mission that the player fails to complete by the end of the week is marked failed and applies the template's `failurePenalty` (§13.4), which is heavier than the daily equivalent.
|
||||
- A mission visible on the board that requires a path level the player hasn't reached is shown for context but cannot be accepted yet.
|
||||
|
||||
### 13.2 Daily commissions
|
||||
- Generated at day start, semi-random, weighted by path progression.
|
||||
- Rewards: money, XP, followers.
|
||||
- Failing or not completing within the day → followers/reputation loss.
|
||||
- A commission is "started" when the player accepts it; remaining un-started commissions are simply offered.
|
||||
- The player must **accept** a daily commission from the forum to commit to it. Accepted commissions that aren't completed by day end trigger the template's `failurePenalty` (§13.4) — typically a reputation / followers loss. Un-accepted commissions sitting on the board carry no penalty; they are offers, not obligations.
|
||||
- Multiple commissions can be accepted simultaneously; there is no built-in cap. The day timer is the natural limit on workload.
|
||||
|
||||
### 13.3 Profile
|
||||
- View stats, progression, path levels, posted photos.
|
||||
- Post photos → follower gain (calculated from exposed body parts + visible coverage in photo).
|
||||
- Post photos → follower gain (calculated from exposed body parts + visible coverage in the photo via the `FollowerGainCalculator`, §13.5).
|
||||
- Livestream is initiated from the phone at any time (see §9.1.1), not from the forum profile. The profile displays livestream history and lifetime earnings.
|
||||
- Level up attributes (gated by path XP).
|
||||
- Level up attributes — paid for from the shared XP pool (§5, §7.10). The profile is the UI surface for choosing which path's attribute to upgrade.
|
||||
- Displays weekly follower-income summary: current follower count, next weekly payout estimate, lifetime earnings from followers (the underlying auto-deposit lives in the bank app, §9.4).
|
||||
|
||||
> **Forum scope:** The forum surface is intentionally minimal — the **commission board** (§13.1 / §13.2) and the **player's own profile**. There are no other users to browse, no threads, no popular-posts feed. The forum exists to drive the gameplay loop, not to simulate a social network.
|
||||
|
||||
### 13.4 Commission generation
|
||||
Commissions should be procedural with template-driven content. Recommended template structure:
|
||||
```
|
||||
CommissionTemplate {
|
||||
id,
|
||||
pathRequirement: { path, minLevel },
|
||||
pathRequirement: { path, minLevel }, // path ∈ { None, Slut, Exhibitionist, Slave }; None = path-neutral
|
||||
steps: [ list of typed objective steps ],
|
||||
rewardMoneyRange,
|
||||
rewardXPRange,
|
||||
rewardFollowersRange,
|
||||
failurePenalty,
|
||||
validLocations: [ ... ],
|
||||
failurePenalty, // canonical penalty when an accepted commission expires unfinished;
|
||||
// empty/zero = generator applies a default appropriate to the reward tier
|
||||
validLocations: [ ... ], // locations where the commission can run; applies to the whole commission
|
||||
}
|
||||
```
|
||||
|
||||
**Generator rules:**
|
||||
- The generator never emits a template the player cannot complete: `pathRequirement` (including `path: None` for path-neutral commissions) is respected, and templates whose steps reference path-locked actions (e.g., `PerformAction(masturbate)` for non-Slut players) are filtered out before they reach the board.
|
||||
- The `failurePenalty` field is authoritative. When empty / zero, the generator substitutes a default penalty scaled to the reward range.
|
||||
- Weekly templates and daily templates draw from the same pool; the daily/weekly distinction lives on the template tier (longer step chains, higher reward bands).
|
||||
|
||||
Typed objective steps (initial set):
|
||||
- `ExposeBodyPart(part, durationSeconds)`
|
||||
- `BeFullyNaked(durationSeconds)` — fully unclothed for the duration; no NPC requirement.
|
||||
- `BeFullyNakedNearNPCs(count, durationSeconds)`
|
||||
- `WalkNakedDistance(meters)`
|
||||
- `MoveDistanceFromClothing(meters)`
|
||||
- `PerformAction(actionId)` (e.g., masturbate)
|
||||
- `PerformAction(actionId)` (e.g., masturbate) — actions with path gating are only used in templates whose `pathRequirement` matches; generator filter enforces this.
|
||||
- `BeObservedByNPCType(type, durationOrCount)`
|
||||
- `TakePhotoAtLocation(locationTag)`
|
||||
- `DeliverItemTo(npcOrLocation)`
|
||||
- `DeliverItemTo(npcOrLocation)` — the player must **source the item from their own inventory**. The commission does not auto-issue items on accept. Worn-underwear sales (§15.1) are the canonical use case. "Deliver this pre-issued package to X" is intentionally not supported by this primitive — if that flavor is needed later, add a separate `DeliverIssuedItemTo` step rather than overloading this one.
|
||||
|
||||
Steps compose: a single commission step list may chain primitives that must all be satisfied (concurrently or sequentially as specified by the template).
|
||||
|
||||
@@ -513,9 +621,15 @@ Example commissions from the brief that should be representable:
|
||||
|
||||
### 13.5 Subscriber math (rough)
|
||||
```
|
||||
followerGain = base(photoExposureScore) * reputationFactor * (1 / log(followerCount + e))
|
||||
followerGain = base(exposureScore) * reputationFactor * (1 / log(followerCount + e))
|
||||
```
|
||||
Concrete formula to be calibrated in playtest. Keep this isolated in a single `FollowerGainCalculator` for tunability.
|
||||
- **`exposureScore`** is the input — for a posted photo it is computed from exposed body parts + visible coverage in that photo; for a livestream tick it is the current `streamQualityScore` (§9.1.1).
|
||||
- **`reputationFactor`** is **signed**. Positive / neutral reputation → positive `followerGain` (followers grow). Negative reputation → negative `followerGain` (followers shrink). This is the §7.8 "positive vs. negative reputation" branch expressed in one number.
|
||||
- The `1 / log(followerCount + e)` term enforces diminishing returns: at `followerCount = 0` the divisor is `1.0`; growth slows as the audience grows.
|
||||
|
||||
Both photo posts and livestreams run through the same `FollowerGainCalculator`. Photos compute once on submission; livestreams call it per tick at a tunable rate and accumulate. Completed in-stream tip requests (§9.1.1) apply an additional follower bonus on top, treated as a mini-commission completion.
|
||||
|
||||
Concrete numbers to be calibrated in playtest. Keep this isolated in `FollowerGainCalculator` for tunability.
|
||||
|
||||
---
|
||||
|
||||
@@ -614,6 +728,7 @@ The unique-instance rule (§6.1) means save must serialize each item by instance
|
||||
- `NPCManager` — spawning, density, type weighting by location and time.
|
||||
- `RecognitionSubsystem` — photo-to-news pipeline, article state, reporting.
|
||||
- `PoliceManager` — patrols, wanted state, line of sight, chase.
|
||||
- `PhoneSubsystem` — tickable phone state: battery drain (passive base + per-app multiplier, §9.8), active app, livestream session lifecycle, charger interaction at the apartment. Owns the phone's `UItemInstance` extension for battery percentage.
|
||||
- `SaveSubsystem` — orchestrates serialization across all of the above.
|
||||
|
||||
### 17.2 GAS usage
|
||||
@@ -656,7 +771,7 @@ Clothing, commissions, food, NPC templates all live as `DataAssets` (or DataTabl
|
||||
### 18.2 Full launch target (TBD)
|
||||
- 60+ clothing items.
|
||||
- All NPC types polished, multiple visual variants each.
|
||||
- Full city, 4+ districts.
|
||||
- Full city, 4+ districts, including the **Beach** and **Train Station** locations (§10.4) added on top of the vertical-slice shop set.
|
||||
- 100+ commission templates.
|
||||
- All 3 paths leveled to cap with distinct content.
|
||||
|
||||
@@ -689,21 +804,29 @@ Decisions previously open, now fixed:
|
||||
8. **Run length:** 90-day campaign. Endless mode unlocked after first completion (rent-eviction disabled, all other systems intact). See §3.3.
|
||||
9. **Cuff/restraint removal:** Key + timed unlock action only. No Helper NPC, no paid adult-shop service. See §10.4.1.
|
||||
10. **Voice commands:** Not used. Hotkey-driven only.
|
||||
11. **Equipment slot list:** 18 slots, locked. Body clothing (8): `Outerwear`, `Top`, `Bottom`, `UnderwearTop`, `UnderwearBottom`, `Bodysuit` (exclusive with the prior four), `Socks`, `Footwear`. Accessories (4): `Head`, `Face`, `Eyes`, `Neck`. Restraints (3, independent): `WristRestraint`, `AnkleRestraint`, `NeckRestraint`. Toys (3, independent): `Nipples`, `Anal`, `Vagina`. Face-cover bypass for recognition is driven by `Face` and `Eyes`. Toys do not contribute to coverage. See §6.5 for the full table.
|
||||
12. **City location list:** locked for launch. Apartment, Convenience Store, Café, Clothing Shops, Gym, Beauty Salon, Adult Shop, Streets / Parks / Alleys, **Beach**, **Train Station**. School exterior and hot springs (onsen) were considered and cut. Vertical slice (§18.1) covers everything except Beach and Train Station — those are full-launch additions. See §10.4.
|
||||
13. **Attribute level-up cost:** XP only. XP is a single shared pool (not per-path); the player chooses which path's attribute pool to spend it on, and may eventually max all three. No money, no separate currency. See §7.10.
|
||||
14. **Food effect vocabulary:** locked. Two instant effects (energy restore, lust decrease) plus four timed buffs (stamina regen +, max stamina +, embarrassment-gain resistance, lust-gain resistance). Stacking: different types parallel; same type additive up to a per-type cap. No pulse buffs, no caffeine trickle. See §6.7.
|
||||
15. **Carriable categories:** locked. Clothing, Bags, Phone, Consumables (food), Toys. No other gadget categories beyond the phone. See §6.2.
|
||||
|
||||
## 21. Open Design Questions
|
||||
|
||||
These remain genuinely unresolved and should be addressed during implementation:
|
||||
|
||||
1. Final slot list for clothing equipment (top, bottom, underwear-top, underwear-bottom, outerwear, footwear, accessory, restraint — confirm and lock).
|
||||
2. NPC theft tuning: grace periods (`T_grace`, `T_grace_bag`), per-tick chance (`P_theft`), and check-tick interval — see §6.3.4.
|
||||
3. Concrete tuning numbers for embarrassment / lust / energy / stamina / pulse rates.
|
||||
4. Specific ending conditions for the 90-day campaign (path level + follower thresholds).
|
||||
5. Manual save in apartment: enabled or auto-save only?
|
||||
6. Photo system implementation: render-to-texture vs. screenshot-with-overlay (§17.6).
|
||||
7. Crowd density: full pawns vs. instanced extras with awareness-radius promotion (§17.6).
|
||||
8. Modular character system specifics — base mesh, layering scheme, attachment sockets.
|
||||
9. Photo-post follower decay curve and per-photo cap.
|
||||
10. Stamina ↔ energy multiplier curve specifics (linear vs. eased between 0% and 80% energy, §7.4).
|
||||
1. NPC theft tuning: grace periods (`T_grace`, `T_grace_bag`), per-tick chance (`P_theft`), and check-tick interval — see §6.3.4.
|
||||
2. Concrete tuning numbers for embarrassment / lust / energy / stamina / pulse rates.
|
||||
3. Specific ending conditions for the 90-day campaign (path level + follower thresholds).
|
||||
4. Manual save in apartment: enabled or auto-save only?
|
||||
5. Photo system implementation: render-to-texture vs. screenshot-with-overlay (§17.6).
|
||||
6. Crowd density: full pawns vs. instanced extras with awareness-radius promotion (§17.6).
|
||||
7. Modular character system specifics — base mesh, layering scheme, attachment sockets.
|
||||
8. Photo-post follower decay curve and per-photo cap.
|
||||
9. Stamina ↔ energy multiplier curve specifics (linear vs. eased between 0% and 80% energy, §7.4).
|
||||
10. Phone battery tuning (§9.8): passive base drain rate, per-app multipliers, total capacity (target ~real-time minutes of livestream), apartment-charger recharge rate, powerbank restore percentage, and powerbank price.
|
||||
11. Livestream tip-request tuning (§9.1.1): request frequency curve vs. viewer count, tip-size distribution (including high-roller frequency), countdown length on the accept popup, and the per-failure viewer-count drop magnitude.
|
||||
12. Face-cover recognition resistance per slot (§7.6, §6.5): per-slot resistance magnitudes for `Face` and `Eyes` and the stacking curve.
|
||||
13. Food tuning (§6.7): instant-effect amounts (energy restore, lust decrease), per-buff durations and magnitudes, per-type stacking caps, and the cooking-minigame scoring → buff-strength curve.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user