2013-03-11 03:12:51

frastlin,

Currently the only text to speech is SAPI 5.
Craig Brett has offerred to help me get screen reader support through a C# wrapper he has.
I haven't pushed for this as there are some issues with using screen readers.  Namely the problem of knowing when the screen reader has finished speaking the text.
Because this is not possible it makes it difficult to synchronize sounds with speech in certain places.
This may not be terribly important in the adventure game engine, but it was fairly important in Tactical Battle which was where we were first considering it.
I'll have to think about it more for AGE.

I'm glad you like the scripting language.  It is actually just javascript with certain functions exposed through the engine.
Do you know how to code?

It would be pretty easy to include images from the perspective of the engine.
The larger amount of work would be for those creating adventures to find the images they want to include.
This might not be too bad for ShadowGate as it's a port of an existing game that had graphics, although they were from original nintendo so they were pretty pixelated, but that could work well for low vision players.
I don't have enough vision to attempt getting the images for it, and I'm not sure if Nina0116 does either but I'd be glad to add such a feature to the engine so you or someone else could help by providing images.
If you get the images together for it I'll make adding the feature a priority.

The older sample adventures have been removed.  Primarily because they were unfinished and were not going to become finished.

~ Ian Reed
Visit BlindGamers.com to rate blind accessible games and see how others have rated them.
Try my free JGT addon, the easy way to play Japanese games in English.
Or try the free games I've created.

2013-03-11 08:16:48

I would have to take someone's word on how the pictures look too LOL. I have enough sight to get what I'm seeing once it is described, Swamp is pretty easy for me to see, so is Battlion, but I can't see details in Swamp like corpses or zombies and I can't read the text in battlion... LOL But I like seeing the graphics move across the screen.
Couldn't you just have an informational window someone can hit next on when they are done reading with a screen reader?
or like on a mud just have the words scroll with a set amount of time with a past log of what was said?
I've dabbled in BGT and Python, but I have not made anything of quality yet. I made a flash card script in BGT and a super simple RPG game just using if statements, raw input and print functions in Python.
Is Java script anything like Python?
I think it would be neat to make a trading card game thing as well, the problem is there would need to be a connection to the internet and I have no idea how to do that LOL...
I've not really worked with graphics before, but if we wanted movement of the pictures, (making a simple anamation of one guy wacking another guy on the head with a sword would take a lot of pictures in really fast order.

An advantage of having lots of different examples is that I get to see contrasts of how to make a totally new game. I have contrasts. For example, in reading the files under "Data for AG" I have a folder called: menus and those menus are not within the Shadow gate folder, yet they are spacific to shadow gate.
I think it was talked about before, but could there be the main menu and make that just about Age, then under a "adventures" menu there be a list of folder names under the "adventures folder? The shaddow gate spacific refference is fine if we could compile our adventures into their own executable to zip and send to people. But I think it would be way easier if we just had people install Adventure and place our adventures in their adventure folder.
Thanks,

2013-03-11 12:51:31

just to be sure there is a bug with using torches right?  I can't seem to use the ones i have.

2013-03-11 19:20:01

bigdog, no there is no bug with the torches.  To use a torch you need to select either the burning torch, or the unlit torch and use it on the other.  This will light a new torch.  Becareful there is a limited amount of torches in the game, and you will need to keep enough around so you can complete the game.

Want to order food, but can't get out? Try this .
https://postmat.es/Tw5eUTrBn4

2013-03-12 07:46:13

Hello, can a message be on items we have already used, "You have already used that?" Because atm the messages are just silents.
I wonder if it would work to put our own synthasizer into the program? Because Evona or something would be better than Annah. I have no idea how synthasizers work though.
I would love elaquence of course, but idk if that is possible anymore.

2013-03-13 08:16:56

Hello,
I'm wondering if you could write an example of writing an object with some functions or something so we can see how functions are used and handled in Javascript? Or give a link to a very simple guide that talks about the functions you use?
Also, do I really need to specify every variable as a global variable at the start? I've always been told that having so many global variables was not good because it took up too much space at the start and are cumbersom  and just to call the item properties when the room is loaded.
I also want to make sure, x_name() is one name of a function, the x is not doing anything else?
and is the menu that we have in the game, the "inspect, take use..." changeable?
I don't know what that menu is called. (It may just be easier to create my own menu and just call it when the game starts instead.
(BTW, it looks like python and Javascript are super close, I'm not quite sure if there is an advantage of using 1 over another.)
Can you use elif if you have many ifthan statements you want to check for?
if(variable1){
say("we run the first if than statement");}
elif(sky){
say("We run the second statement")
else{
say("we run the else statement")

2013-03-13 14:47:03

the already used thing would be part of the script, so people would have to code it themselves.

Also you don't need to. Say this was code for opening a door.

if(global.door!=1 {
say("The door makes a stereotypical creaking sound as it opens.");
global.door=1;}
else {
say("The door is already open");}

Because global.door isn't initialised, if you do a check for door it won't be equal to 1. So, you just set it to 1 then in future that variable will still work, meaning you don't even need to initialise it equal to 0.

Deep in the human unconscious is a pervasive need for a logical universe that makes sense. But the real universe is always one step beyond logic.

2013-03-13 23:07:56

Frastlin,

Sorry for the long delay in my response.
The informational window someone can hit next on would work, but would of course require them to press next all the time which some people might not like.  I'll think about it though as an option.
I'm not sure how the mud idea helps synchronize sounds when there is a lot of game generated text.
For example in Tactical Battle when the AI takes it's turn it makes sense to play a sound with each action an AI unit performs.
Since there's no way to synchronize sounds all the text would be thrown in the scroll window at once and all the sounds would play at once.

Cool to hear you have some coding experience.

Yes, the menus are still referencing the adventures specifically.  It's on my to do list to make it auto load the adventures so the core engine menu files don't have to be changed to add a new adventure.
This would also mean each adventure would need a settings file to indicate which is the first starting location.
Or perhaps just a function that the main menu can call to load it.

Stewie is right about the already used message, it would have to be handled in the scripts you write for the adventure.

For synthesizers I only know how to do SAPI 5 and potentially screen readers as we've discussed.

Yes, I'm working on a better guide for introducing people to the parts of javascript that the engine uses.
Of course you can always look up general tutorials on javascript as it is pretty much the most widely used language in the world, though many tutorials will use it in the context of a web page, defining functions and using if, else if, and else will of course work the same whether it's in a web page or in this engine.

Stewie is correct about not needing to define all the global variables at the start of the program.
His example would work.
At one point the core engine did not handle clearing out variables when reloading your adventure without restarting the game which I think is part of why Nina0116 set all the variables at the beginning.
That can be handled now by calling loadAdventure on it again.

the x in x_name() is not special, that is a naming convention Nina0116 used.

The menu with inspect, take, use, etc. is not currently changeable.
As you say it might be easier for you to just define your own menu.  I expect the engine will need to support some extra things like giving you a list of objects in the current location or in your inventory.

The current version of the engine was meant to handle more things for the adventure creator and thus limits what you can do a bit more.
But I don't see any problem extending it so that if you want to abandon the existing menus you can just handle it yourself.

On this same note I'd like to say that if you want to do a text based adventure like the MUD you mentioned earlier but single player I'm open to extending the engine to have that kind of text output and input feature.
That would also work better with a screen reader, though maybe the current adventure game engine stuff would also work fine with a screen reader.
All of it takes time of course and it would be good to find out what is important to the most people so I can prioritize the features.

javascript uses the keywords "else if" instead of the elif that python uses.
You can accomplish most anything in most any language so it is difficult to say that one is better than another without bringing large personal opinion and bias into the conversation.
So I won't attempt to say what advantages javascript or python may have over each other.

I will say that writing your own python program versus writing javascript in this game engine does have pros and cons.
One pro of writing from scratch in python is that you can do anything as you are not limited by what this game engine supports or how long it takes me to add new features.
The pro to writing javascript in the game engine is that you get to take advantage of the location and object file formats as well as simple functions for playing sounds, playing music, and speaking text that are defined by the core game engine.

It's kind of like the difference between writing in BGT or DragonFlame versus Python.
BGT and DragonFlame try to help make a lot of common tasks easier and are focused around making audio games where python needs a lot more infrastructure set up before you would get to the actual game coding.

So it's similar here except that the adventure game engine is much more specific than BGT or Dragonflame which makes it easier to get started in this game genre but also limits the types of things you can do since it is not yet as flexible as BGT or DragonFlame are.

As an example I wrote the engine in C# because I have many years of experience in C#.
For me I preferred the flexibility of using a well known programming language and the comfort of using one I am already very familiar with.

If I were just starting out in programming and wanted to make an audio game I would be better off choosing BGT, DragonFlame or AGE as they'd get me into the game logic much quicker and hide a lot of the complex infrastructure.

Hope that helps.

~ Ian Reed
Visit BlindGamers.com to rate blind accessible games and see how others have rated them.
Try my free JGT addon, the easy way to play Japanese games in English.
Or try the free games I've created.

2013-03-14 08:23:12

True, I have no idea how to make my own windows yet that will print and run my scripts. That would be a lot of work...
I have a super good Python guide and have not found a good Javascript guide yet, so I may just complete this python guide as I'm half way through and that way I will understand coding in general lots better. (I'm pretty sure after a while all langwages start looking the same in some respects and you just start using your fav)... Functions are all the same idea and else if are always the same... I'm also pretty sure the lojic is the same too. Also, finishing this guide I will get better at reading manuals from different people which gets me used to programmer talk which is a little hard to comprehend now.
For example, I was looking up the math.random() function and I'm not sure how the sintacts work on that. They started throwing in * (min, max) + (max-min) or something like that and even added in a floor word, so I will need to do some research. Where as in Python you just import random and specify random(5, 10) and you will get numbers inbetween 5 and 10.

What you could do is have tab go to an output window where the past messages are read. And BTW, the text you have is readable by Jaws mostly. The menus just need a little tweeking before they lign up correctly and descriptions need to do what VIP Mud or Swamp do when the text pops up on the screen.
I think what I would like to see next is just the Shadow Gate and other games be totally removed from the adventure ingen explicitly and just a call to the main menu of the game be given.

2013-03-18 03:12:49

Is there a way to get the engine to use NVDA's speech rather than the sapi speech engine? I really can't hear sapi over the music and such on the computer:( nice game so far, though

Master Rahl guide us. Master Rahl teach us. Master Rahl protect us. In your light we thrive. In your mercy we are sheltered. In your wisdom we are hummbled. We live only to serve. Our lives are yours.

2013-03-19 07:52:03

Tern off the music. No, no way to get NVDA to work sad...
Thanks,

2013-03-19 13:26:23

Well, I can barely hear sapi over my computer fan, and general noise in my house. I really don't like sapi, simply because it's so damned quiet:(

Master Rahl guide us. Master Rahl teach us. Master Rahl protect us. In your light we thrive. In your mercy we are sheltered. In your wisdom we are hummbled. We live only to serve. Our lives are yours.

2013-03-21 18:03:31

Join the crowd sad...
I think different countries have different voices? I heard Sam sounded different different places and Ana wasn't the only choice. But I've never been able to get any other voice than Ana.
Thanks,