Narrat features, bugfixes and random requests - April 2025

I make those threads every now and then as a way to get an idea of what people want at the moment for what they’re making. This isn’t a guarantee that anything will be implemented as it depends on when I get the time to work on Narrat, but as I am doing a bit of Narrat work lately, feel free to reply to this threads with anything you’re interested in.

Better if you can be specific about what you want, why you need it (use case examples), and how you’d like it to work (pseudo-code, script bits, config file examples or whatever)

3 Likes
  • CSS classes for
    • locked/unlocked achievements (.locked and .unlocked)
      • I’ve manually set mine up as <p class="obtained-status unlocked"> so i can target an achievement as .achievement-display:has(.unlocked) but .achievement-display.unlocked or .achievement-display.locked would be awesome too.
    • individual inventory item descriptions containers to make styling easier
  • Inventory description formatting via markdown or limited html
    • currently using document.querySelector(".item-description-container .item-right p").innerHTML = document.querySelector(".item-description-container .item-right p").innerText; to achieve that
  • allow \ and / in strings (currently using &#92; in text when using the narrate function, which gets bizarre when its being displayed character by character (shows each character then changes it to a \ ).
2 Likes

Even though I know it’s a long shot, there are six things I’d like to suggest.

The first is a language selector on the interface, before opening the game’s main menu, in case a language selection option is enabled in the common.yaml. Obviously, English should be the default language and the selector should be disabled by default, but if I want to make something in Spanish, German, or French, for example, there should be some command that allows this transition. Based on the assigned language value, the main menu would have its text replaced by what was defined, without changing the functions, just changing the text to be displayed.

What I’m doing in my game is setting a variable (which I called babel) at the very beginning, where the player chooses one of two languages (since I’m only working with two languages for now, but ideally this value should be numeric to represent any language). From that, I have a folder inside scripts (also called babel) where the files are named using the initials of the language. In that folder, the items and skills adapted to the chosen language are unlocked.

Once that folder is accessed, everything follows a sequential path inside it (like Act 1, Act 2, Act 3, etc.) like on default english. To make the skills and items adapted to each language, I had to create each one twice, once in each language, adding the language initials as a variable prefix. With skills, it’s more complicated because I need to make them level 0 and hidden by default — otherwise, I can’t control how to reveal only the skills for the selected language. One of my ideas was to keep a single skill with a text attribute that changes depending on the selected language, but I couldn’t get that to work — I only managed it with inventory items. So, by default, both items and skills have variants for each selected language, and right now it’s a real rollercoaster to make everything bilingual. I believe that having a selector and some kind of switch (SP/EN/GER/FRA, etc.) activated in the common.yaml to define the default startup language would make the process much smoother. I’m not sure how to make all of this work ideally, but I do believe it’s totally possible to create a bilingual setup with the current system — it would just be great to have an standardized way to handle it.

The second suggestion is a way to show the value rolled by the player inside the roll message. For me, a command like DiceCheck, enabled or disabled in the skillchecks.yaml, would be enough to define whether the player sees the result or not.

The third one would be to replace a button in a screen with an image natively, which would make it easier to place quest markers on the map. I know there’s a way to do this already, but having a native method just below the action, where you could define whether a css bar or an image will appear, would make the process smoother.

The fourth and fifth suggestions are in the same category: a native option to hide the XP bar for skills in systems where there is no XP gain, and also the ability to hide the numeric value of items. Even if the item is not consumable, it still shows a number indicating quantity. I think that numeric value should only appear on items defined as consumable in the items.yaml.

The sixth suggestion would be for the achievements folder to be present natively in the game demo template, with a simple toggle to enable or disable achievements in the common.yaml. I know it’s a minor thing, but it’s something I noticed that creates some instinctive friction, and I think it could be a native feature in the template.

Sorry for the long message, but I wanted to take the opportunity to point out things I think could really help. Thank you so much for making the amazing Narrat available!

1 Like

Some of that stuff should be easy, for some of the others I might need to think about it. I’ll probably post an update soon about what I can do, but they generally make sense :slight_smile:

2 Likes