1. AI Roguelite
  2. News

AI Roguelite News

Panoramic Mode, Time Tracking, and more

[h2]Time tracking[/h2]

[h3]Calendar[/h3]

Calendar info and start date will be generated at the start of each new scenario. They can be configured in the new game calendar tab. The standard Gregorian calendar will be used in most cases, but some fantasy scenarios may bias towards a custom calendar. Calendars are one per universe.

The datetime will be displayed at the top. Left click on the datetime to change the display format. Change whether it’s am/pm or 24-hour in game options.

[h3]Events and time tracking[/h3]

The journal now has a new tab called “Events” where you can add or keep track of existing events. Events have a start time, duration, recurrence, recommended location, and optional “missed effect” which injects text into the prompt if you missed the event. The event checker can also add, edit, delete events, or mark events as attended.

The event checker can also increment time. Some game elements previously using turns will now use time logic, such as status effects.

The default minimum time per turn is 10 minutes, which can be configured. Time can also go backwards if the story demands it, though this will only be reflected in the datetime.

[h3]Place changes and entity reshuffling[/h3]

If you come back to a place after a long time, the place description may be regenerated to match the current time (e.g. if it was daytime before and now it’s nighttime). Entities may also be reshuffled in this manner, if it makes sense for some entities to have left or entered since then.

[h2]Algorithmic Narrative Style[/h2]

Overhauled the story generator preamble. There are now multiple preambles to pick from, available under the Narrative Style dropdown. By default, “Adaptive (algorithmic)” will be used.

Non-algorithmic narrative styles will use a static unchanging preamble.

[h3]Algorithmic intensity[/h3]

If an algorithmic narrative style is selected, the game will use the specified json file to determine narrative intensity based on historical story turn intensity (determined by an event check). "Adaptive (algorithmic)" attempts to balance peaceful with stressful sections in the story. It forces peaceful turns if previous turns were too chaotic, and also encourages tension if previous turns were too peaceful. This logic can be modded.

[h2]Panoramic Mode[/h2]
a.k.a. yet another crazy feature which may or may not actually pan out



Background: The fact that AI Roguelite is currently built loosely like a text-based tabletop RPG is mostly coincidental, because this format happened to be the coolest kind of game AI could run in 2022. However, “best possible genre of AI game” is a constantly moving target because technology improves rapidly. Models aren’t only good at text now, but can use images as input and output, and modern image models even appear to simulate reasoning and rudimentary spatial understanding when creating images. The next logical step in my opinion seems to be making the game multi-modal as well, to leverage this new technology.

Panoramic mode is a new selectable option when visiting a new top-level place, or sublocation of an already-panoramic top-level place. When selecting this mode, a full photosphere image will be drawn around you. On each turn, if the event checker says you stayed in the same location, the current panoramic image will be *updated* to reflect what happened during that turn (for example, something might’ve been set on fire, or an NPC or enemy may have died), while attempting to maintain scene coherence. You can think of this as fake 3D (3D only from a single view point). Potentially, this "fake" 3D effect could become more realistic in the future if AI models improve their ability to redraw the same scene at any arbitrary viewpoint.

By default, no static objects, NPCs, or enemies will be force-included during initial place generation. Instead, the panoramic generator can decide what to put inside, and the entities can be added to the current place as the story progresses. This solves an issue I encountered where specifying too many entities made the panoramic generations awkward.

Disclaimer: Panoramic mode is super expensive and experimental. It’s currently only available for Sapphire subscribers, takes ~1 minute per generation, and has a rate limit of 15 per day. The future of this feature depends on how much people like it. If Panoramic mode becomes popular, I will try to find a way to relax this rate limit and/or make it available to everyone. Initially, I had a “low-cost” version I wanted to make available to everyone, but it was so bad that I scrapped the idea.

[h3]Image-based actions[/h3]

While in panoramic mode, left-drag a bounding box in the image to specify that part of the image when attempting an action. For example, draw a box around a shovel and say “I take this shovel”. This will be fed to the plausibility and roll check evaluator, as well as the story generator, thus making the experience truly multi-modal.

[h2]Misc[/h2]
  • Added option to add context during click-to-move.
  • Fixed dynamic quest starting bug where non-boolean condition wouldn’t be recognized
  • Revised init entities prompt to discourage generating NPCs/enemies if not appropriate to the area
  • Maybe/hopefully fixed issue where some TTS segments would be randomly dropped before being read aloud
  • Added back option to target current location when using item/ability
  • Added player class to plausibility and roll check prompts
  • Slightly improved location change and mentioned location accuracy
  • Slightly improved logic for required item/ability, and made it compatible with both image-based and non-image-based actions.
  • Slightly improved travel extender prompt
  • Separated General vs Gameplay options into different categories
  • Removed maximum depth requirement for exploring new sublocations via the blue question mark
  • Fixed error when running console command “task obs” for dynamic quests
  • Fixed world presets not saving the disabled state of factions and world status bars
  • Fixed cosmetic issue with grid mode buttons being too low
  • Alleviated issue for free tier users exceeding token limit by increasing token limit for some prompts. Please let me know if you continue to experience issues.
  • Added customization for blue brain icon position/size in ui/blue-brain.txt
  • Added option to disable autoscroll
  • Fixed typo: Updated CUSTOM_MODELS_TOKEN_LIMIT to CUSTOM_MODELS_CHAR_LIMIT in config file. You may need to update this if you were using it.
  • Fixed bug where editing a completed story objective in journal produces task completion turn



Dynamic quests

[h2]Dynamic quests[/h2]

Added an all-new quest type called Dynamic quests, intended to solve the common user complaint that the quest would railroad the story. The old version is now called “Story arc” quests. tl;dr: In story arc quests, the quest drives the story. In dynamic quests, the story drives the quest.

A dynamic quest starts with a single main objective and possible subtasks. At any time, the AI may decide to add subtask(s) to the tree of tasks, replace one task’s dependencies with an alternate approach, update task completion state, or mark a task as obsolete.

Each task also has a preparation complexity. If a task has a preparation complexity of higher than 1, it will have a recommended number of subtasks (currently set as 1 for preparation complexity of 2, and 2 for preparation complexity of 3). If the number of completed subtasks is less than the recommended amount, it’s marked as “blocked” for the AI until that number of subtasks are completed. If the preparation complexity recommends subtask completion and there are no subtasks yet, the AI is told to generate leads for that task if appropriate. Completing a subtask also gains you XP and helps spur along the quest with a story turn pointing you in the next direction. Note that no task is ever fully blocked, so if your task was to assassinate someone and it’s marked as blocked, if you happen to kill them instantly it should still trigger the completion of the main task.

After each objective is completed, the AI will decide how to progress the quest, whether it’s to continue with plot development, introduce a climax, or end the quest. If one of the first two is selected, you will be able to select the next objective. The quest, which can be considered a chain of objectives, ends only when the AI decides it ends or the player clicks the “Force quest completion” option.

In the quest view, if your quest is dynamic, you may toggle “Enable editing” to show/hide buttons for adding, editing, or deleting individual tasks.

[h2]Encounter buttons[/h2]
Encounters now get 3-5 AI-generated action buttons, to make it feel more interactive and similar to the old combat UI. Clicking an action button spawns a list of 3 possible actions revolving around that action’s theme, which prevents the buttons from feeling stale.

[h2]More UI options[/h2]
Added option to use the old location image UI (even with story illustrations enabled)
Added option to use the old sublocation buttons UI

[h2]Fixed UI bug[/h2]
Fixed bug where starting borders weren’t set to their intended defaults at first launch

UI Changes

[h2]UI changes[/h2]
  • Increased focus on story image: The top-right area now displays the most recent story turn image. In my opinion, this makes the game feel more immersive. If you prefer the old way of displaying the location image here, disable story turn illustrations under Options. Please see end of post for more details about reverting to classic UI.
  • Encounters UI: Detailed encounter overlay will be displayed in the top right image area. It can be collapsed to revert to the old encounters UI.
  • Auto-hide: In the new UI, the location image is displayed where the exploration background once was. To make it more easily viewable, you can also click the lower-left button to enable auto-hiding entities.
  • Draggable resize: Some UI elements such as the size of the entities view can now be resized by dragging their borders. If using official image gen services, the approximate desired aspect ratio will be auto-detected via the UI window sizes. If using custom image gen, please specify your desired resolutions under image gen settings.
  • Config: For further configuration, you may modify values in ui/positions-v2.txt.
  • Improved free/sapphire image generation for non-1:1 aspect ratios to improve the story image quality when set at the default ratio

[h2]Misc[/h2]
  • Improved Sapphire text generation speed
  • Added adjustable tooltip delay, defaulting to about 0.25 seconds
  • Added adjustable tooltip font size

[h2]Known issues[/h2]
  • The option to adjust tooltip font size is incorrectly labeled the same as the regular font size, and comes after it.
  • A few people have expressed a preference for the old locations UI (putting sublocations in a separate box in the center of the page as opposed to with the other entities). I am not yet sure whether I will add compatibility with both versions. Please feel free to add your opinion as to whether you prefer the old or new UI, as well as possible alternative designs which come to mind.

[h2]Changes in Alpha[/h2]

Dynamics quests are now available, only in the Alpha build channel. Please feel free to try it out and report any issues. Please note that in general the Alpha build has a higher chance of bugs and/or messing up your save file.

Update: In addition to "disable story turn illustrations under Options", you can: Opt into the "Alpha" Build and enable classic location image UI and alternate sublocation buttons UI under Options, OR, use "Older build" to continue playing the game on the build before this update hit. Please make a backup of your saves before switching build channels.

Encounters, bug fixes, more subscription options

[h2]Encounters[/h2]

Encounters are a complete replacement for the combat system, which hadn’t changed much since March 2022. They also solve a long-standing issue where combat was assumed to be lethal and you’d feel forced to kill your Judo sparring partners.

Encounters are more flexible than combat and can be about anything imaginable, including friendly duels/games or solo challenges.

The AI will generate encounter parties, 3 progress bars, and 3 end states. Progress bars can go up or down during the encounter and trigger an end state if the specified conditions are met. The idea behind AI-generated progress bars and end states is that each encounter can be meaningfully unique and allow the player multiple avenues of approach. Progress bars and conditions can be edited by right-clicking the encounter UI at the top and clicking on Edit Details.

The encounter will end if either an end state is reached or the story describes it ending; however the story generator is biased towards keeping it active.

Encounters trade turns with the player, similar to the old combat system. There will only be 1 single encounter turn instead of 1 per participating entity. This is so the player doesn’t have to wait too many turns, and also to prevent the style of the story from deviating too much.

[h2]More subscription options[/h2]
  • Added the option to subscribe to Sapphire or Silver directly via Steam. It is slightly more expensive than via the AI Roguelite website, due to the Steam fee.
  • Added a “Sign in with Steam” option for the AI Roguelite subscription website. This will be the preferred sign-in method going forward because it doesn’t require copy/pasting a customer key. However, if you already have a subscription on the old system, please feel free to continue using it.
  • Added an indicator in the Options view which tells you your subscription status.

Please only choose one of the subscription methods provided, to avoid accidentally creating a duplicate subscription.

[h2]Quick actions[/h2]

Added a quick actions button to bring up 3 actions to choose from. This replaces “quick time events”.

Added a setting in options to specify the probability that one of the three actions will be humorous.

[h2]Customizable roll check mechanic[/h2]

Control the amount of randomness in your roll checks by choosing from 1d100, 2d50, 4d25, 25d4, 50d2, or 50. The more dice used, the less randomness there is. The last option (50) means no randomness at all and always sets the base roll at 50 before modifiers. The DnD-style notation is for people to understand at a glance what’s happening (1d100 stands for 1 100-sided die), but note that these are approximations; each “die” is actually a random number between 0 and the specified number, so 50d2 means 50 rng’s between 0 and 2. This is conceptually easier to understand for rolling between 0 to 100 than translating from real dice.

[h2]Location change story turn[/h2]

Added option to specify whether a location change within the same top-level location will trigger a real story turn. In such cases, it will generate a “short” story turn. Traveling between different top-level locations remains the same as before (triggering a regular-length story turn).

[h2]The Anti-Unsolicited-Horror-Story update[/h2]

Added a small but potentially impactful change to the preamble. Instead of saying to be unpredictable, it now says to avoid introducing anachronistic elements. In my testing, it reduced the chances of a benign story becoming a horror story. If the issue still happens to you, report the issue to me and/or use a mod to change it further.

[h2]Misc[/h2]
  • Added back “inappropriate” decoy choice for plausibility, because it wasn’t following the instruction that immoral choices aren’t implausible. Please note it is very important to keep this instruction if you want immoral choices to be rated as plausible. This is a decoy choice, meaning the game ignores “inappropriate” and treats it as a regular roll check.
  • Added logic to accept currency as a required item
  • Revised sentiment prompt to reduce chance of NPCs randomly disliking you
  • Fixed bugs in lorebook entry triggering and duplicate context
  • Switched to a better model for determining hierarchy during location change
  • Improved lorebook entry ordering logic
  • New characters now appear at the top instead of bottom, increasing the chance they’re used in story context
  • Fixed free tier grid issue where sprite generations were more restrictive than intended
  • Added cheat codes `hostile` and `charm`
  • Added allowing undo/retry during encounter turn confirmation
  • Added option to favorite entities in other locations
  • Added logic to prevent roll check details tooltip from disappearing while game log was scrolling, if mouse position hadn’t since moved
  • “Move here” menu option added to favorited entities
  • Added option to manually mark location as detached
  • Added current location description to full prompt string
  • Fixed new universe UI for delete button for locations
  • Location change plausibility now includes heading/distance when applicable
  • Added some help buttons in the new game view
  • Fixed bug where entity state change didn’t correctly change name and description
  • Added option to edit location level
  • Small change to explore more locations prompt (blue question mark) to make the generated sublocations more reasonable

2D Grid Mode

[h2]2D grid mode[/h2]

When visiting a new place, you now have the option of initializing it as a 2D grid.

[h3]Sprites[/h3]
All entities in a grid will have associated sprites. Please note background removal for sprites currently only works on default image gen options (Free and Sapphire). Hold alt to see the nameplates of all entities.

[h3]Pathing[/h3]
The grid may have barriers such as walls, and openings representing doorways. Paths will be calculated to your destination, and relevant info will be passed to the story generator. Interact with a target entity normally, or hold shift to try to move to a specific point. Movement is never guaranteed, and depends on what the story says happened.

When an interaction involves a path, the AI may decide that an entity has a chance of interrupting you.

[h3]Sublocations[/h3]
Sublocations within a grid should be accessible via a forward “portkey” (object which moves you to it), e.g. Stairs leading to 2nd floor. Location change isn’t guaranteed and depends on whether you were successful according to the story. To bypass this system, use the console command "freemove 1" and enter the desired location via the map.

Vehicles and location changes are meant to work seamlessly when switching between grid mode and classic (hierarchical) mode. Please report any bugs using the file feedback button.

[h3]Requirements[/h3]
  • The new place must be a top-level place that has not been initialized, or is a sublocation within a top-level place that’s already 2D.
  • Limited to 3 per day per user (with Sapphire users using a more expensive model) because it’s much more expensive than a regular turn.
  • Official text gen services use models that have been verified to work well enough for grid generation. If you're using a custom endpoint, ensure the model is smart enough to generate a grid. Bug reports with failed grid generations using unofficial models will NOT be looked at (except for serious issues such as broken saves).

[h3]Caveats[/h3]
Grid mode is generally available in the Default build channel, but still considered experimental. My original vision has not yet come to fruition because proper event checks for accurate placement would require a good model which is currently too expensive to run for many turns. It is my hope that as LLM costs come down, it will eventually be possible to run the “expensive” turns more frequently.

[h2]Improved image generation settings[/h2]

Added customizability of entity prefixes/suffixes to all image generation modes. In particular, the prompt formatting is now in a "format" rather than "prefix" structure, so the user has more control over the image prompt.

Added background removal for item images, which is currently only available in Sapphire due to costs.

[h2]Misc[/h2]

Fixed Wombo image generation. Note: There’s a known issue where any name/description with quotes will still fail. This fix will be pushed in the near future.