Characters & Slots
The Characters screen
The BONKERS front end is an overlay that renders at boot, above the HUD, with 4 screens behind the title: Login, Characters, Settings, Credits. The title screen carries a single Characters button — there is no "Continue" and no "New Character". Both of those picked a character as a side effect; with 3 slots, choosing one is the explicit act, so play, create and delete all live on the Characters screen.
Play, Create and Delete sit in one row beneath the slot list and act on the selected slot. The panel itself performs no file work: slot limits, name rules, deletion eligibility and which file a character owns all belong to the save layer.
If the character list cannot be read, the screen shows an error and offers nothing — not even creation. An unreadable list and a brand-new account look identical from the outside, so guessing "no characters" could write a new character over 3 that were fine.
Slots
An account holds up to 3 characters, listed oldest first. Each slot shows the character's name, its level, and when it was last played; an unplayed slot reads New character / Not yet played rather than showing level 0 as though it were progress.
A character's identity is an internal id, not its name — nothing is keyed off the name, and a name is never reused as a filename. Deleted characters are archived: they stay in the account's list file but are hidden from the list and stop occupying a slot.
Creating a character
| Rule | What the game enforces |
|---|---|
| Length | 2–20 characters, trimmed |
| Characters allowed | Letters, spaces, apostrophes and hyphens only. |
| Duplicates | Rejected against your other characters, ignoring capitalisation |
| Renaming | Not offered — the name is also the delete confirmation |
Creating a character does not enter the world. It fills the slot and returns you to the list. That separation is deliberate and it is what makes the delete lock humane: a character you made, disliked the name of and never played can be deleted straight away (see below).
The first time you actually enter a brand-new character it starts from the same baseline a
first-ever character gets, and is pointed at the opening quest — q_cap_01_something is
auto-accepted so the tracker reads it immediately, with a one-time system message nudging you toward
Captain Hale. See Quests.
Playing and switching
Pressing Play first flushes the character you were playing to its own file, then re-points the save layer at the new one. Switching slots cannot lose the character you just left.
Loading a character replaces the live one rather than layering onto it: Stats, Skills, Inventory, SpellBook, QuestLog, Bank, StatusEffects are all cleared to a brand-new baseline before the incoming save is applied, and the universe returns to the origin. This exists because loading replaces plain values but adds to collections — without the reset, a level-1 character could end up holding the previous character's bag, gear and completed quests, and the next autosave would write that hybrid to disk.
Saving is suppressed for the whole switch. There is a moment where the player holds neither character, and an autosave landing in it would write an empty character over a real one.
Otherwise the game autosaves every 30 seconds, plus explicit checkpoints at moments that must not be lost. If a save file cannot be read — corrupt, or written by a newer build — saving is paused for the session instead of overwriting it.
Deleting and the 24-hour lock
Deletion asks you to type the character's name exactly, and the check is
case-sensitive: typing mick will not delete Mick. A confirmation you can
pass without reading what you typed is not a confirmation.
| Character | When it can be deleted |
|---|---|
| Created, never entered the world | Immediately — there is no progress to lose |
| Has been played | 24 real hours after its FIRST play |
| The one you are playing now | Never — leave it first |
The lock counts from the moment a character first entered the world, not from when the slot was made and not from the last time you played. It is stamped once and never moves, so playing a character again does not restart its lock. While a character is locked the screen states the date and time it becomes deletable, in your local time.
Deletion is archive-first and never destructive. The character's save is copied to a timestamped sibling file and that copy is verified byte-for-byte before anything else happens. Only then is the character retired from the list and its slot freed. If the archive cannot be written or does not verify, the deletion aborts and nothing is removed. "Deleted" here means removed from your character list — the save itself is still on disk as an archive.
Source & verification
Source status: generated from the current BONKERS repository on November 8, 2026. Every figure on this page was read out of the files below at generation time — nothing is estimated, remembered or predicted.
Verification: Implemented and playtested. The rules stated above are asserted against source at generation time. Implementation is proven by the repository; the playtested status is not — it is the developer's confirmation that these slots have been created, played, switched and deleted in a running build, which no file can show. Timings are real-world UTC clock time recorded in the character list; no claim is made about the screen's look or feel.
Code/SaveSystem/CharacterRoster.cs — slots, names, the delete lock, archivingCode/SaveSystem/GameSession.cs — entering a character and the one canonical resetCode/SaveSystem/SaveManager.cs — autosave, load protection, archive + resetCode/SaveSystem/SaveIdentity.cs, SaveStore.cs — file names and the storage seamCode/UI/FrontEnd/CharacterSelect.razor, TitleScreen.razor, FrontEndState.cs — the screenAssets/scenes/bonkers.scene — the front-end panels are mounted and enabled, and the shipped autosave interval
Regenerate with
python tools/make_wiki_articles.py after the code changes, then
python build.py.