Skip to content

Adventure profiles and Dave character pass

Account and Adventure are different identities

Yumina remains the owner, authentication identity, analytics identity, avatar source and payer. The first native PvZ slot is seeded with its name. The web Player & progress panel now exposes New Adventure, Rename, Play this Adventure and Delete over the existing native ProfileMgr; a real HTML input supports phone keyboards and Chinese names. Names are not new accounts. Renaming never sends a relay name change. Versus membership and account model preferences are untouched.

Up to eight active Adventure slots have their own native user files, unlocks, currency and checkpoints. The active numeric profile ID is saved in userdata/yumina-campaign.json, so the selection follows cloud restores rather than relying on the device registry. Each slot maps to an independent campaign UUID and openingSeen flag. Only the selected existing slot inherits the former shared notebook; new slots and other imported slots get new identities. A reused native ID is explicitly assigned a fresh UUID. The native format itself has not changed.

Edits require the main menu, no board or relay, and the current account matching the save owner. Account switching refreshes the management panel and disables edits for the old account. All native files remain under the immutable account's IndexedDB mount. The existing cloud owner check and revision CAS apply to the entire collection, not individual names. Concurrent tabs do not merge snapshots; conflicts preserve a backup and stop cloud writes. Cloud storage remains bounded at 2 MiB encoded / 1.5 MiB decoded to accommodate multiple checkpoints, with 128 files maximum. Old browser tabs need refreshing to read larger collections.

Dave calls capture the selected campaign ID. Delayed notebook/AI responses cannot attach to another Adventure. The optional adventureName is display context only; the authenticated user continues to determine usage/ledger ownership. Guests use local profiles; account adoption remains explicit. Deleting a slot deletes native progress; old server notebooks remain inaccessible through that slot, subject to the existing bounded memory-store retention. The existing 16-notebook creation guard is unchanged in this pass; repeated deletion and creation beyond that needs a retention policy, not silent deletion of live notebooks.

Character reference study

Read published production world definitions in a READ ONLY transaction, without player chats or account data:

  • Sakura Season: 84,430 messages / 109 favorites at inspection. Distinct private motives, independent emotional rhythms, relationship stages, and small concrete examples that demonstrate behavior rather than stating adjectives.
  • Poison in the Bottle · Battle Royale: 34,725 messages / 50 favorites. Contradictions between stated and actual motives, character-specific decisions, and examples that connect personality to consequences. Its setting and adult material are not imported.
  • Stray Diary: 14,666 messages / 27 favorites; Chinese 流浪日记: 16,468 / 20. The English card repeats the generic system text across entries. The Chinese original contains more useful character-specific writing: event-driven reactions, colloquial speech, flawed helpfulness and understated warmth amid difficulty. Use those techniques, not the duplicated English entries as a quality template.

These engagement counts establish relevance, not proof that an individual writing technique caused popularity. No reference card instructions or prose were copied into Dave's runtime.

The intended emotional loop

Defend the lawn → notice something odd → engage or ignore → Dave reacts from his own motives → a remembered joke, bounded offer or social consequence → return to defending.

Dave is competent with plants and unreliable with everyday logic. He wants to help, protect his pride, run errands and occasionally sell something dubious. He can be briefly selfish, grudging, moved or ridiculous. Affection changes delivery and familiarity; it does not buy guaranteed gifts. Disagreement is allowed. A deliberate bonk or repeated pestering can cause departure without waiting for an irritation threshold.

The new lorebook has a shared character foundation plus up to five relevant scenario entries per call. Examples are selected in English, Simplified Chinese or Spanish. Subjects include ordinary neighbor banter, bonks/refusals, tin complaints, gifts, actual lawn observations, growing familiarity, unsolicited remarks and returning from a break. It teaches callbacks and absurd premises without writing a fixed sequence. Prices, outcomes, plant names and urgent advice remain accurate; casual speech can contain fragments, invented words and deliberate small errors. Em/en dashes and explaining the joke are discouraged.

The former leave behavior only set an away flag. The browser now gives the parting line a bounded reading window, closes the dialogue automatically and resumes the native lawn/audio. During his absence actions are disabled, opening Dave repeats the cached parting line without another model call, and no resources are removed. Paid calls and silent/background attempts continue through the existing Yumina accounting path. The free first introduction and click-to-open behavior remain free.

Examples in the lorebook are writing demonstrations, not promises of exact generated dialogue. No claim is made that virality or awards can be guaranteed. No new forced interruptions or extra model calls were added.

Delivered and checked

  • Platform commit c8d22e59a; Railway deployment a079755e-641f-411a-b233-dd7ba1363aa3 succeeded.
  • Game commit 9de1cf7; native release b0dbe9f9f9 published to S3, six files with HTML last. Public HTML is byte-identical to the built release; /health returns 200; regional admission accepts this release.
  • Full platform build and typecheck passed. 53 browser-shell tests and 32 focused server story/billing/save tests passed.
  • Actual WASM at 844×390 with isolated account/cloud/provider fixtures: automatic first slot, Chinese-name creation, rename preserving campaign UUID, switching, restoring selected slot from cloud, account-switch edit rejection, automatic Dave exit, and refusing immediate reopening while away. Zero page errors; one simulated provider reply. No real player's credit or saved progress was used for QA.
  • A real-game check found that SyncProfile(true) entered the native loading/render loop from a DOM callback. The web manager now calls SyncProfile(false), avoiding nested Asyncify rendering; game resources remain loaded on demand. The final farewell layout hides the composer and model frame rather than leaving a disabled panel behind.
  • Screenshots and the browser fixture are local ignored artifacts in output/dave-ui-rebuild. The writing was reviewed against the published reference definitions; the new prompt has not been graded using a paid production Sonnet conversation in another user's account.