Topic: Exploring Unreal World as a Totally Blind Player  (Read 403 times)


Elwin

« on: February 16, 2026, 02:15:02 PM »
Hi All,

I'm a totally blind fan of Unreal World, who has recently begun investigating ways to play it with my screen reader. The game itself doesn't have accessibility support of its own, but I've discovered that I can use a mild sort of reverse engineering to add speech to certain aspects of the game, such as when new messages are drawn. My current workflow is mildly janky, and I am kind of dissatisfied with it, but it's far better than simply using OCR on the game screen.

That being said, I wonder if anyone has done work making alternate interfaces for the game, or digging into the data formats at all? I know this is kind of a technical topic for a general  board, but I thought I would try to post somewhere just in case. If I need to go elsewhere please feel free to move it :)

Right now the biggest issue I have is figuring out what surrounds me on the map. I've tried to use the look command frequently but often as not just get the admonition to pick a direction I can see, which is rather ironic in my particular situation :)

I am currently using the legacy free version on Windows, but fully intend to buy the Steam version as soon as funds permit. Essentially, if you can imagine trying to play the game without being able to reliably look at the map, that's about where I am at the moment. I can read menus more or less fine, and use keyboard commands, but the actual business of survival is tricky without being able to orienteer.

Any thoughts on this situation would be very much appreciated :)

Plotinus

« Reply #1 on: February 17, 2026, 09:43:47 PM »
Hi! I'm a sighted player who has been playing continuously since 2007. For in-game messages, I'd recommend having your screen reader listen to the file msglog.txt in your character's folder, in case it's better than what you're got going, though it might be a bit noisy because it starts with a color code, in parentheses, then has a time code between two colons, then in between [] there is a symbol for the type of message, and then between {} there is the world-map location of your character, and then finally there's a | and the message that's displayed on the screen. I don't use a screen-reader, but if I did I'd probably be annoyed by all the part before the |, but you could probably make a script that listens to that file and selects the part of the  message that you need. Here's a five line example:

Code: [Select]
(143270):28id:[#]{06C50374}      | You see 2 rocks here.
(143270):28id:[#]{06C50374}      | You see a stone here.
(143270):28id:[#]{06C60374}      | You see 7 branches here.
(A80000):28id:[!]{06C60374}      | There's a fence blocking your way!
(147870):28id:[?]{06C60374}      | Climb it?

You can leave a short note for yourself in msglog.txt by pressing v and then hitting enter, and it will record when and where you were when you wrote the note. {06C60374} means that my character is 06C6 east and 0374 south in hexadecimal on the wilderness map (the zoomed out map that you get to by hitting enter). If you make enough of these notes to self and have an easy way of searching through msglog.txt for the string "--" you can find where you were when you wrote something and use the very last line of msglog.txt to know where you are right now. This can help with knowing where you are relative to the house you built or the village where you like to go trading or the river rapids where you like to go fishing. Each zoomed in map tile is 64 steps wide and tall.


Experimenting with look, I think one thing that makes it harder is that if you jiggle the mouse at all, or if your hand touches the trackpad, then it moves the cursor to some unknown place, and then you won't know how many steps away from yourself the cursor is, and  if you hit escape and then F3 again, it remembers where the cursor was before -- it doesn't recenter it on your character, so you don't have an easy way to get back to yourself. If you're zoomed in all the way (hit ctrl + a bunch of times to make sure), the screen is 25 tiles wide and 23 tiles tall, and your character is right in the middle: the 13th tile from the left and the 12th tile from the bottom.  So if you get lost and you're not sure where the cursor is, hit the 1 key at least 25 times to get to the bottom left of the screen and then hit 9 eleven times to bring the cursor north-east, and then right once to find where your character is standing.

You should also look into urw_ini.txt, a file where you can change some game options. You might want to turn more confirmations on. Also with the standard keyboard controls, it matters which way your character is facing, and the up key takes you forward. There's a tiny arrow over your character and also in the top right of the screen there's a character portrait with an arrow and the word EAST if you're facing east. If your screenreader has trouble detecting which way your character is facing, then try turning traditional movement on. Then the up key will always take you north.

Another thing you might try is turning debug logs on, with the & key. This will cause quite a few files to appear in your urw folder. These are the files I have after moving around a little bit and eating:

 debug_all.txt         debug_cre.txt         debug_movement.txt   debug_renderer.txt     debug_topics.txt
 debug_armour.txt      debug_eat.txt         debug_msg.txt        debug_ter-tiles.txt    debug_uflora.txt
 debug_asciidata.txt   debug_lastentry.txt  'debug_party!.txt'    debug_tileloader.txt
 
Some of these files grow very big very quickly so you'll want to delete them throughout play, maybe as often as every ten minutes, especially debug_all.txt, and debug_cre.txt (which has information about all the creatures in the world but at a very detailed level like some bird flapping around some tiles away that your character can't even see) and it's half in Finnish, but debug_msg.txt might have a better format for you than msglog.txt. And they may have info that helps with your reverse engineering.

There's also an app for your phone that can connect to your game if you enable the controller in urw_ini.txt. There's a free version and a paid version. It's called Unreal World Controller and published by Enormous Elk (same people who make the game), and it's worth a try, though it mostly works as an additional input, you can push a button that says eat instead of typing e, or you can program a series of keypresses into one button, but it sounds like your main problem is finding out what's on the screen and it won't help with that part.
« Last Edit: February 17, 2026, 09:49:19 PM by Plotinus »

Plotinus

« Reply #2 on: February 17, 2026, 09:54:51 PM »
Another idea in urw_ini.txt, I'd recommend setting MAP_LIGHTING_EFFECTS:NO because the game can get quite dark at night and if you're using any kind of technology to look at a picture and tell you what's happening on the screen, it'll have an easier time of it if it's not so dark. Your character's range of vision will still be smaller at night but the squares your character can see will be nice and bright for your OCR.

Elwin

« Reply #3 on: February 17, 2026, 10:16:23 PM »
Thanks so much for both of these :)

I was aware of the message log text file but didn't realize it stored the location where things happen. This will probably come in handy.

I'm excited to explore more. Right now I'm able to do the very basic "build a fire" sorts of things, but I always wander off and lose track of it.

I decided to go ahead and purchase the Steam version because I do want to support further development, and I really like what this game offers in general.

Bert Preast

« Reply #4 on: February 17, 2026, 11:59:13 PM »
You should get a custom status as "Most dedicated player of all time" or something  :)

Plotinus

« Reply #5 on: February 18, 2026, 01:21:53 AM »
Another idea: the devs are pretty active here on the forums, if you can think of something that would make the game more playable for you, feel free to post it in the suggestions section, maybe a verbose mode that could be toggled on and what it's output might be like, or some kind of continuous text printout of the map into a file, or a hotkey to center the look mode back onto your character.
« Last Edit: February 18, 2026, 01:25:01 AM by Plotinus »

Elwin

« Reply #6 on: February 18, 2026, 06:18:15 AM »
I will definitely do that.

You're right that my principle difficulties are around getting data out of the game, though I have some hackish ways of doing so. The less fiddling I have to do the better. SO much of it is already plain text, all those stats and skills and item details. I'm glad it's as playable as it is :)

Elwin

« Reply #7 on: February 20, 2026, 01:24:23 AM »
Well, I just discovered swimming.

This is one area I might suggest an alternative approach to the developers, as I drowned in a literal flood of messages :)

Navigating waterways is going to be tricky. I wasn't aware the game had pseudo-real-time bits, which makes accessibility trickier in general.

IT looks like I can use look mode to stop the flood at least, not to mention prevent messages from repeating at the script level. Still, it's at the least disorienting.
« Last Edit: February 20, 2026, 01:52:36 AM by Elwin »

Erkka

« Reply #8 on: February 20, 2026, 02:50:51 PM »
Hello Elwin, and welcome to the forums!

This is Erkka from the Enormous Elk team. I am not sure how easy it would be to make UnReal World more compatible with screenreaders. But that is definitely something I'd love to learn more about.

Are you using a screen reader software, or a dedicated piece of hardware? Today I've been doing a few searches to find out if there is a cross-platform accessibility library suitable for making indie games, but didn't find an obvious solution. Still, I've been thinking about making a simple "hello world" test, and I'd guess first I need to learn that if in addition to console output there are other ways for a game to communicate with a screen reader.

Also, I saw you made a visit at the UnReal World players' discord channel. If I'd ask you more detailed questions, do you prefer direct messages at Discord, e-mail, or simply continuing here on the forums?

yours
 Erkka from Enormous Elk
UnReal World co-designer, also working on a small side project called Ancient Savo

Elwin

« Reply #9 on: February 20, 2026, 06:09:11 PM »
Hello Erkka,

I'm very happy to hear from you. :) I realize that adding screen reader  accessibility is a lot, but i'm happy to talk things over in whatever forum works for you. This is a public thread but I do spend a lot of time on Discord, so whichever you prefer.

As for communicating with  screen readers, the approach I take is using a library which lets me just make the screen reader say arbitrary text. IT's a lot less work than adding a full accessibility layer would be. We definitely can go beyond thet ext console these days :)

I'm happy to chat specifics about my approach or what would be helpful. Thanks for helping with this game, it's a delight.

Erkka

« Reply #10 on: February 20, 2026, 08:41:56 PM »
I think it is good to continue the general discussion on the forums. Over the years we had questions and suggestions by blind players, so chances are that there are other people who are also interested in this. And when it gets to discussing very practical details, we can hop over to Discord direct messages.

My current understanding is that there are two main approaches:

1. making a game which includes text-to-speech functionality in itself. Everything is handled by the game code. The good side is full control and customization, the downside is no integration with other possible accessibility features. I'm under the impression that there are things like braille-pads, and an idea of braille-roguelike sounds really interesting to me !

2. taking care that a game does the right thing, so that the accessibility options chosen by the user can interpret and communicate the game messages. But I have no idea how to start working with this. I know that when writing a web page we can give specific tags which help screen-readers to parse the page in an accessible manner. And I'd guess a screen-reader can capture console output. But somehow I'd guess that in 2026 we have other options as well, so I just need to learn more about these.

So, to get started with learning more about it, my question is if you happen to have more insight about the point 2. Or, if you feel that I've completely misunderstood the very basics, then I need to know what web resources to read to clarify my thoughts.

EDIT: Thinking from a programmer's point of view, today my web searches led me to read about AccessKit. Tomorrow I will read more about it.

EDIT2: I really should to go to bed now, but before hitting the hay I wanted to try the built-in screen reader on my Linux. Oh boy, this sounds like the Commodore 64 speech synthesizer back in the 1980's !

For me accessibility is an interesting world to explore!
« Last Edit: February 20, 2026, 09:46:44 PM by Erkka »
UnReal World co-designer, also working on a small side project called Ancient Savo

Elwin

« Reply #11 on: February 26, 2026, 05:43:12 AM »
Hi there,

Yes, broadly I think this is correct, but it's a bit more nuanced of course.

For an example, I'm using the SRAL library, which lets programs talk to screen readers directly but doesn't require a lot of customization. My reverse engineering work basically hooks into URW and can, for example, read the messages as they are written to the screen or tell what menu item is selected. I don't change the game code permanently, just hook in and announce things.

IT's not perfect, but does work surprisingly well.

A Braille display is an entirely different thing. There are some which have basically a "screen" of multiple braille lines, and they cost thousands of dollars; I've never seen one. By far the more common arrangement is a single line of 40 braille characters, more or less.

Anyway. I hope this is somewhat helpful :) Sorry for the delay in getting back to this! If you were using Espeak or Flite on Linux, they do sound horrible. Most screen reader users have strong opinions about voices.

Erkka

« Reply #12 on: February 26, 2026, 09:25:32 AM »
Quote
Anyway. I hope this is somewhat helpful

Yes, it is. Thanks for the SRAL link!

For me it is helpful to get a better idea of different options available.


Quote
Sorry for the delay in getting back to this!

Absolutely no problem! I've anyway been slowed down because of working for money to pay my bills. I hope next week I will have more time for indie development activities.


Quote
Most screen reader users have strong opinions about voices.

Can you tell me more about this?

Are there screen readers which are generally felt to be more convenient, and others with bad reputation? Or is it heavily mixed, like some people having a strong opinion in favor of a screen reader which is strongly dismissed by other people?

In my earlier searches I read someone saying that dedicated voice acting is always better than a screen reader - is this outdated info, or how big is the gap between generated speech and pre-recorded audio of a real human speaking the game texts?
UnReal World co-designer, also working on a small side project called Ancient Savo

 

anything