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/
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
There is a discord server! You can find the link below:
https://discord.gg/w42hWwSw9D