2008-04-10 10:49:02

How do you render tactical maps using an audio interface?

I guess I have to explain what I mean with 'tactical map'. A classic and simple example of a tactical map would be a chess board. A more complex example of a tactical map would be the game screens of Japanese tactical RPGs or many (turn-based) Western RPGs. The map shows where everyone is, obstacles, dangers - the world from a bird's eye/isometric view. This type of map is vital for many types of games, and I have found no decent way to render something like this in audio.

The best I could come up with is this: Using a grid based layout (i.e. like a chess board) the program outputs the coordinates of each "piece" (character, obstacle etc.) to the player. While the position of a character can be given as a simple coordinate pair, larger structures like walls are trickier. The best thing I could come up with was specifing the dimensions/position of larger objects using geometric shapes. Here is an example how the whole thing works in practice:

The tactical map which should be rendered in this example is simple. The map is divided by a chasm (going from the left edge to the right edge of the map). There is a bridge in the middle of the map which can be used to cross the chasm. On one side of the chasm there are two enemy troopers, on the other side there are two player characters (Marc and Carl). In addition there are two trees on each side of the chasm. Now here is how the program would output this if the player asked for a complete discription of the scene. The program "reads" the map starting at the top left (coordinates 0,0 - we use the y,x coordinate scheme here), using the standard left to right / top to bottom reading mode.

tree 0, 4
enemy trooper 1, 8
tree 2, 8
enemy trooper 5,4
chasm, rectangle 6,0 to 8,10
bridge, rectangle 6,4 to 8, 6
Marc 7, 5
tree 8, 3
Carl 9, 8
tree 9, 9

Rectangles are described by the coordinates of the top left and bottom right edge here. Parts of the gird which aren't mentioned can be assumed to be safe, passable ground.
It is possible to construct an image of the map using this information in your head, especially because this is supposed to be used in a turn-based game where you can let the program repeat the map describtion or just parts of it (e.g. only enemy positions, only chasm position etc.) as often as you like. In addition one could add various comfort functions like a line of sight or distance calculation function. It would be "playable" but whether it would be fun is another question. It is certainly much less smooth than a visual interface.

What do you think? Do you know a better way to render tactical maps in audio?

P.S.: I have abandoned my audio dungeon crawler project because the code design I had in mind didn't work out. I am thinking about trying to create a tactical rpg right now, and I wonder whether there is a point in trying to an audio interface to it..

2008-04-10 14:51:15

Well you could also use the SoundRTS style system where you can move around and have each individual grid square described to you as well. For example if you're in E2 and press the left arrow it would move to and describe D2. Combined with a command to list important objects this can work, especially in a turn based game. Line of sight and range functions would indeed be interesting, especially if they were in the form of "Who can I see/can see me if I were stood in this square?" so you can plan a move and not be entirely shocked that a given enemy can see you.

cx2
-----
To live by honour and to honour life, these are our greatest strengths and our best hopes.

2008-04-10 16:43:37

cx2 wrote:

Well you could also use the SoundRTS style system where you can move around and have each individual grid square described to you as well. For example if you're in E2 and press the left arrow it would move to and describe D2.

And what if D2 is a lava pit? "You step into a lava bit - you are dead, sucker!".
The problem is that you need to know where things are located in advance. So that you do NOT step into lava pits for example.
You must be able somehow to know the position of everyone and everything on the map, otherwise you cannot figure out the optimal move. Tactical RPGs are all about figuring out optimal unit movement / placement by considering the position of enemy units and the terrain (which you must try to exploit to your advantage - using a tree for cover while firing at the enemy for example).

Combined with a command to list important objects this can work, especially in a turn based game. Line of sight and range functions would indeed be interesting, especially if they were in the form of "Who can I see/can see me if I were stood in this square?"

I had something else in mind. More like enter "los 1,3 10,9"  to figure out whether there is a line of sight between the positions (1, 3) and (10, 9).
But you are idea would make a nice addition I agree.

But the primary problem remains. Trying to construct a mental image of the world in your head is hard. Well, it depends on talent and training, I guess. Some people are good at constructing things in their head, others are not. Thinking of it, one could argue that this system would make the game a "brain trainer" *lol*.

2008-04-10 17:50:35 (edited by cx2 2008-04-10 17:52:08)

I did not mean simply movement of the character, but movement of the viewpoint. For example.

Your character and viewpoint start in say again E2. You press left and your viewpoint moves while your character remains stationary, so you are now examining D2 without moving your character. If at this point the game announced something like "D2, lava" you would know not to move there. If however it announced something like "D2, bridge" you could then go ahead and make the movement happen with another key or some such.

In either case your character would remain in E2 unless or until you told the game to explicitly move the character. This is akin to visual games where you can move the view around the map without moving characters or units.

cx2
-----
To live by honour and to honour life, these are our greatest strengths and our best hopes.

2008-04-10 22:40:55

I agree with Cx2 on this one, a square by square movement viewpoint is absolutely necessary. My own visualization of spaces is pretty lousy, so I'd need to be able to constantly check litle details, also having some comprehensive list object functions would be necessary I think, Eg, list position of your characters, list position of known enemies, list position of hazards and list position of cover.

Your idea about defigning large map areas via geometric shapes is most interesting though. i think, until I'd gotten used to things I'd want all the points of a geometric object pointed out, not merely the squares at it's top left and bottom write corner, ---- you could possibly considder making this a toggle, so more experienced players can play quicker.

for the line of site, I think doing it by typing in sets of coordinates would be slightly slow and cumbersome, especially when combined with having to listen to lists of objects and move the main viewpoint around the map to examine the individual squares.

Presumably, lines of site would be streight and not curved? Ie, if you were on square 7-10, and there were no obstructions south of you, you could have a line of site clearly to the square 7-1 (at the edge of the map).

if this is indeed how lines of site work, you could considder having a single key in the main square by square map view to list the number of squares you have in direct line of site in the eight cumpus directions, --- or possibly just pressing l for line of site and then one of the numb pad keys to identify direction (8 for north, 9 for northeast etc).

so, you move the main view to D5, check your line of site to the north and are told 5 north, you therefore know you can see as far as D-10. You check south, and are told 1 south (because there is a tree on D-4), thus you have a possibly good position for your archer.

I really like the idea of this sort of rpg game, especially if it had individual characters and distinct environments and monsters, ---- not to mention some sort of plot, perhaps with npcs. Perhaps though, for some map ideas you might considder looking at Sound rts. Being more based upon games like warcraft, it's probably not exactly the way you were thinking (for one thing, it has multiple objects in the same square), but maybe the views and command structure would be useful to considder to make gameplay as smooth as possible, ---- obviously the game shouldn't be easy, but the challenge should be the tactics of your warriors, not merely learning the map and view commands.

you can find sound rts at http://jlpo.free.fr/soundrts/

Good luck with this one, it sounds great, ---- certainly a very different sort of audio game to what we've had thus far, which is deffinately a good thing.

With our dreaming and singing, Ceaseless and sorrowless we! The glory about us clinging Of the glorious futures we see,
Our souls with high music ringing; O men! It must ever be
That we dwell in our dreaming and singing, A little apart from ye. (Arthur O'Shaughnessy 1873.)

2008-04-10 23:10:14 (edited by cx2 2008-04-10 23:13:25)

You could also borrow from Lone Wolf at www.gmagames.com. While being a submarine game it has a grid system where you have a high level grid like SoundRTS, then you have a 5 by 5 grid within each square for additional definition without using excessively high numbers.

As well as I suggested previously listing all the enemies which have los to your currently examined square, instead of having to type in the numbers. Perhaps the ability to put down one or two markers if you want to plan for predicted enemy movement? So you could also check for los to one or two markers where you think the enemy might move to, or if you wish to cover a particular area of ground such as a bottle neck type situation.

cx2
-----
To live by honour and to honour life, these are our greatest strengths and our best hopes.

2008-04-11 00:26:11

Hmmm, markers for passing enemey positions is a good idea. I personally found the stratified grid system in lw a bit of a pest to follow myself, and would've much preferred big numbers than having to consider A1 3-5. As I said though, my spacial understanding is fairly pants, and the complexities of lw don't make that situation easier. I really enjoy the game, I'm just pathetic at it, lol! though i think a main map square by square overview would help me a lot in lw. Then again though being the theme of the game is supposed to be hunting hidden enemies with a submarine and remaining undetected, obviously such a view wouldn't fit the game's theme.

being a commercial game, only the first mission of lw is available to play for free, but there is an audio walkthrough of someone playing through all 17 standard game missions which shows off navigation very well. It's not hosted on the site where it used to be, but I believe it's been mirrored somewhere and could find more information about it and the link if that would help, --- maybe even send you some or all of it or put it on yousendit or similar, sinse I've got it sitting on my harddrive.

With our dreaming and singing, Ceaseless and sorrowless we! The glory about us clinging Of the glorious futures we see,
Our souls with high music ringing; O men! It must ever be
That we dwell in our dreaming and singing, A little apart from ye. (Arthur O'Shaughnessy 1873.)

2008-04-11 14:07:58

Thanks for the info / advice!

2008-04-17 00:58:11

Here is my current design for what I call "the tactical cursor". This is meant to be used for roguelikes/RPGs which are based on 2D tile grids. What do you think about the design so far? Any suggestions for improvements?


Tactical cursor
===============


Movement
--------
arrow keys = move cursor
home = move cursor to the position of the player character


Output
------
name of thing here, [l n]

'l' means: at least one hostile character has a line of sight to
    this tile

'n' means: this tile is next to a hostile character


Basic Commands
--------------
l = outputs a list of all characters (with coordinates) who have a line of sight to this tile
 
c = outputs the coordinates of the tile


Detection Commands
------------------
These commands are meant to be used to quickly locate things like enemies and items. These commands do NOT output terrain.

B = outputs all currently visible bad stuff (enemies) with coordinates

b = outputs nearby bad stuff with coordinates

O = outputs all currently visible good stuff (items) with coordinates

o = outputs nearby good stuff with coordinates

U = outputs all currently visible stuff (both good and bad) with coordinates

u = outputs nearby stuff with coordinates

The following commands determine what "nearby" means. The default detection range is 3, you can modify it using the following commands

+ = increase dection range
- = decrease dection range

I have not decided yet which commands should output absolute coordinates and which should output relative ones. What do you think?

(relative coordinates = position expressed as difference to the cursor position e.g +3,-7 = 3 steps down, 7 steps left)

2008-04-17 10:44:09

Well, I certainly like the sound of those list commands for the tactical curser (nice name), and can deffinately imagine how they'd be used. As far as relative coordinates go, I'd prefer most things to be absolute most of the time myself, sinse I find that easier to work with, ---- though the ability to get the coordinates of a selected tile relative to the character's position would be helpful, ---- say with r, ---- perhaps shift r could be a general togggle for relative coordinates for people who might want them?

I deffinately like the idea of the close vs full view in the list commands, and having that view adjustable, sinse that gives the player a lot of control over the information they get, and could speed things up, ---- eg, when passing through an area where movement is highly restricted, ---- such as a dungeon setting with small rooms and passageways, the player could set the commands to only list things in the room their character was currently occupying, which would make play a lot quicker.

For the speaking of coordinates, i'd suggest another toggle. I'd personally prefer the coordinates of each tyle to be spoken as I move the tactical curser onto it, though I imagine some players would find this to be annoying. So, as with the relative coordinates, how about making c speak the current tyle coordinates, and shift c a toggle to have coordinates spoken every time the curser moves.

for the lines of site and next to output, I'm wondering how precisely this would work? to give an example, you have a character on A1, an enemy on B5, and a boulder (ie cover), on B2.

You move the tactical curser to B1 and here only the coordinates of the tyle, or perhaps a terain description eg b1, grass. Moving upwards, you here B2, boulder. Up again you get B3, grass, l, then B4, grass, n, l.

If this is how things work, I deffinately like the idea. Having the lines of site marked on each tyle, you could even considder enemies and structures with more expanded lines of site than a single line of squares in the cardenal directions, ----- such as archery towers which could have a wider field of vision, ---- ie, more squares marked with l, and thus require more careful tactics, such as sneaking up through cover.

I'm also wondering if the N and L markers would be separate, ---- ie, if enemies can only look in one direction, ---- in the above case for example, moving the tactical curser to A5 would get a report like A5, n, indicating that this might be a good place to sneak up and attack the enemy on B5.

I certainly like the way things are sounding so far.

With our dreaming and singing, Ceaseless and sorrowless we! The glory about us clinging Of the glorious futures we see,
Our souls with high music ringing; O men! It must ever be
That we dwell in our dreaming and singing, A little apart from ye. (Arthur O'Shaughnessy 1873.)

2008-04-18 03:23:47

dark empathy wrote:

Well, I certainly like the sound of those list commands for the tactical curser (nice name), and can deffinately imagine how they'd be used. As far as relative coordinates go, I'd prefer most things to be absolute most of the time myself, sinse I find that easier to work with, ---- though the ability to get the coordinates of a selected tile relative to the character's position would be helpful, ---- say with r, ---- perhaps shift r could be a general togggle for relative coordinates for people who might want them?

I deffinately like the idea of the close vs full view in the list commands, and having that view adjustable, sinse that gives the player a lot of control over the information they get, and could speed things up, ---- eg, when passing through an area where movement is highly restricted, ---- such as a dungeon setting with small rooms and passageways, the player could set the commands to only list things in the room their character was currently occupying, which would make play a lot quicker.

For the speaking of coordinates, i'd suggest another toggle. I'd personally prefer the coordinates of each tyle to be spoken as I move the tactical curser onto it, though I imagine some players would find this to be annoying. So, as with the relative coordinates, how about making c speak the current tyle coordinates, and shift c a toggle to have coordinates spoken every time the curser moves.

Ok, toggles sound like a good idea.

for the lines of site and next to output, I'm wondering how precisely this would work? to give an example, you have a character on A1, an enemy on B5, and a boulder (ie cover), on B2.

You move the tactical curser to B1 and here only the coordinates of the tyle, or perhaps a terain description eg b1, grass. Moving upwards, you here B2, boulder. Up again you get B3, grass, l, then B4, grass, n, l.

If this is how things work, I deffinately like the idea.

Yes, that's how it's supposed to work.

Having the lines of site marked on each tyle, you could even considder enemies and structures with more expanded lines of site than a single line of squares in the cardenal directions

"Line of sight" usually does not mean "single lines of squares in the cardinal directions", and that's not what I meant  either. There is a "line of sight" between point A and point B if you can draw a line between the points and there are no sight blocking obstacles (like walls) on the line. These lines do not have to go straight into a cardinal direction e.g. 0,0 - 1,1 - 2,1 - 3,2 would be a perfectly valid line. That  would look strange on paper, but on a PC screen where the world is divided into relatively big rectangles that actually looks like a straight line.
A character can see ANY tile to which a line of sight can be drawn. The sum of these tiles is usually called "field of view". In most RPGs/roguelikes which us a top-down viewpoint the player can usually see the entire field of view (i.e. his character seems to have 360 degree vision), or even the entire world from a god-like perspective (the field of view is only used to determine things like whether your character can hit something for example). I use the second approach (god-like player perspective) in my game, because I like it best.


, ----- such as archery towers which could have a wider field of vision, ---- ie, more squares marked with l, and thus require more careful tactics, such as sneaking up through cover.

You can usually expect that things in the game world have at least the same field of vision you would except in the real world. That's the whole point of calculating visibility using lines of sight.

I'm also wondering if the N and L markers would be separate, ---- ie, if enemies can only look in one direction, ---- in the above case for example, moving the tactical curser to A5 would get a report like A5, n, indicating that this might be a good place to sneak up and attack the enemy on B5.

Would be possible, but my game uses the traditional 360 degree vision for characters i.e. sneaking up like that won't work. This was a conscious decision. It is much easier to handle this way and the game I am currently working on does not need this complexity. I am working on a small test game called "Jungle Adventure" right now to test the concept. I really want to finish a project at least once. I have abandoned my old primary project (Warp Rogue) because I eventually became tired of it (after 6 years  of development and more than 30000 downloads). I also suffer from a serious lack of time for these things, so keeping things simple is important.

I certainly like the way things are sounding so far.

I hope to release "Jungle Adventure" at the end of this month or maybe next month. No guarantees however, hobby game development is horribly unpredictable.

2008-04-18 03:25:13

dark empathy wrote:

Well, I certainly like the sound of those list commands for the tactical curser (nice name), and can deffinately imagine how they'd be used. As far as relative coordinates go, I'd prefer most things to be absolute most of the time myself, sinse I find that easier to work with, ---- though the ability to get the coordinates of a selected tile relative to the character's position would be helpful, ---- say with r, ---- perhaps shift r could be a general togggle for relative coordinates for people who might want them?

I deffinately like the idea of the close vs full view in the list commands, and having that view adjustable, sinse that gives the player a lot of control over the information they get, and could speed things up, ---- eg, when passing through an area where movement is highly restricted, ---- such as a dungeon setting with small rooms and passageways, the player could set the commands to only list things in the room their character was currently occupying, which would make play a lot quicker.

For the speaking of coordinates, i'd suggest another toggle. I'd personally prefer the coordinates of each tyle to be spoken as I move the tactical curser onto it, though I imagine some players would find this to be annoying. So, as with the relative coordinates, how about making c speak the current tyle coordinates, and shift c a toggle to have coordinates spoken every time the curser moves.

Ok, toggles sound like a good idea.

for the lines of site and next to output, I'm wondering how precisely this would work? to give an example, you have a character on A1, an enemy on B5, and a boulder (ie cover), on B2.

You move the tactical curser to B1 and here only the coordinates of the tyle, or perhaps a terain description eg b1, grass. Moving upwards, you here B2, boulder. Up again you get B3, grass, l, then B4, grass, n, l.

If this is how things work, I deffinately like the idea.

Yes, that's how it's supposed to work.

Having the lines of site marked on each tyle, you could even considder enemies and structures with more expanded lines of site than a single line of squares in the cardenal directions

"Line of sight" usually does not mean "single lines of squares in the cardinal directions", and that's not what I meant  either. There is a "line of sight" between point A and point B if you can draw a line between the points and there are no sight blocking obstacles (like walls) on the line. These lines do not have to go straight into a cardinal direction e.g. 0,0 - 1,1 - 2,1 - 3,2 would be a perfectly valid line. That  would look strange on paper, but on a PC screen where the world is divided into relatively big rectangles that actually looks like a straight line.
A character can see ANY tile to which a line of sight can be drawn. The sum of these tiles is usually called "field of view". In most RPGs/roguelikes which us a top-down viewpoint the player can usually see the entire field of view (i.e. his character seems to have 360 degree vision), or even the entire world from a god-like perspective (the field of view is only used to determine things like whether your character can hit something for example). I use the second approach (god-like player perspective) in my game, because I like it best.


, ----- such as archery towers which could have a wider field of vision, ---- ie, more squares marked with l, and thus require more careful tactics, such as sneaking up through cover.

You can usually expect that things in the game world have at least the same field of vision you would except in the real world. That's the whole point of calculating visibility using lines of sight.

I'm also wondering if the N and L markers would be separate, ---- ie, if enemies can only look in one direction, ---- in the above case for example, moving the tactical curser to A5 would get a report like A5, n, indicating that this might be a good place to sneak up and attack the enemy on B5.

Would be possible, but my game uses the traditional 360 degree vision for characters i.e. sneaking up like that won't work. This was a conscious decision. It is much easier to handle this way and the game I am currently working on does not need this complexity. I am working on a small test game called "Jungle Adventure" right now to test the concept. I really want to finish a project at least once. I have abandoned my old primary project (Warp Rogue) because I eventually became tired of it (after 6 years  of development and more than 30000 downloads). I also suffer from a serious lack of time for these things, so keeping things simple is important.

I certainly like the way things are sounding so far.

I hope to release "Jungle Adventure" at the end of this month or maybe next month. No guarantees however, hobby game development is horribly unpredictable.

2008-04-19 00:43:58

I have noticed two problems of the previous design:

a.) the UI was too complex, too many commands to remember. We want a casual game interface here, and remember that in addition to all tactical cursor commands the player will also have to remember the game specific ones. Too avoid the case where the only people who want to play tactical cursor games are EMACS users I drastically reduced the amount of commands one HAS to remember by turning the situation specific commands into option toggles (which casual players will be able to ignore most of the time).

b.) I am surprised nobody noticed that: there was no detection function for connection objects!
Imagine a case where you bump into a wall. Of course, you could pick a direction and follow the wall using the cursor but that is time consuming. Considering that often the wall you just bumped into belongs to a room or a building a function which outputs nearby doors would speed up things a lot! The new unified detection command outputs the location of connection objects (doors, stairs, teleporters) because of this.

So here is the new, refined design (feedback wanted as always):


Tactical Cursor
===============


About
-----
The tactical cursor is a user interface designed to make games based on grid based tactical maps (more) accessible to the blind. The most classic example of a grid based tactical map is a chess board. However, this type of map is also used to render the game world in top-down RPGs/roguelikes; the tactical cursor was designed with these kinds of games in mind.
The tactical cursor can be used to 'read' a map even if the user cannot see it. This is achieved by using a TTS system (e.g. Microsoft SAPI), details below.


Terms
-----
We need to define some terms used in this document before we can go on:

"Thing"
Any distinct game world object e.g. a character, a terrain tile, an item, etc.

"Thing of interest"
Any special game world object on the map the user might care about e.g. items, enemies, stairs, etc. Usually does NOT include things like passable / harmless ground, walls etc. because it is important the keep the number of things of interest low, otherwise the detection command (see below) becomes useless.

"Actor"
A game world object which 'acts' (i.e. actually does something instead of just remaining static) e.g. the player character, monsters, etc.

"Watcher"
Subclass of actor (i.e. all watchers are actors but not vice versa). A watcher is an actor which observes his environment and reacts to what he sees. Think anything from orks to automatic laser defense systems.
There ARE actors who aren't watchers (think of a rock rolling down a hill).

"Relative coordinates"
Position expressed as difference to the cursor position e.g +3,-7 = 3 steps down, 7 steps left.


Movement
--------
arrow keys / number pad (y and x axis)
pgup, pgdown (z axis)
home = move cursor to the position of the currently selected actor (e.g. the player character)


Output
------
name of thing here, coordinates, [l n]

'l' means: at least one hostile watcher has a line of sight to this tile

'n' means: this tile is next to a hostile actor

The output may be a list of things when the cursor is used in games which allow more than one thing to be present on one and the same tile.


Basic Commands
--------------
l = outputs a list of all watchers (with coordinates) who have a line of sight to the current cursor position.

c = outputs the coordinates of the cursor.


Detection Commands
------------------
This command is meant to be used to quickly locate things like enemies, items, doors etc.

D = outputs all currently visible things of interest (with coordinates)

d = outputs all currently visible, nearby things of interest (with coordinates)

The following commands determine what "nearby" means. The default detection range is 3, you can modify it using the following commands

+ = increase dection range
- = decrease dection range


Option Toggles
--------------
These toggles can be used to customize the behaviour of the cursor.

!c = full coordinates mode (output coordinates every time the cursor is move)
!r = relative coordinates mode (makes all commands output relative coordinates instead of absolute ones)
!b = the detection commands output only bad things of interest (e.g. enemies, lava pits)
!g = the detection commands output only good things of interest (e.g. useful items)
!n = the detection commands output only things of interest which belong to the connections category (e.g. doors, stairs)
!t = returns the detection commands to their default state (i.e. they output all things of interest)


Output
------
Every time the word "output" was used above it did not mean rendering something on screen. Instead the tactical cursor "speaks" its output using a TTS system.

2008-04-19 07:40:16 (edited by dark empathy 2008-04-19 08:46:10)

Hmmm, you are certainly right that a list of navigational points such as doors, teleporters, stairs etc would be another necessary command, and your also very right that the game would need a command to give a general list of all objects, ----- especially a general list of all objects relatively close to the player (such a command could very much speed up navigation).

but I don't much like to the idea of bundling all the list commands on one key, and having to toggle which object type is vieweD, SINSE IT STRIKES ME THAT THE PLAYER WOULD BE DOING A LOT OF TOGGLING. SAY FOR EXAMPLE, i WAS PLANNING MY MOVE AND HAD FORGOTTEN WHERE SOME ENEMIES MOVED, i'D DEFFINATELY PREFER AN INSTANT WAY TO GET THAT SORT OF INFORMATION, THAN HAVING TO GOGGLE A LIST COMMAND ON, READ THROUGH A LIST, THEN TOGGLE IT OFF AGAIN, ----- EVEN IF i DID HAVE TO REMEMBER SEVERAL KEYS. iF THERE WAS A GENERAL LIST COMMAND, PEOPLE WHO WERE JUST STARTING THE GAME AND GETTING USED TO THINGS COULD JUST STICK TO USING THAT AND NOT BOTHERE WITH OTHER LISTS UNTIL THEY BECAME MORE EXPERIENCED. i THEREFORE certainly don't think the idea of several list commands in the tactical curser would make the Ui too complex at all.

remember, that even using a screen reader requires someone to use and remember a large number of commands in the Ui, ---- often with multiple navigation modes, and this is equally true in audio games.

In my screen reader, Hal for example, I have various commands to speak what I am writing, read line, read word, read status bar, continuous read from curser position etc. I can then press numberpad pluss to enter virtual focus mode, which allows me to wander around the screen with the curser keys, perform mouse clicks with the keyboard and do various things, ---- it even has several list commands such as list links on a web page with capslock 1). there are the specific commands for the vf, such as route vf to curser position etc. These are all also customizable!

then, other audio games have fairly extensive command LISTS FOR NAVIGATION AND INFORMATION, AND REALLY, many commands in an audio game are not a problem at all!

Myself, I would suggest the following:

Tab: Enter/exit tactical curser mode, alternatively, you could use tab for switching the tactical curser betwene a number of controllable player characters, with presssing enter on each character to begin control of that character, and end to switch back to tactical curser mode.

Arrow keys: move tactical curser when active, or move character, Hal uses the number pad, and I'd personally be more comfortable using the arrows myself unless there's a good reason for the numberpad, eg, movement northeast, sounthwest corresponding to numbpad 7, 9 etc.

I'd also suggest having the up and down arrows move through and speak each item in the various list commands to speed up navigation.

Home: route tactical curser to closest character position.

w: where am I, speaks character's coordinates.

l: list which enemies (and possibly allies if you were considdering having them), have lines of site to currently selected tyle.

g: general list of all objects including enemies, items, navigational objects and hazards.

shift g: short range general list.

I: list items in tactical curser mode, open inventory in character control mode, ditto with any other character specific commands which might require the same keys as in the tactical curser), .

shift I: short list of items.

e: list enemies.

shift E: short list of enemies.

d: list doors and other navigational objects, stationary but non-dangerous objects which characters could interact with in some way such as switches, control panels, fountains, alters etc could also appear on this list.

shift d: short list of doors and other navigational objects.

h: list hazards, lava, roaling rocks etc.

shift h: short list of hazards.

pg up: increase range of all short lists.

pg down: decrease range of short lists.

escape: exit any list and return to tactical curser.

If you were thinking of allies or pets or some such, they could be accessible with a similar pair of commands tied to the A or P keys.

c: speak coordinates of current tactical curser position or selected item in list.

shift c: toggle auto speaking of coordinates in both the tactical curser and lists.

r: speak character relative coordinates of current tactical curser position or selected item in list.

shift R: toggle to auto speaking of relative coordinates.

x: examine currently selected object in either tactical curser or list command, eg, get both a textual description of the object and stat information, such as hp, level, condition of object etc.

shift X: get only stat information for object in tactical curser or list command, afterall once you've heard a long description of what an orc looks like several times, you'll only be interested in how tough it is, what weapons and item's it's got, it's range of attack etc.

f1: speak a list of character specific key commands I for inventory etc.

F2: speak a list of tactical curser specific key commands.

F3: general game help, including explanation of what los, enemies, hazards and navigational objects are and what absolute and relative coordinates mean.


Other help information such as game story or setting information could be tied to the other F keys.

I'd also suggest making commands to recieve character specific information such as hp, and reread any messages about what happened in the last turn be available in the tactical curser mode, so as to make planning out your next move easier, say M to repeat last status message such as "Enemy wizard moves from 1-14 to 4-17" and S to speak character's status, amount of hp, level, current attack and defence etc.

As a possible alternative to several list commands (which might be a pest to program), you could considder one single general short or long list as you originally thought, then using various keyboard commands to move through the items in that list, ---- for example arrow keys or tab and shift tab to move one by one, i to move forward through all the items in the list, shift i to move backwards, e to move through the enemies, shift e to move backwards, though imho you'll stil need the c, r, x and possibly shift x commands to work in this list as I said above. One other advantage of this mode would be no need for a separate tactical curser and navigation sinse the i, e, h, and d or other list movement commands would all only apply while the general list was open, ---- though of course either character movement or tactical curser movement would need to be tied to the numberpad to separate things out. I'm not sure if this would be easier to program sinse obviously you'd only be dealing with one list mode instead of several. ---- appologies if not, I just thought it was an interesting alternative method.

I'm sorry if this looks like a very impossible amount of work, I'm trying to think of a way that you could create a very flexible interface which would work in many games and situations, and to anticipate future troubles with it, ---- such as getting a really long list of things, but only wanting specific information of a couple of things in that list, ---- for example when navigating betwene lava pits to either side of your character, your only interested in the coordinates and damage potential of those! lava pits, not any other ones which might be around.

for a very complex game with a good Ui which outputs to sapi, i suggest you have a look at lone wolf, a submarine simulation game produced by gma games found at http://www.gmagames.com/

I hope this is useful, and I most deffinately and completely look forward to playing jungle adventure, or anything else you come up with sinse as I said, these sorts of games are very much not available at the moment.

With our dreaming and singing, Ceaseless and sorrowless we! The glory about us clinging Of the glorious futures we see,
Our souls with high music ringing; O men! It must ever be
That we dwell in our dreaming and singing, A little apart from ye. (Arthur O'Shaughnessy 1873.)

2008-04-19 12:20:48

I'm afraid I have to agree with Dark here, having a fair few different keys for different things is par for the course in audio games. Without this the games just tend to either provide insufficient information, or else they overwhelm you with too much. Either that or they just aren't very deep or challenging games.

cx2
-----
To live by honour and to honour life, these are our greatest strengths and our best hopes.

2008-04-20 03:13:09

@dark

Thanks for making me aware of the fact that audio gamers are used (and prefer) UIs with lots of commands. Such UIs are usually considered bad design in the sighted world and I got a lot of positive feedback for the UI of my previous game which was based on a reduced command set (compared to other roguelikes) that's why I thought I should follow a similar approach here. Based on your input I have modified the design again (see below).

I have decided to program the tactical cursor as a game independent library ("libraries" are things like Direct X, SAPI, etc.), so that other games can easily add tactical cursor support (mainly thinking about open source roguelikes here). If the tactical cursor concept turns out to work well, an existing library could also speed up the development of new games based on tactical maps. And last but not least I always try to turn as much as possible of a program into reuseable components, the program ends up being much easier to maintain / cleaner when built this way. So keep in mind that I am trying to keep this as generic as possible.

New design
=======

Movement
--------
arrow keys / number pad (y and x axis)
pgup, pgdown (z axis)
home = move cursor to the position of the currently selected actor (player character)


Movement Output
---------------
Every time the cursor is moved to a new tile it will output:
name of thing here, [coordinates,] [l]

The coordinates are optional (see Options).

'l' means: at least one hostile watcher has a line of sight to this tile.

The output may be a list of things when the cursor is used in games which allow more than one thing to be present on one and the same tile.


Basic Commands
--------------
tab = tactical cursor on / off

F1 = outputs tactical cursor command list

l = outputs a list of all watchers (with coordinates) who have a line of sight to the current cursor position.

c = outputs the coordinates of the cursor.

w = outputs the coordinates of the currently controlled actor (e.g. player character)

x = examines the thing at the current cursor position / the currently selected list item

X (shift + x) = same as above except that it includes non-vital details

enter = "select" - returns the current cursor position / the position of the currently selected list item
        to the main program. This allows the cursor to be used in targetting commands (e.g. which tile a spell should hit).


Detection Commands
------------------
d = outputs all things of interest within range (with coordinates)

D (shift + d) = outputs all things of interest (with coordinates).

e = outputs all enemies within range

E (shift + e) = same as above except no range limit

i = outputs all items within range

I (shift + i) = same as above except no range limit

h = outputs all hazards within range

H (shift + H) = same as above except no range limit

a = output all allies within range

A (shift + A) = same as above except no range limit

o = outputs all things of interest within range which are not enemies, allies, items, or hazards (e.g. doors, switches)

O (shift + o) = same as above except no range limit

The following commands determine the range of the dection commands. The default detection range is 3, you can modify it using

the following commands

+ = increase dection range
- = decrease dection range

Option Toggles
--------------
These toggles can be used to customize the behaviour of the cursor.

C (shift + c) = full coordinates mode (output coordinates every time the cursor is move)
R (shift + r) = relative coordinates mode (makes all commands output relative coordinates instead of absolute ones)


Output
------
Every time the word "output" was used above it did not mean rendering something on screen. Instead the tactical cursor "speaks" its output using a TTS system.

Output can be aborted by pressing Esc.

If the output is a list of items the program will read the list top to bottom, outputting "end of list" at the end. The program will not automatically close the list once it has finished reading it, instead it will wait for the user to press Esc. The user can take manual control of the output by pressing the scroll keys (arrow up, arrow down) to scroll through the list.

If the output consists of only one thing the program will continue immediately (i.e. no need to press Esc).

-------
Better?

2008-04-20 10:24:18

Sounds good so far.

Small idea, most users of "screen reader" software are used to using the control key for what they call "interrupt speech". using control or a similar key might be a little more natural than escape I'm thinking, and would allow you to use escape for in game menus or exit and so on.

cx2
-----
To live by honour and to honour life, these are our greatest strengths and our best hopes.

2008-04-20 14:25:52

Personally, I was thinking esc as a natural key to quit a list view, rather than of esc as a speech interupt, sinse it effectively stops displaying of the list and goes back to normal mode, ---- when I use the various list utilities in hal, escape is used to quit those,  ---- but this might jst be a matter of opinion, and either way will just require practice, ---- especially as sinse this would make the game self-voicing, no screen reader would be needed to play anyway.

I deffinately like the commands idea, and enter as a targit tyle command is a very nice idea sinse it would make ranged combat and spell casting very easy.

for the actual commands to play the game, I can see the advantage of a simpler ui with fewer commands, but in navigation as I said, the more specific information is quickly available to the player, the better.

I think a general way of making roguelikes self-voicing would be really welcome, as interpreting aski graphics with a screen reader isn't something I've ever found easy. But with the tactical curser working in a game, you'd only need to make the status messages and lists such as inventory, spell list etc output to a tts system, and perhaps add one or two extra messages for clarrification (such as those relating to enemey movement), and you've got an adaptive system which would make any roguelike a self-voicing accessible game I think, which would be a very good thing indeed.

With our dreaming and singing, Ceaseless and sorrowless we! The glory about us clinging Of the glorious futures we see,
Our souls with high music ringing; O men! It must ever be
That we dwell in our dreaming and singing, A little apart from ye. (Arthur O'Shaughnessy 1873.)

2008-04-21 01:23:35

Small idea, most users of "screen reader" software are used to using the control key for what they call "interrupt speech".

Ok, ctrl now interrupts speech while esc works as a general "close" command. Closing a list implies interrupting the list output. I think that is a good solution.

I think a general way of making roguelikes self-voicing would be really welcome, as interpreting aski graphics with a screen reader isn't something I've ever found easy.

Well, it isn't easy! wink
I am amazed that some people actually play roguelikes that way.

But with the tactical curser working in a game, you'd only need to make the status messages and lists such as inventory, spell list etc output to a tts system

Yes, once the map reading / locating stuff issue is solved converting the rest to an audio interface is trivial. I mean, things like inventories and spell lists translate smoothly to audio menus. However "trivial" does not mean 'no effort required'. None of the major roguelikes features nicely abstracted UI code IIRC, so you need to rewrite a lot of code. It is doable, though. If the tactical cursor based UI of my Jungle Adventure game manages to prove itself, I will try to push the idea of adding tactical cursor based audio interface support to the major roguelikes. I do not believe that I will have the time and motivation to port any major game, but someone else might.

, and perhaps add one or two extra messages for clarrification (such as those relating to enemey movement)

I doubt that you want a message for every single enemy move. In games like Angband it is not unusual to have dozens of enemies on screen. I do not see how reading through lets say 30 move messages will help you, especially because most of these enemies will not have unique names (i.e. imagine 30 message like "orc moves from 2, 30 to 4, 30").

, and you've got an adaptive system which would make any roguelike a self-voicing accessible game I think, which would be a very good thing indeed.

I think so, too. The major roguelikes are extremly fun, replayable, and complex games you can waste years with. It is to obad that their current interface makes them very hard to play if you are not able to see the ASCII map.

2008-04-21 09:14:35 (edited by dark empathy 2008-04-21 09:17:36)

I must admit, I also really admire people who have the patience to work through aski graphics with a screen reader. As well as warprogue, I've tried nethack and Adom on several occasions, but by the time I've A, worked out where my character is and what's going on (often by going through the aski letter by letter, B, read any status messages, C, looked at the manual to tell me what the aski means and D, looked at the command list to work out what I should be doing a long time has passed indeed, obviously some of this is just the complexity of the game (which is fine), but as I've said elsewhere, I'd much rather be grapling with game complexity and just trying to understand the interface. I really like the idea of roguelikes, ---- especially the random dungeons and items (as someone who loves exploration in games that really appeals to me), and not being able to play them has been quite a pest, so I do think this is an important project.

As you've said yourself, open source is good, and if your code is as transferable as you say, that should drastically cut down the amount of work for someone else adding self-voicing and tactical curser capabilities into future roguelikes.

As rguards status messages, I take the point about enemies. i'd guess most roguelikes (certainly the two I've played), will give out status messages when something tries to attack you, but perhaps adding coordinate information to these messages would help, so that if you've got several enemies around you, you can determine which is the most immediate threat.

For example instead of "the orc swings at you and misses" you get "the orc 3-14, swing at you and misses).

If there are really that many enemies,I can certainly see why enemy movement would be such a pest, but perhaps a message for when an enemy gets to within the detection range of the short tactical curser would be helpful, so that you would be less likely to be sneaked up on, ---- of course, sinse this information would also be available via the e command, you could just leave it up to the player to pay attention, ---- afterall, the tactical curser isn't supposed to make the game too easy.

I would suggest character movement messages though, even if only short ones, something like the character's name and either the number of tyles moved in the appropriate direction, or just the name and movement as in chess notation for example x 30-15, 30-19 (the word moves is optional), and perhaps a "you hit a wall" message as in nethack..

Also, there would need to be some commands for reading and repeating messages in some way. I'd suggest using space to repeat the last message in tc mode, and m to reread old messages. Sinse the player will be going into tc mode each turn, this shouldn't interfere with things too much, and of course frees up the keyboard normally.

I'd also suggest that In tc mode s and shift S should perform similar functions to x for the on screen character status, hp, mp, items currently equipped, dungeon level, time etc so that the player would have an instant way of finding out that infrmation in the same way a sited player can just glance at the top or bottom of the screen.

As far as list navigation goes, i remember nethack and adom had different systems. Adom just had a press single key to choose approach, which if self-voicing would be fine (that was one of the most accessible parts of the game), where as nethack had a system of using a > sign (shift period), as a highlight curser. While the nethack system was indeed a miner pain, and would certainly need a list function where you could use the arrow keys to highlight things and read what was highlighted, the adom system wasn't too bad, ---- though the ability to go through things one item at a time with the arrows in a self-voicing version would be deffinately necessary for speed I think.

I'm certainly looking forward to trying Jungle adventure, and I deffinately hope the system will work and will be ported to other roguelikes, sinse as you say they can be very flexible and rewarding, and I think would bring something incredibly new to the field of audio games.

With our dreaming and singing, Ceaseless and sorrowless we! The glory about us clinging Of the glorious futures we see,
Our souls with high music ringing; O men! It must ever be
That we dwell in our dreaming and singing, A little apart from ye. (Arthur O'Shaughnessy 1873.)