Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

accessibility

A topic by meero619 created Apr 10, 2025 Views: 202 Replies: 10
Viewing posts 1 to 4

Hello there and good day.
I discovered your game today on itch, and the description pulled me in, I downloaded it.
Thing is, I'm visually impaired, so do to that, I'm using the self voicing mode built in ren'py, enabled by pressing V.
It reads everything on the screen, as soon as the game starts, the disclaimer doesn't read, but with trial and error, I managed to pass that point, main menu reads just fine, options menu too.
but when starting the game, customizing my MC doesn't read well.
It doesn't read the options at all, but the results are read all lumped in one line.
would there be any interest in looking into this? and thank you.

here's what one of the nice devs who works on an accessible vn, called secret island had to say when it came to making things accessible with self voicing in his game.

The main issue I had to fix were buttons and other stuff that were made using an image with text in it. Self-voicing tries its best to read stuff, so if I use pictures it can't do anything about it. So, anytime I use a picture I can add the 'alt' value to tell self-voicing how exactly I want it to be read.

    imagemap:

        ground "gui/main_menu.png"

        hover "gui/main_menu_hover.png"

        hotspot (57, 33, 274, 129) action Start() alt "Start"

It also helps when you don't want something to be read. For example, my game has a day counter on the top right. But it was being read for each dialogue being show on screen. So, I added alt "" to force it to not be read. 

text "Day [day]" xalign 1.0 yalign 0 color "FFFFFF" outlines [(2, "#000000")] font "fonts/PentagramsSalemica-B978.ttf" alt ""

The same goes for narration. If I want a dialogue to only play during self-voicing I use alt like it is an character. For example, to describe things on the screen. Something that is being show on a picture, but the characters aren't talking about it. Like their clothes, or something happening on the background.

here are some links that hopefully might help in your research about self voicing.

https://ladyicepaw.itch.io/invisible-seams/devlog/415360/tips-on-making-your-vn-...

https://orangecarnation.neocities.org/guides/renpy_tts

Developer(+1)

Hi! Thank you for your post.  

I just wanted to respond to let you know this has been seen.  

First off, I do want to thank you for pointing this out. The advisory screen was something I meant to add alt text to and honestly just forgot repeatedly (unfortunately with ADHD that's what happens if I don't write things down…and sometimes even if I do write them down if I forget I wrote it down).

As a solo dev if I don't remember…no one does.  So having players point it out is very helpful.

As for the rest of it, I didn't realise how badly self-voicing interacted with the customisation screen after its redesign a while back.

This is being worked on at the moment but it will take a little time for the update to be ready. 

Adding alt text or a self-voice compatible version of the advisory screen or quick menu (which I realised I also did not add alt text to) is fairly easy.

But unfortunately with things like the customisation screen which has to retrieve variables for elements like the skin tone slider, hair colours, bodies or hair styles, it's not as simple as adding alt text to a single hot spot.  

I have had a coding friend help me with some of the more complicated things in there (Feniks is always a huge life saver - I love them), but some of the particulars are still being worked out when it comes to the limitations with the self voicing feature and how it engages with dynamic content like customisation variables. The skin slider in particular, I'm still messing with to see if I can't improve it since the delay between hovering over something and the self voicing reading it is making a little tricky if you don't slide it very slowly.

I also realised the affinity indicators and status bars are purely visual as well at the moment. So I'm trying to figure out how to add self-voicing compatibility based on the way those screens are set up that way you can use the affinity metres like everyone else to tell how the choices are affecting the LI relationships.

Hopefully this will be ready for me to push out a patch in a day or two.

 Thanks for reaching out!

~Esh

thank you so much for your response and effort, take all the time you need, no worries there, I and many others don't mind waiting if it means we get to play a wonderful game such as yours.
keep up the excellent work. :)

Developer(+1)

No problem!

There are certain limitations to the self-voicing feature that don't play 100% nice with the game GUI but even with the current set up, it's much better than it was.

Right now there's just one annoying thing with the affinity indicators I'm trying to figure out if there's a potential fix for.

~Esh

(1 edit)

I'm just gonna be glad to play it, any imprefections can be delt with I'm sure. :)

By the way, don't no if you know about arcade spirits and the games from the same team, they are really good examples when it comes to accessibility.
don't know if checking them out might help with some issues you're facing with your game.
but here's the link, https://store.steampowered.com/app/910630/Arcade_Spirits/

Developer

Hello! Thanks for the suggestion! I own Arcade Spirits actually! 馃挅

Unfortunately even if two games are both made in Ren'py, their internal code and UI systems are probably completely different. Ren'py is a super flexible engine and there are usually multiple ways to accomplish the same thing. Even if I see where another game added self voicing, that doesn't tell me how they did it.

And even if I know how they did it, that doesn't mean it will applicable for the way my code is set up.

Here's an example to help you understand. My previous game Gilded Shadows also had some customisation and here is an example of the code I used for choosing hair colour - it's similar to the code you gave in the example in your first post:

imagemap:
        ground Null()
        idle "gui/customisation/hair_button_idle.png"
        hover "gui/customisation/hair_button_hover.png"
        selected_idle "gui/customisation/hair_button_selected.png"
        selected_hover "gui/customisation/hair_button_hover.png"
        alpha False
        hotspot (446, 133, 193, 48) action SetVariable('haircolor', 'hair1') hover_sound "gui/sfx/aj_button_sound.mp3" activate_sound "gui/sfx/click_sound.ogg" alt _("Silver Hair")

For gilded Shadows, there were ten hotspots for the hair - one for every colour, each with its own alt text statement.

But here is how the code to do the same thing works in When Stars Collide:

define HAIR_COLOR_LIST = [ _("Silver"), _("Black")]
use custom_option(_("Hair Color"), CyclePrev("haircolor", HAIR_COLOR, altlist=HAIR_COLOR_LIST),
                CycleNext("haircolor", HAIR_COLOR, altlist=HAIR_COLOR_LIST))

The way the screens are set up behind the scenes is completely different because the customisation works a bit differently.  And so the way I have to set up the alt text is also different. The Gilded Shadows solution would not work at all in When Stars Collide.

I guess the point is that the solutions for these things are sometimes very situational and context dependent. Two games made in the same engine - even by the same person - may not be remotely the same 'under the hood' so to speak. 

I'm ultimately trying to make boxed systems like Windows narrator and Renpy  play nice and be friends with the code and UI in When Stars Collide.

Sometimes they don't want to be friends and I have to find ways to force them to be as close to friends as possible anyway. 馃ぃ  In some cases is easy and in other cases it doesn't work as well as I'd like it to but I'm limited in my ability to fix it.

I will do my best though! 馃挭

~Esh

I can certainly understand, thank you for all the effort you're making, I can't wait to see what you come up with, I'll probably go download your previous game to try it out :)

Developer

I will try to get WSC in better shape for you soon! 馃挭

thank you my friend, is this the only way to reach you? or is there a discord server? :)

Developer

There is a discord server! You can find the link below:

https://discord.gg/w42hWwSw9D