Re: do you wreckon this has ever happened?
Re: do you wreckon this has ever happened? I have seen this in AngelScript (not just in BGT). As others have stated, fewer users means this is more likely to happen. Though most if not all of the AngelScript bugs I've seen were crashes, assert failures, code compiling that shouldn't (leading to the aforementioned), not actual incorrect code behaviour.That said, Andreas (the author of AngelScript) is really great. He takes bug reports seriously and always responds personally to emails. Plus it's ZLIB licensed, making it a great option for game engines. URL: https://forum.audiogames.net/post/533403/#p533403 -- Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Questions about the resampler from WDL
Questions about the resampler from WDL Hi,Does anybody have experience with the resampler class from Cockos WDL?I've gotten it to work (and I must say it's too bad this isn't more widely known, as a ZLIB licensed implementation of a resampler with sinc interpolation is badass).My questions surround undocumented arguments to some API methods: void SetMode(bool interp, int filtercnt, bool sinc, int sinc_size=64, int sinc_interpsize=32);Okay, so the sinc boolean enables sinc interpolation and overrides the interp and filterc arguments. Okay, cool. But what if !sinc&&interp? What flavour of interpolation is used in that case? Is it linear? or something else?Sinc interpolation makes everything take twice as long, and I can't hear the difference in quality, so I'm wondering what the difference is.What about !interp&&!sinc?This setting sounds quite bad but it's really fast.Filterc, presumably filter count? void SetFilterParms(float filterpos=0.693, float filterq=0.707)It seems filterq is the cutoff for the lowpass, but what is filterpos? It seems to just make the output quieter.Lastly: void Reset(double fracpos=0.0);What the heck is a fracpos?Calling it with the default setting of 0 seems to work fine, but what is this parameter for?Thanks in advance. URL: https://forum.audiogames.net/post/533137/#p533137 -- Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Want to make a game
Re: Want to make a game I haven't worked much with Python, but how do people not get frustrated with the syntax?I would much, much rather count open and close braces while investigating a block related bug than have to make sure every single line has the correct number of tabs. URL: https://forum.audiogames.net/post/408040/#p408040 -- Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Want to make a game
Re: Want to make a game I haven't worked much with Python, but how do people not get frustrated with the syntax?I would much, much rather count open and close braces while investigating a block related bug than have to make sure every single line has the correct number of tabs. URL: https://forum.audiogames.net/post/408039/#p408039 -- Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Want to make a game
Re: Want to make a game The help file is in the program folder. BGT help in the programs menu.Or press Windows and start typing but help and it'll probably come up. URL: https://forum.audiogames.net/post/407388/#p407388 -- Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Want to make a game
Re: Want to make a game This is quite a broad and sweeping question.There are a lot of guides on the internet which are geared towards beginner programmers. They will seem incredibly intimidating at first but once you get the basics down you'll be able to read material online and find that it makes a lot more sense.If you can find someone who is willing to mentor you at first, you're going to find that very helpful as it'll allow you to ask questions when you don't understand things.I'm sure you've heard of BGT; it's a tool for programming audio games. While it might not be the most current technology anymore, it's a great place to start. It's packed full of documentation designed for people who have never written a line of code in their lives. Also, since it's designed specifically for the purpose of game development, you'll be able to do key tasks fairly quickly, which should help with motivation.There are resources online like code academy, which will give you specific exercises to help you learn programming concepts.It's a long rode no matter who you are. The best advice I can give is never bite off more than you can chew. Don't start with a big RPG or first person shooter, it's just not realistic and you'll get frustrated. Learn the basics, try simple exercises or make up your own to build up your skill, then strive for something more ambitious.Something like Rock Paper Scissors might be a good goal for your first few days/weeks. Then maybe you work your way up to something a little bit more complicated (a simple battleship game?) and then go from there.Keep in mind that game development is not just about coding, and if you plan to sell your game it might be worth paying someone to do things you don't have the nohow to do. You may have all of the following to worry about: programming, sound design, writing, music and voice acting.I wish you well. It's not an easy rode, but it's well worth the effort. URL: https://forum.audiogames.net/post/407102/#p407102 -- Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: what's wrong with this bgt code?
Re: what's wrong with this bgt code? The last sequence of +"" is unnecessary.alert("answer","your answer is"+result);is sufficient.Unless of course you want to add a period at the end of the sentence:alert("answer","your answer is"+result+".");and I don't think that BGT is stupid.It's dated, it needs to be updated to support more than just Windows, but it is a great tool for teaching programming to beginners because it can make you feel that you are accomplishing big things fairly quickly. It's all psychological, but I should think that being able to do something fairly significant like play an audio file or even have a character moving around on a game map with just a few lines is something that helps keep motivation up while learning.If it could run on Mac and supported HRTF it would more or less be cutting edge technology again. URL: https://forum.audiogames.net/post/407077/#p407077 -- Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Does holding sounds in memory make sense?
Re: Does holding sounds in memory make sense? The first time you load a sound, BGT decodes and decrypts the sound as necessary and stores it in memory. If you then create another sound object and load the same sound with it, BGT knows this is what you're doing and so you get a second sound object which simply points to the previously loaded sound. This way you don't reload sounds (ogg vorbis decoding, decryption and disk I/O are heavy duty tasks) and you don't double the amount of memory consumption.Some ideas for doing this in C++:Create a class which can store a pointer to some raw memory, the size of that memory buffer and an atomic reference counter.Use an unordered map which stores references to instances of this object as values and sound file names as keys.When load is called on a sound object, check to see if the provided filename has already been entered as a key into that dictionary. If it has, pull that instance and point your sound object's reader head at the already prepared audio bytes in that object. Otherwise, load the sound, create the preload object, add it to the map under the sound filename and point your sound object at the newly created data. Either way, atomically increment the preload object's reference counter.When the sound is closed, decrement the preload object's atomic reference counter. If it reaches 0, remove it from the preload map and destroy it.In BGT, if you load two different files containing the same audio data (even if they are files with the same name in different locations), BGT loads them separately.To do otherwise would require hashing or some other means of comparing the two files to insure they are the same, which would negate much of the performance gain earned by doing this in the first place. URL: http://forum.audiogames.net/viewtopic.php?pid=343661#p343661 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: What happens if you try to put bgt object variables into dictionaries?
Re: What happens if you try to put bgt object variables into dictionaries? Try it. You'll find out exactly what happens.I think the serializer would give you an empty string back if you put things in there that can't be directly serialized.The easiest way to serialize collections of objects is to add a serialize method to your objects which takes a handle to the target dictionary and some kind of identifier (which could be simply the object's position in some actor array).That way you can right stuff like:void serialize(dictionary@ destination, int id){destination.set("char"+id+"_health", health);destination.set("char"+id+"_atk", attack);//...//...}The same needs to be done for deserialize. This avoids having to write string parsing functions. URL: http://forum.audiogames.net/viewtopic.php?pid=343657#p343657 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Making the Legend of Zelda Ocarina of time accessible to the blind
Re: Making the Legend of Zelda Ocarina of time accessible to the blind Have you done any other programming before?If not, you should start with the language tutorial and work your way through it step by step, typing out the examples yourself, making sure you understand them before moving on and even trying your own experiments as examples.It'll take some time before you'll get up to a point where you can do something this ambitious, but it's definitely not impossible.If you're having trouble you can reach out to me on Skype and I can try and help you through some of it. My Skype is morpha32. URL: http://forum.audiogames.net/viewtopic.php?pid=338689#p338689 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Making the Legend of Zelda Ocarina of time accessible to the blind
Re: Making the Legend of Zelda Ocarina of time accessible to the blind I know the game fairly well for a blind person. In 2008 - 2010 I got a group of friends mostly from the speed running community to write instructions for me which allowed me to clear all of the maps, and I could already do the boss battles with sound alone.I don't know how much that text would help you to get a solid picture of how things are laid out (to be honest I didn't really care so long as I could complete it) but I could send it to you.I have no idea what most of the rooms look like but I have a pretty good understanding of how the dungeons go and especially the boss fights. URL: http://forum.audiogames.net/viewtopic.php?pid=338663#p338663 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Accessible Forum Software Packages
Re: Accessible Forum Software Packages MyBB isn't bad either. URL: http://forum.audiogames.net/viewtopic.php?pid=325827#p325827 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Help Please: Any BGT Devs
Re: Help Please: Any BGT Devs Hey @JLove.I remember chatting with you about this a year or so ago.Here's the deal: you will never get timers to synchronize between multiple machines. There are just way too many factors: what else the machine is doing at the time, network latency, etc.If your physics are reliant on the value of a timer, then whomever is the host is going to need to send their timer values to the guest so that the guest can force() their timer to be correct.Nevertheless you'll have to be able to accommodate some margin of error here. URL: http://forum.audiogames.net/viewtopic.php?pid=319492#p319492 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: write a variable to a file and read it back in bgt
Re: write a variable to a file and read it back in bgt Here's an alternate approach which does the reading and writing using dictionaries and the serialize/deserialize functions. When games start to get big, and need to save a lot of variables of different types, this is inevitably what you'll need to start using.// a small script to write some variables to a file, and then read them from said file// by Nathan Tech//Alternative approach by Trajectoryint number1=2395; // our first variable. Change this to what ever you like.int number2=3344; // our second variable, change this to what ever you likevoid main() {show_game_window("The read write variable program with no purpose. By Nathan Tech."); // the games window message. We probably don't need this, but might as well have it anywayalert("hello, oh almighty user!","did you know that number1="+number1+" and number2="+number2+"? Isn't that great?"); // a simple ok button to show the user what the variables aresave(); // save the variables to a file in the save function, see void savealert("saved!","WE've saved the variables, lets load them back!"); // another alert function, because you can never have too many of thoseload(); // load up the variables, see void loadalert("[[wow]]!","Well would you look at that! number1="+number1+" and number2="+number2+"! woo!"); // display what number 1 and number2 are nowexit(); // we're done}// save function nextvoid save() {file f; // our file objectf.open("MyFile.txt","wb"); // opens a file called MyFile.txt with the parameter "wb", meaning we are writing to the file in binary mode. Since dictionary output may contain characters which cannot be printed ("binary" characters), we have to add b to the mode string (the second argument to open), so it's "wb" instead of "w".dictionary d;//a dictionary to store our variables while we prepare them for output.d.set("number1", number1);//save the value of number1 to the dictionary under the key (name) "number1".d.set("number2", number2);f.write(serialize(d)); // the serialize function automatically takes care of turning our variables into one string which can be written to the file.f.close(); // close the file// we're done}// load the variablesvoid load() {file f; // our file objectf.open("MyFile.txt","rb"); // open up MyFile.txt, but this time, give the parameter "rb", so as to read from the file in binary mode.string result; // this will be the result of our reading from the fileresult=f.read(); // read the contents of MyFile.txt, and store it in the string we declared above called resultf.close(); // we don& #039;t need the file open, so lets close thatdictionary d = deserialize(result);//turn the contents of result back into a dictionaryd.get("number1", number1);//retrieve the data stored under the name "number1", and copy it to the variable called number1.d.get("number2", number2);// we're done} URL: http://forum.audiogames.net/viewtopic.php?pid=310363#p310363 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: bgt, what the crap. That is a method!
Re: bgt, what the crap. That is a method! do is a keyword for a looping construct. It can't be a method or variable name. URL: http://forum.audiogames.net/viewtopic.php?pid=307519#p307519 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: bgt walktimer code
Re: bgt walktimer code Run a timer. You can check how much time has passed like this:void main(){timer mytimer;show_game_window("timer test");while(mytimer.elapsed < 5000)//millisecondswait(5);}What does this do? Creates a timer, watches it until it reports that 5000 milliseconds (or 5 seconds) have passed and then quits.Now let's look at the movement side of things. Let's say you have a player class like this:class player{int x_position;int y_position;timer movement_speed;void move(){//Check if movement_speed.elapsed is greater than the interval at which you want to move.if(movement_speed.elapsed >= 250)//four steps per second, about the step interval of human running.{//do your checks here.if(key_pressed(KEY_UP))walk(forward);//forward should be defined as a const int.//...}}//and here's where you might handle walki ng itself.void walk(int direction){if(direction == forward){y++;//geometry. If you're moving up and down you're moving along the Y axis. If you're moving left and right you're moving along the x axis.//code to play footstep sounds goes here.//...} }}Of course this isn't complete and working, but it should give you an idea of where to start. There's more to it if you want to make a complicated game, like checking where the player is trying to step and making sure it can actually step there (for instance, making sure you can't step inside a wall). URL: http://forum.audiogames.net/viewtopic.php?pid=306282#p306282 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Fund the Future of Accessible Gaming
Re: Fund the Future of Accessible Gaming @slj yeah, was thinking the same thing. As a developer I understand what this is about, but it might be difficult to sell something to non-developers that isn't tangible to them or that they can't relate to.I think you should make a teny tiny little game or something that would serve as a concept demo, like a simple space invaders but using 3d audio.I was also thinking that you might have some success marketing this to people outside the vi community as well, as your problem domain extends into 3d game and audio application development in general. You never know, you might generate some mainstream interest (like Elias did). Plus I'm not sure that there are enough people here alone to bring you to your goal.Myself I want to contribute. Gofundme insists on a postal code and I'm not sure how I feel about publishing that for all to see. URL: http://forum.audiogames.net/viewtopic.php?pid=305390#p305390 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Fund the Future of Accessible Gaming
Re: Fund the Future of Accessible Gaming Shouldn't this be in general?By the name I thought we'd be talking about kickstarting infrastructure which would help murge accessibility into the mainstream. I'd have been literally the first person to jump in and back that haha. URL: http://forum.audiogames.net/viewtopic.php?pid=305362#p305362 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Please help me with bgt
Re: Please help me with bgt Why not? Populate the menu with the names of the maps in the order that they're found and they'll directly correspond with indecies into the array returned by find_files.The run and run_extended methods return the selection made by the user as a number and you'll be able to use that to determine which map was selected and open it for editing. URL: http://forum.audiogames.net/viewtopic.php?pid=305358#p305358 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Please help me with bgt
Re: Please help me with bgt Create a dictionary object.Loop through your map and insert each square into the dictionary with a key name which corresponds to the location on the map. For example, the index map[0][0] might be stored in the dictionary under the key "map[0][0]". This way you can easily determine from within your loops what the names will be based on the loop counter. For instance, if your outer loop counter is called x and your inner loop counter is called y, then the keyname is like string key="map["+x+"]["+y+"]";Once all of your squares are in the dictionary it's time to serialize it. Use the serialize function and it will return a string containing everything you just saved. Create a file object, open the file previously requested by the user and stored in a string somewhere and write out the contents of the string you got from serialize. If you wanted to encrypt the maps you would use string_encrypt on the serialized string before writ ing it to the file.To load it back in you perform the steps in reverse. Open the previously saved file for reading, read it into a string, decrypt if necessary, use the deserialize function to get it back into a dictionary, then loop through the empty (but correctly sized) map array and load the values in one-by-one.This takes care of saving and loading. You can ask the user what file they want to save to using input_box or some other means of capturing input.As for automatically displaying previously saved maps in a menu, you're going to want to use the find_files function to search a directory for files with a given extention. something like string[] maps = find_files("maps\*.map");If what you want is to search the user's entire computer... I strongly advise against this as it could literally take minutes and could come up with lots of false positives.So just have the user specify a directory where they want to store maps, and use find_files to search that directory for appropriate files and populate a menu with the results. URL: http://forum.audiogames.net/viewtopic.php?pid=305301#p305301 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Please help me with bgt
Re: Please help me with bgt Here's a rough idea for you:Create a map class that:*holds a two dimentional array with enough space to store a number for each tile which will exist in your map. So if your map is 100 by 100 squares, then you'll create an array of 100 arrays, each containing space for 100 integers representing what is found at that location (wall, grass, stone, etc).*A method which can tell a player, npc, enemy or other actor class whether or not it's possible to walk on the requested square. For example: if(map.getTile(x, y) != WALL) stepTo(x, y);*A method which can save the contents of the arrays to a file. This is one of the tricky parts but it can be handled in a few different ways. You can use BGT's dictionary and serialize/deserialize functions to do a lot of the heavy lifting, which will be fast but it'll output rather large map files unless you can get creative with how to represent your data (I'd just get something working first befor e you worry about this).*A method which can load the saved data back into the arrays in the exact same way it was originally stored.As it sounds like you're just starting out with BGT, remember as you learn that programming is really about taking large problems (like how do I create a map) and breaking them down into many, very small sub-problems.To give a real world but simple example: lets say the (big) problem we want to solve is, how do I eat a slice of pizza? Now let's break it down into smaller steps:*Lift hands.*Locate plate which contains pizza (which in itself could be broken down into many steps).*Move hands to previously discovered location.*Lower hands until they touch plate.*Grasp hands around pizza.*Lift hands again.*Move hands to location of mouth.*Open mouth.*Use teath to grasp pizza.*bite.*open and close jaw until pizza is reduced to tiny pieces.*swallow.*repeat until finished.This is the way in which you need to think about programming tasks in order for them to seem less daunting.so to give you general information:Make sure you understand how to work with arrays (access them, loop through them, resize them, etc). Make sure you know how to use the file and dictionary objects (or objects in general). and feel free to ask when you're stuck. This way, big picture problems like what you're trying to solve will start to make more sense. URL: http://forum.audiogames.net/viewtopic.php?pid=305165#p305165 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Psycho Strike sounds
Re: Psycho Strike sounds Why would buying a copy of the game net you source code and unprotected resources?This is like asking, if I go to Macdonalds and buy a Big Mac, do I get the recipe?If you were given this information, you could go on to distribute unlimited free copies of the game to other people, effectively denying the developers any kind of payoff for their hard work.All this does is insure that there will be fewer good games made in the future, so I really suggest you stop and think twice about what you're actually trying to do. URL: http://forum.audiogames.net/viewtopic.php?pid=303852#p303852 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Psycho Strike sounds
Re: Psycho Strike sounds What do you mean by "bgt script letter"?BGT has encryption and decryption built in, but that doesn't mean that other people can decrypt sound packs we didn't create just because we know the language.Some of the sounds are from commercial libraries. Those would be the only ones you'd have a shot at finding but you'd have to buy them for yourself.The voice sets and at least some of the music is custom made. You won't get that. Nobody on this forum will know the keys either. URL: http://forum.audiogames.net/viewtopic.php?pid=303739#p303739 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Is it me or is bgt really terrible with memory consumption
Re: Is it me or is bgt really terrible with memory consumption This isn't about keeping the chosen encryption algo a secret. and by no means do I intend to attempt my own crypto scheme.My previous post probably wasn't very clear as I wrote it late at night when I really should have been sleeping. but I was referring more to such things as the master keys used to encrypt/decrypt the compiled byte code from the script compiler.Though it's encrypted, the key has to be stored within the executable and hidden via what boils down to security through obscurity.Though this is by no means immune to cracking (you could potentially find the obfuscated key in a memory dump and put the pieces together), having the method -- whatever it may be -- opened to the public would make people think twice about compiling commercial games. and even with a scheme which involved changing the internal key with each game compilation, the relevant section of code will still reveal where and how the sensitive data is stored.This migh t all be academic if I never get around to finishing, but this was the initial concern. URL: http://forum.audiogames.net/viewtopic.php?pid=303736#p303736 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Is it me or is bgt really terrible with memory consumption
Re: Is it me or is bgt really terrible with memory consumption @Ethin I'm not sure yet.I want commercial BGT game developers to feel comfortable porting their games over, which means that the manner in which the engine encrypts compiled bytecode and other resources has to be as well-protected as possible.I could probably get behind the idea of an open source version with a few sensitive features excluded, but if you wanted to use that to compile protected work you'd have to add most notably encryption back in yourself. URL: http://forum.audiogames.net/viewtopic.php?pid=303026#p303026 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Is it me or is bgt really terrible with memory consumption
Re: Is it me or is bgt really terrible with memory consumption Just my $0.02:BGT is a bit of a love/hate thing for me.BGT is fine with memory usage, but it's shortcomings really show when it comes to other resource usage. BGT is slow for a number of reasons:First, There is clear evidence that BGT is processing window events from the operating system in the same thread as the virtual machine is running. As far as I'm concerned, communicating with the operating system should be done in the program's main thread, and the game engine should be running in a second thread. This adds a bit of code complexity when the game engine tries to update the window, since you can't modify a window from a thread other than the one that created it you have to queue events for the main thread to process.This would result in a fair performance improvement as window events can be time consuming.Secondly, since BGT hasn't been updated in some time it's built on quite a dated version of AngelScript. AngelSc ript is a really kool product, but it's major struggle over the years has been surrounding array access overhead. This has been improved in recent updates, but BGT can't take advantage of the improvements unless it's updated.I've been slowly but surely working on what is essentially a BGT clone that will run much faster, run on more platforms than just windows, use the same script APIs as BGT so that porting games will be a walk in the park and offer a few more features which audio games really need. Unfortunately time constraints have kept things moving at a crawl, but I can already tell you that a lot of scripts run several times faster in my work in progress engine than they do in BGT. and since my engine will run on Linux I can use the wonderful Valgrind to detect a lot of stability problems before they are ever experienced by the public. (BGT used to hang and crash a lot, but to be fair I haven't seen it hard crash once in easily over a thousand c ombined hours of Manamon and Paladin playing).Back to the topic at hand:I'm sure your Z dimention doesn't need to be nearly as big as your X and Y dimentions. Even if you're portraying outdoor areas where there's virtually infinite space above the player's head, you shouldn't need to represent any more of the Z dimention than what the player can jump or climb to? This might be a great way to get memory consumption down.You definitely want to use integer constants instead of strings to represent tile types. Doing this much string comparison is going to result in a huge performance issue as soon as there are more objects than just the player moving around.and I would definitely stick to arrays when it comes to maps. Dictionaries are designed for fast lookups by name, but nothing can outperform true random access offered by a contiguous block of memory. URL: http://forum.audiogames.net/viewtopic.php?pid=302251#p302251 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Psycho Strike sounds
Re: Psycho Strike sounds You'd have to know the secret key that was used to encrypt them. Since you don't know that, you can't decrypt them. That's the point of encryption, to protect them from unauthorized access. URL: http://forum.audiogames.net/viewtopic.php?pid=300320#p300320 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: BGT help please.
Re: BGT help please. I wouldn't use MS Word; it's not designed for programming and will likely add formatting and other garbage which will cause problems for the script interpreter. You can simply use Notepad and save the files with a .bgt extention.The files do not have to be in BGT's install directory; you can simply hit enter on the script file to run it, or right-click (press applications) for more options. URL: http://forum.audiogames.net/viewtopic.php?pid=266695#p266695 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: BGT help please.
Re: BGT help please. @Nibar honestly the BGT manual is probably the best you'll find. It explains everything in detail from the basics of programming all the way to building and optimizing a game. You should be starting with the language tutorial, not the reference section. Take your time, don't copy and paste examples (but actually write them out) and feel free to ask questions when you don't understand something.Don't be discouraged if it takes you several months (or more) to really get the hang of it. URL: http://forum.audiogames.net/viewtopic.php?pid=266646#p266646 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: reducing lag in a bgt game?
Re: reducing lag in a bgt game? As Lukas said, you should have exactly one wait() call per cycle of your main game loop. In addition, here are a few other things that may or may not help you, depending on the design of your game:Turn off sounds that are too far away from the player to be heard. The sound_pool class can take care of this for you, but if your game doesn't use that you'll have to handle this yourself.Load your sounds instead of streaming. Streaming is fine for music and things which interrupt gameplay like cutscenes, but don't stream enemy sounds, footsteps, or anything else you plan to play frequently.Use the preload feature. If you load a sound in to memory and keep the object alive, the next time you load a sound object with the same sound it'll be loaded from a copy of the original sound in memory instead of reading and decoding the file from disk again.Limit the amount of work you do with strings. Strings can be very slow. When entities in your game must be identified by name, use constants instead of string names.You could also try reducing the frequency at which you loop through enemies to only the maximum frequency at which the enemies are allowed to act/move. For instance, if your fastest enemy moves once every 200 milliseconds, then there's no need to loop through them on every main loop cycle as most of the time none of them will be allowed to act anyway.Profiler results can be very helpful as they can tell you which parts of your code the cpu is spending most of it's time on.Lastly, speed is sadly not BGT's strongpoint. You won't get as much performance out of it as you might get from native code that doesn't run in a VM. Angel Script has been optimized further, but BGT is built using quite an old version. 60 + enemies on a computer with the specs you describe might simply be hoping for too much. URL: http://forum.audiogames.net/viewtopic.php?pid=266591#p266591 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Hosting a BGT game on a linux server?
Re: Hosting a BGT game on a linux server? Using Wine or running a Windows virtual machine on top of Linux would be your only options to theoretically make this work. At that point you're talking several layers of virtualization which is likely to render the setup too slow for practical use anyway (if it even worked at all). BGT isn't particularely fast to begin with so I can't see high volumes of concurrent connections working out very well even if it were running in a native windows environment. URL: http://forum.audiogames.net/viewtopic.php?pid=264901#p264901 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: a BGT game contest!
Re: a BGT game contest! You should know that Blastbay (the developer of BGT) ran a contest like this officially a number of years ago. It didn't go particularely well in that out of the 12 individuals who entered only three actually submitted something. The contest period was two months and the prize was a copy of BGT Pro Unlimited (back when BGT was not free) which was, if memory surves, about a $400 value.To be honest, and I mean no offence, but it sounds like you may have motives beyond just wanting to run a contest for the fun of it. Why such a long time period? Why such a small size restriction of 40 mb? It'd take just a few music tracks to put you over that. You're going to get little tiny arcade style games, in which case five months is way too long.Do your perspective contestants retain full ownership of their intellectual property such that they can do with it as they please after the contest is over? I think you need to elaborate on why you want to do this and what yo u expect to get out of it. The BGT competition I mentioned earlier was done officially by the developer of BGT itself in order to promote the engine. URL: http://forum.audiogames.net/viewtopic.php?pid=264452#p264452 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Let's talk about audiogame development environments
Re: Let's talk about audiogame development environments To above person talking about game maker: I had to use it in my college semester 1 fundamentals of programming course and let's just say needed a lot of help. You can use gml (code) to get around a lot of the gui but you'll still run in to usability issues. Then there's the fact that the audio support isn't particularely good (see object panning in Braillemon for an example). I too am working on an audio game library in c++ for my own use (for now anyway) which uses SDL under the hood. I just needed a feature set similar to that of BGT just without being limited to Windows. URL: http://forum.audiogames.net/viewtopic.php?pid=237866#p237866 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Some questions aboug bgt
Re: Some questions aboug bgt Events as in scenes and such?Perhaps you could place them on the map. For instance, you probably have a 2D array to represent your map, where you can walk and where you can't, etc. Perhaps you could add a secondary array the same size as your map which contains either some offset in to an array of event classes (or handles to event classes) on the squares for which events should trigger? This way when you take a step, you check that array and if an event should trigger where the player is standing, you fire it. Another approach is to just have an array of event classes which contain properties like their X and Y position and some active status flag. When the player moves you loop through them and activate if needed.int events_length = events.length(); for(int I=0;i= events[i].left_edge&&player.x <= events[i].right_edge&&player.y >= events[i].bottom_edge&&player.y <= events[i].top_edge&&events[i].active) { events[i].trigger(); } }Lots of conditions, but only one if. You could wrap some of those checks up in a function if you want cleaner code but that's the general idea. URL: http://forum.audiogames.net/viewtopic.php?pid=223909#p223909 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Hi all, Can somebody help me with this?
Re: Hi all, Can somebody help me with this? Oh yeah, I forgot all about that crazy string concatenation in PHP.What I have is a dedicated server running Linux. I think you'd have more problems with your Windows VPS approach than it'd be worth anyway. First thing's first, you'll be facing a meriad of accessibility challenges. It's not like you can just fire up Remote Desktop and use Jaws. You need a special kind of Jaws license to be able to use it in a remote desktop session and that license is pretty expensive. I don't know about the other screen readers, maybe there's one that works well with Remote Desktop. I know what I'm away and have to fix something on my grandmother's machine I have to use team viewer and fumble around with memorized keypresses in order to get a Jaws Tandum session up and running. Alas, good luck getting your host to set all that up for you. Furthermore, many servers don't have audio output anyway. Even if you did manage to get it all working I don't see how it'd be worth it. BGT just isn't the tool for a server. It would take relatively few clients to really slow it down especially on a small VM.I'd be willing to provide you with some space, if you'd like (email or private message me).If your folks would be able to pay something like $30 for a year I'd be perfectly happy with that. If not we can work something else out (maybe I can have you beta test for me or something). URL: http://forum.audiogames.net/viewtopic.php?pid=222361#p222361 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Hi all, Can somebody help me with this?
Re: Hi all, Can somebody help me with this? Not being able to use $_POST sounds weird to me. Not being able to mod php.ini makes perfect sense though. On free hosting (or even paid shared hosting) the host cramps as many people as is physically possible on the same server in order to keep costs down. They couldn't allow any one user to make server wide configuration changes, and you probably don't have a full fledged hosting account.To be honest, text files really aren't the way to go anyway. If you're serious about this you should really invest the time to learn SQL and put together a server side solution which uses a database and PDO.I wouldn't use the MySQL_* functions that the many old php and sql tutorials online suggest as those make it really easy to write code with huge gaping security holes.I too would be willing to nagociate something with you as far as some hosting goes. As long as you don't plan on using a ridiculous amount of resources I don't see it being a problem. URL: http://forum.audiogames.net/viewtopic.php?pid=38#p38 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: bgt functions for sharing
Re: bgt functions for sharing Hello,That feature is already built in to the engine. I talked Philip in to adding it a couple years ago. It's called hex_string_to_number(int) but it might not be in the documentation. URL: http://forum.audiogames.net/viewtopic.php?pid=34#p34 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Classes, constructers, and destructers?
Re: Classes, constructers, and destructers? What specifically confuses you about the concept of a destructor? Destructors in BGT have incredibly few use cases because it's a completely managed development environment where all the housekeeping is done for you behind the scenes. The garbage collector takes care of freeing up any resources that might have been borrowed from the operating system in order to create your object.The only use case I can think of is this: perhaps your game uses something like sound pool (for instance), and your class, which is an enemy, inserts it's sound in to the pool when it gets created (by the destructor). Now when the enemy is defeated by the player (or otherwise no longer needed), perhaps you might implement a destructor which remove's the enemy's sound from the pool and maybe even plays it's death sound. There it's being used as a convenience feature but it doesn't have the implications it does in more conventional programming wherein resource alloca tion and deallocation is a concern. URL: http://forum.audiogames.net/viewtopic.php?pid=221376#p221376 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Classes, constructers, and destructers?
Re: Classes, constructers, and destructers? Can you give a bit more information about how your board and your items are implemented? Generally speaking it's just a matter of deleting an item in an array... but depending on the way the game has been designed there might be another step like changing some property of another object to tell a different part of your game about the loss of your item. URL: http://forum.audiogames.net/viewtopic.php?pid=221372#p221372 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Classes, constructers, and destructers?
Re: Classes, constructers, and destructers? A destructor is a function that gets called immediately before your class is destroyed (removed from memory).In general programming you'd usually use it to do such things as close files, database or network connections or other resources your class might have created during it's lifetime. To be honest it's not too often that you'll have to do any kind of explicit teardown in BGT. To declare a destructor for a class called test, you do the following:~test(){//code you want to run before your instance dies goes here.} URL: http://forum.audiogames.net/viewtopic.php?pid=221359#p221359 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Resampling?
Resampling? Hello,Okay, so it seems I totally underestimated the complexity of "downsampling" pcm data.Since I have to mix all of my audio in one place and feed it to a single playout mechanism, I've been trying to achieve resampling functionality for (1) dealing with audio files that are sampled differently from my system's native sample rate and (2) (unfortunately) having to use it for handling pitch fluctuation.Within an hour or so I managed to get something that gets the size and speed of the new audio data exactly correct, but the high frequencies are distorted (I'm assuming this is aliasing)?As of now, I'm just calculating how many samples would have to be removed per second given the source and requested rates, then from there calculating a fraction so to know to delete one out of every N samples.Is anyone able to comment on how the filters work which prevent this kind of distortion or point me to some resource that helped you understand it?This is what I have thus far:short* downsample(short* src_data, int src_size, int src_rate, int channels, int dst_rate, int* dst_size){ float div = (float)src_rate / dst_rate; int target_size = src_size / div;//this computes the number of shorts required to hold the result. *dst_size = target_size;//return output size value. short* result = new short[target_size]; memset(result, 0, target_size * 2); float interval = (float)dst_rate / (src_rate - dst_rate)*2;//this computes the number of sample groups (1 times the number of channels) which are to be kept before one is to be dropped short* src_pos = src_data;//keeps track of where in the source data we're drawing from. short* dst_pos = result;//keeps track of where in the destination buffer we're writing to. float tracker = interval;//keeps track of deletion intervals. for (int i = 0; i < src_size / 2; i++) { if (tracker > 0) { for (int x = 0; x < channels; x++) { *dst_pos = *src_pos;//copy one short from source to destination. dst_pos++; src_pos++; tracker--; } } else { tracker += interval;//+= used because in terval is not a hole number, so sometimes copy ceil(interval) and other times copy floor(interval) to maintain averages. src_pos += channels;//skip copying (2Channels) samples. } } return result;}What I really don't understand about this is that if I'm downsampling by 50 percent (where every other sample per channel is being dropped), I don't hear any distortion in the result; however, lowering from say 44800 down to 44100 (where only one out of every 22 ~ 23 samples are being dropped) results in high frequencies sounding distorted.I can provide some test audio if interested,but what do I have to do to accomplish this cleanly?Thanks. URL: http://forum.audiogames.net/viewtopic.php?pid=199705#p199705 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Resampling?
Resampling? Hello,Okay, so it seems I totally underestimated the complexity of "downsampling" pcm data.Since I have to mix all of my audio in one place and feed it to a single playout mechanism, I've been trying to achieve resampling functionality for (1) dealing with audio files that are sampled differently from my system's native sample rate and (2) (unfortunately) having to use it for handling pitch fluctuation.Within an hour or so I managed to get something that gets the size and speed of the new audio data exactly correct, but the high frequencies are distorted (I'm assuming this is aliasing)?As of now, I'm just calculating how many samples would have to be removed per second given the source and requested rates, then from there calculating a fraction so to know to delete one out of every N samples.Is anyone able to comment on how the filters work which prevent this kind of distortion or point me to some resource that helped you understand it?This is what I have thus far:short* downsample(short* src_data, int src_size, int src_rate, int channels, int dst_rate, int* dst_size){ float div = (float)src_rate / dst_rate; int target_size = src_size / div;//this computes the number of shorts required to hold the result. *dst_size = target_size;//return output size value. short* result = new short[target_size]; memset(result, 0, target_size * 2); float interval = (float)dst_rate / (src_rate - dst_rate)*2;//this computes the number of sample groups (1 times the number of channels) which are to be kept before one is to be dropped short* src_pos = src_data;//keeps track of where in the source data we're drawing from. short* dst_pos = result;//keeps track of where in the destination buffer we're writing to. float tracker = interval;//keeps track of deletion intervals. for (int i = 0; i < src_size / 2; i++) { if (tracker > 0) { for (int x = 0; x < channels; x++) { *dst_pos = *src_pos;//copy one short from source to destination. dst_pos++; src_pos++; tracker--; } } else { tracker += interval;//+= used because in terval is not a hole number, so sometimes copy ceil(interval) and other times copy floor(interval) to maintain averages. src_pos += channels;//skip copying (2Channels) samples. } } return result;}What I really don't understand about this is that if I'm downsampling by 50 percent (where every other sample per channel is being dropped), I don't hear any distortion in the result; however, lowering from say 44800 down to 44100 (where only one out of every 22 ~ 23 samples are being dropped) results in high frequencies sounding distorted.I can provide some test audio if interested,but what do I have to do to accomplish this cleanly?Thanks. URL: http://forum.audiogames.net/viewtopic.php?pid=199705#p199705 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: problem in the code on bgt
Re: problem in the code on bgt You haven't given us enough information to be able to help you. You've indicated that there's a problem, but not what you're trying to accomplish.For starters, play_wait is probably not what you want. It plays the audio and stops the program dead until the audio finishes playing. Your key_pressed check won't work for this reason.Also, you really don't want to be calling main from within your game loop. The program has to keep a running log of all the functions that have been called, so when the latest function returns the one that called it can resume from the point at which it left off. This is called a call stack, and it has limited capacity (all though quite large).If your loop calls main frequently for no apparent reason you may experience a runtime error after a while.Otherwise, you should provide more information about what it is you're trying to do and the specific problems you're having. URL: http://forum.audiogames.net/viewtopic.php?pid=196001#p196001 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: "While parcing statement block" error
Re: "While parcing statement block" error Yes it does. URL: http://forum.audiogames.net/viewtopic.php?pid=194728#p194728 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Accessible C++ Compiler
Re: Accessible C++ Compiler Sorry, I meant route, not root. That was just a typo, but what I was talking about was the Jaws cursor, not Root as in the Linux name for the admin user. URL: http://forum.audiogames.net/viewtopic.php?pid=194520#p194520 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Accessible C++ Compiler
Re: Accessible C++ Compiler Actually I've always been a command line person myself, and it's been a godsend this semester with Java since even with Sodbeans, Netbeans still poses problems.That said, I haven't had much trouble using visual studio, except for a few things like the profiler and (of course) things like control positioning which is problematic for different reasons.Is the new law you're talking about specific to the U.S? I'm not a politics expert by any means but I'd assume coming even close to internationalization on something like that would be near impossible so you'd still have software coming out of other countries with problems.What do you define as true accessibility? Are you strongly against software that makes you either root or use your reader's scripting functionality? URL: http://forum.audiogames.net/viewtopic.php?pid=194503#p194503 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Accessible C++ Compiler
Re: Accessible C++ Compiler What I'm proposing is a hack, admittedly, but there are ways to get the job done. Heck, everybody cuts corners in other areas anyway, so if a sloppy hack turned an app from impossible to somewhat annoying but manageable (rooting and the like) I'm personally for it.Mind you I've done some pretty crazy things in order to limp through an application so maybe I'm the odd man out; I managed to convince a tech support rep at Haupauge to download and run a quick and dirty script I wrote while on the phone with him to expose mouse positions, window sizing parameters etc and managed to hac together a solution that made their app work. Basically homemade shortcut keys.Of course when the next release came out it was all for not but it was great while it lasted. URL: http://forum.audiogames.net/viewtopic.php?pid=194467#p194467 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Accessible C++ Compiler
Re: Accessible C++ Compiler So, if you don't want to position the text box under the other control, then you can register a hotkey that forces the target to focus or that triggers it's control's onclick, update or other event as if you had interacted with that control.Aside from us, very few people tab through windows anyway (it's less efficient than using the mouse if you can use it) so I don't really see having a small minority of people observing an oddity in tab control to be a real issue.The point I'm trying to make is that there are trivial workarounds that work fine in most cases. URL: http://forum.audiogames.net/viewtopic.php?pid=194283#p194283 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Accessible C++ Compiler
Re: Accessible C++ Compiler I honestly think there are quite a number of myths surrounding what it would really take to make most applications accessible. I think the cases in which there would be cost approaching anything close to "hundreds of thousands" are the minority.Case in point, I had an interesting discussion with a developer over at Project Pokémon, a site dedicated to Pokémon hacking research and development. His program, PokéGen (a save game editor for Pokémon games) had an excessibility issue. I gave him some suggestions and then asked him to download Jaws and just play with it for a little while. To my surprise he did, and quickly realized that the only problem was that his icons were purely graphical with no textual supplement.All he did was create text icons, which he hid "underneath" the graphics to hide them from sited users completely, and that made PokéGen completely accessible (the hidden icons could receive tab focus, so you could press enter on them). The best part? It took him a couple of hours at most.Now I'm only talking about windows here, but most of the design mistakes that result in problems for us are generally minor and easily reversible. For instance, in Visual studio class we were assigned to write a program in which the output was to be displayed to the user on a label. Unfortunately this approach resulted in Jaws being unable to detect it, so I suggested to the prof that I use a text box with read only property set instead. Result? you could tab to it and read it just fine. If he had really insisted on the label approach for appearance I'd have hidden the text box underneath of it and made it small for at least enough accessibility to make it manageable.For another assignment, we were to create a text box for output and set it's "enabled" property to false to prevent users from typing in to it. This made it only accessible via the root curser. Solution? keep it enabled, just set it to read only and then you can tab to it and read it with standard reading keys; mind you, having to root isn't the end of the world so for what it's worth I could have gone with the original approach which was at least better than completely inaccessible labels.Granted custom controls are a new kind of evil, but hiding an alternative control still works in a pinch.I think it all goes back to the simple fact that most people have never met a blind person, and many still think we're bumps on a log who sit at home and wait to die (many people are downright shocked when they ask me how much assistance I require in order to bathe and I tell them none at all). I guess people think that making their software accessible means rewriting the entire program which is just a total myth. Of course there are exceptions (Microsoft in all their glory couldn't make their flight simulator excessible no matter how hard they tried) but these are special cases and let's face it, what good is a flight simulator to a blind fellow anyway.Most of the time, we're talking a day or two for one person, and the real cost involved isn't so much financial as it is pride (convincing someone to do a little bit of research and risk the "embarrassment?" of being educated by a blind guy isn't easy). I guess just giving the canned and uneducated response of "Helping a minority would break the bank" takes less effort than sitting down with the Jaws demo for a few hours and learning how to think outside the box.Just my $0.02 but this topic is one I've been passionate about for a long time.Now as for c++ compilers and ides... visual studio really isn't all that bad once you get used to it's querks. Jaws comes with scripts for it out of the box (can't comment on accessibility with other readers), and as long as you're just doing code you shouldn't run in to too many problems. URL: http://forum.audiogames.net/viewtopic.php?pid=194280#p194280 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Best way to implement screen reader support with BGT
Re: Best way to implement screen reader support with BGT It sounded like he was just trying to figure out a way to separate a file into parts or chapters so they could be spoken at the correct time.I just saved a dictionary in BGT's native serialization format and then just used a quick and dirty tool to add, delete etc. URL: http://forum.audiogames.net/viewtopic.php?pid=193782#p193782 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: Best way to implement screen reader support with BGT
Re: Best way to implement screen reader support with BGT I can't comment on the screen reader functionality as I've never used it, but I'll add this. You don't need to make individual files for each chapter of story text. If you don't want to deal with parsing a text file to find the part you need to speak, just put all of your text in to a dictionary, serialize it to a string and write that string to a file.This makes your life nice and easy because then you can just deserialize it when your game loads, and when you need to speak a specific block of text you just look it up by name. URL: http://forum.audiogames.net/viewtopic.php?pid=193768#p193768 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector
Re: BGT dynamic_menu?
Re: BGT dynamic_menu? Can you post code showing what you're trying that produces incorrect results?I'm assuming you're just calling run or run_extended with the name of the first dynamic menu and not the second one. URL: http://forum.audiogames.net/viewtopic.php?pid=193766#p193766 ___ Audiogames-reflector mailing list Audiogames-reflector@sabahattin-gucukoglu.com https://sabahattin-gucukoglu.com/cgi-bin/mailman/listinfo/audiogames-reflector