Re: [Audyssey] BGT future development - My replies
Hi Thomas, I know that in my games I need to reset the sapi5 voice engine before changing engines. That is going from an ATT voice to a Neo Speech, Microsoft or Cepstral. Otherwise the voice is all very distorted and fuzzy. So I do the below code whenever changing to a new voice. nov being the number of the new voice. Set Voice = Nothing Set Voice = New SpVoice Set Voice.Voice = Voice.GetVoices().Item(nov) So that is just in VB6 with the sapi5 voices. HTH BFN Jim You're just jealous because the voices only talk to me. j...@kitchensinc.net http://www.kitchensinc.net (440) 286-6920 Chardon Ohio USA --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org.
Re: [Audyssey] BGT future development - My replies
Hi Jim, I know. I do the same thing to reset the Speech Engine before switching to Neospeech, Natural Voices, whatever. Problem is though the Neospeech voices continue to sound fuzzy, distorted, etc even though I properly disposed of the old Sapi speech engine and initialized the new one. I don't have this problem when switching from the ATT voices to Microsoft Anna or to the Realspeak voices that ships with Jaws 9. This leads me to believe that the Neospeech voices have some problems not shared by other TTS engines out there. On 1/12/11, Jim Kitchen j...@kitchensinc.net wrote: Hi Thomas, I know that in my games I need to reset the sapi5 voice engine before changing engines. That is going from an ATT voice to a Neo Speech, Microsoft or Cepstral. Otherwise the voice is all very distorted and fuzzy. So I do the below code whenever changing to a new voice. nov being the number of the new voice. Set Voice = Nothing Set Voice = New SpVoice Set Voice.Voice = Voice.GetVoices().Item(nov) So that is just in VB6 with the sapi5 voices. HTH BFN Jim --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org.
Re: [Audyssey] BGT future development - My replies
Hi Thomas, I notice that switching to Neospeech from other voices does take quite a while in Windows. I think about 30 seconds so if you put a wait statement in for that long, maybe that will clear up the switch. Phil - Original Message - From: Thomas Ward thomasward1...@gmail.com To: Gamers Discussion list gamers@audyssey.org Sent: Wednesday, January 12, 2011 3:42 PM Subject: Re: [Audyssey] BGT future development - My replies Hi Jim, I know. I do the same thing to reset the Speech Engine before switching to Neospeech, Natural Voices, whatever. Problem is though the Neospeech voices continue to sound fuzzy, distorted, etc even though I properly disposed of the old Sapi speech engine and initialized the new one. I don't have this problem when switching from the ATT voices to Microsoft Anna or to the Realspeak voices that ships with Jaws 9. This leads me to believe that the Neospeech voices have some problems not shared by other TTS engines out there. On 1/12/11, Jim Kitchen j...@kitchensinc.net wrote: Hi Thomas, I know that in my games I need to reset the sapi5 voice engine before changing engines. That is going from an ATT voice to a Neo Speech, Microsoft or Cepstral. Otherwise the voice is all very distorted and fuzzy. So I do the below code whenever changing to a new voice. nov being the number of the new voice. Set Voice = Nothing Set Voice = New SpVoice Set Voice.Voice = Voice.GetVoices().Item(nov) So that is just in VB6 with the sapi5 voices. HTH BFN Jim --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org. - No virus found in this message. Checked by AVG - www.avg.com Version: 10.0.1191 / Virus Database: 1435/3375 - Release Date: 01/12/11 --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org.
[Audyssey] BGT future development - My replies
Hi all, Thank you for the large number of suggestions! I'll respond to you all below in one big message, as to avoid cluttering up the list. Thomas. If I added force feedback I think it would actually be advantageous for me to do everything through code, as the goal of BGT is to wrap everything for the end users without requiring use of the underlying facilities. I'll definitely look into it. Kai. I have looked into XInput, but it does not support neither keyboards nor mouse devices which makes it rather unatractive for me. The only reason then to use it would be for extended joystick and game pad support which is certainly an option, but not something I'm sure about just yet. As for Midi support, I don't think this will happen. In order to provide a soundtrack that sounds the same for everyone, one would need to use some sort of instrument bank such as a soundfont or similar to play the music, which would require me to write an entire sound font player. This is not something that I'm very keen on doing at the moment. And as regards to reverse engineering, I'm doing as much as I can to avoid it (e.g. applying layers of encryption, not encrypting the actual script but rather the AngelScript byte code, including verification checks etc) but as with any software, it is not impossible. You can reverse engineer any program if you are determined enough, and BGT is no exception. Having said that, however, it certainly isn't easy. Lastly, Anti cheating is certainly possible in BGT. Right now there are only hash functions, but I can add a crc32 function as well if there's an interest in that. Allen. Multithreading would indeed be nice, but let's take a look at some of the practicalities there. Let us assume that you have two loops running in two separate threads, and they both modify the same global variable. You have no way of knowing what value the variable may or may not have, at any given time. To prevent this, we would need something similar to a critical section or a mutex to lock access to some resource during a short amount of time while a thread accesses or modifies it. Here we are getting into quite advanced concepts of programming (e.g. thread synchronization), which is way beyond the simplisity goals of BGT. Co-routines is one option that I am considering, however. Hayden. The idea with the helper layer is that it is meant to be open source, so that users can go in and modify the includes to their liking. Something like the sound pool or the dynamic menu class are perfect examples where the functionality is necessary, but not really as part of the engine's foundation. This way, you are able to choose which of these components that you wish to include in your game rather than having them forced upon you. The engine implements all the low level control such as the sound and timer classes, and then it is up to the script writer to make use of these as I have done in these wrapper modules. In other words, the helper layer is meant to let you pick and choose which bits and pieces you do and do not want, which you can't do with the core functionality. Ryan. Loading dll's would indeed be very useful, but the main issue is that AngelScript currently does not support variable parameter function calls or optional parameters to functions. I could do something in the preprocessor stage like VB 6 does, where you specify the name of the function that you want to import as well as the dll filename but this still leaves me with the problem of turning the AngelScript classes into structs when these are passed as parameters, for instance. In short, this is probably possible somehow but would require a huge amount of time. I'll keep it in mind though, and if a lot of people want it it will make its way into the engine eventually, as will COM support. Bryan. I have an idea about what might be happening regarding your Sapi issues. In the dynamic menu class, if you do not specify a specific tts_voice object that you wish to use, a temporary one will be created for you behind the scenes if you are using tts options. The problem as I see it, is that NeoSpeech may not allow multiple instances of its engine to be run simultaneously and so the menu does not work. The solution is to always call the set_tts_object method in the class before calling any of the run methods, so that it uses your existing tts_voice object instance for its output. Kind regards, Philip Bennefall --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org.
Re: [Audyssey] BGT future development - My replies
Hi, Philip wrote: I have looked into XInput, but it does not support neither keyboards nor mouse devices which makes it rather unatractive for me. The only reason then to use it would be for extended joystick and game pad support which is certainly an option, but not something I'm sure about just yet. my comments: Agreed. For the record when we decided to go ahead and rewrite the G3D engine in C++ we also looked at XInput rather than DirectInput, and discovered the same exact problems and issues. XInput is primarily designed as a cross-platform API for handling XInput compatible joysticks and game controllers such as those for the Microsoft XBox 360 and/or third-party PC game controllers like the Logitech f510 specifically designed for XInput. As a result if we use XInput for joysticks we still have to use something else for mice and keyboard like the Win32 API for polling mouse and keyboard events from the OS. Since polling the OS for keyboard and mouse events is less desirable than using DirectInput going with XInput has very little value for us. Especially, since our surveys seam to show most VI gamers prefer the keyboard over mice and joysticks in a large amount of cases. Philip wrote: Multithreading would indeed be nice, but let's take a look at some of the practicalities there. Let us assume that you have two loops running in two separate threads, and they both modify the same global variable. You have no way of knowing what value the variable may or may not have, at any given time. To prevent this, we would need something similar to a critical section or a mutex to lock access to some resource during a short amount of time while a thread accesses or modifies it. Here we are getting into quite advanced concepts of programming (e.g. thread synchronization), which is way beyond the simplisity goals of BGT. my comments: Again, I have to agree. Multithreading is a very advanced area of programming, and if people are having problems with BGT now throwing multithreading in the mix would make things a lot more complex and confusing for the average user of the product. Anyone who isn't an expert at multithreading can create some extremely nasty bugs, problems, and if they don't know what they are doing end up crashing the end user's entire system because of a stupid mistake. I have done it myself quite on accident. For example, in the G3D engine I use multithreading in order to process input in one thread, process/update the enemy AI in another thread, and so on. That is fine, but you really have to be careful what thread a certain process was started on in order to shut it down properly. Several months back when testers were exiting MOTA they got a nasty blue screen on exit. It took me a good long while to find/fix that bug. The problem turned out to be the fact I called the WindowDestroy() function from the input thread, when the window was created on the main thread. Since the window was actually created on the main thread that meant that the WindowDestroy() function has to also be called from the main thread. It is exactly this kind of mistake new and experienced BGT developers could make if they aren't careful of properly starting, stopping, updating, and locking threads. I don't think some of these new developers are aware of how easy it is to hang or lock up a computer using an improper thread safe design. Cheers! --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org.
Re: [Audyssey] BGT future development - My replies
on the subject of sapi, bgt should always use the system default unless you choose. Hi all, Thank you for the large number of suggestions! I'll respond to you all below in one big message, as to avoid cluttering up the list. Thomas. If I added force feedback I think it would actually be advantageous for me to do everything through code, as the goal of BGT is to wrap everything for the end users without requiring use of the underlying facilities. I'll definitely look into it. Kai. I have looked into XInput, but it does not support neither keyboards nor mouse devices which makes it rather unatractive for me. The only reason then to use it would be for extended joystick and game pad support which is certainly an option, but not something I'm sure about just yet. As for Midi support, I don't think this will happen. In order to provide a soundtrack that sounds the same for everyone, one would need to use some sort of instrument bank such as a soundfont or similar to play the music, which would require me to write an entire sound font player. This is not something that I'm very keen on doing at the moment. And as regards to reverse engineering, I'm doing as much as I can to avoid it (e.g. applying layers of encryption, not encrypting the actual script but rather the AngelScript byte code, including verification checks etc) but as with any software, it is not impossible. You can reverse engineer any program if you are determined enough, and BGT is no exception. Having said that, however, it certainly isn't easy. Lastly, Anti cheating is certainly possible in BGT. Right now there are only hash functions, but I can add a crc32 function as well if there's an interest in that. Allen. Multithreading would indeed be nice, but let's take a look at some of the practicalities there. Let us assume that you have two loops running in two separate threads, and they both modify the same global variable. You have no way of knowing what value the variable may or may not have, at any given time. To prevent this, we would need something similar to a critical section or a mutex to lock access to some resource during a short amount of time while a thread accesses or modifies it. Here we are getting into quite advanced concepts of programming (e.g. thread synchronization), which is way beyond the simplisity goals of BGT. Co-routines is one option that I am considering, however. Hayden. The idea with the helper layer is that it is meant to be open source, so that users can go in and modify the includes to their liking. Something like the sound pool or the dynamic menu class are perfect examples where the functionality is necessary, but not really as part of the engine's foundation. This way, you are able to choose which of these components that you wish to include in your game rather than having them forced upon you. The engine implements all the low level control such as the sound and timer classes, and then it is up to the script writer to make use of these as I have done in these wrapper modules. In other words, the helper layer is meant to let you pick and choose which bits and pieces you do and do not want, which you can't do with the core functionality. Ryan. Loading dll's would indeed be very useful, but the main issue is that AngelScript currently does not support variable parameter function calls or optional parameters to functions. I could do something in the preprocessor stage like VB 6 does, where you specify the name of the function that you want to import as well as the dll filename but this still leaves me with the problem of turning the AngelScript classes into structs when these are passed as parameters, for instance. In short, this is probably possible somehow but would require a huge amount of time. I'll keep it in mind though, and if a lot of people want it it will make its way into the engine eventually, as will COM support. Bryan. I have an idea about what might be happening regarding your Sapi issues. In the dynamic menu class, if you do not specify a specific tts_voice object that you wish to use, a temporary one will be created for you behind the scenes if you are using tts options. The problem as I see it, is that NeoSpeech may not allow multiple instances of its engine to be run simultaneously and so the menu does not work. The solution is to always call the set_tts_object method in the class before calling any of the run methods, so that it uses your existing tts_voice object instance for its output. Kind regards, Philip Bennefall --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding
Re: [Audyssey] BGT future development - My replies
That's the point. I had the Neospeach voices set as defaults whenever this happened. So I'm using ATT Mike at te moment despite that not being one of my favorite voices. We are the Knights who say...Ni! - Original Message - From: shaun everiss sm.ever...@gmail.com To: Philip Bennefall phi...@blastbay.com; Gamers Discussion list gamers@audyssey.org Sent: Tuesday, January 11, 2011 8:24 PM Subject: Re: [Audyssey] BGT future development - My replies on the subject of sapi, bgt should always use the system default unless you choose. Hi all, Thank you for the large number of suggestions! I'll respond to you all below in one big message, as to avoid cluttering up the list. Thomas. If I added force feedback I think it would actually be advantageous for me to do everything through code, as the goal of BGT is to wrap everything for the end users without requiring use of the underlying facilities. I'll definitely look into it. Kai. I have looked into XInput, but it does not support neither keyboards nor mouse devices which makes it rather unatractive for me. The only reason then to use it would be for extended joystick and game pad support which is certainly an option, but not something I'm sure about just yet. As for Midi support, I don't think this will happen. In order to provide a soundtrack that sounds the same for everyone, one would need to use some sort of instrument bank such as a soundfont or similar to play the music, which would require me to write an entire sound font player. This is not something that I'm very keen on doing at the moment. And as regards to reverse engineering, I'm doing as much as I can to avoid it (e.g. applying layers of encryption, not encrypting the actual script but rather the AngelScript byte code, including verification checks etc) but as with any software, it is not impossible. You can reverse engineer any program if you are determined enough, and BGT is no exception. Having said that, however, it certainly isn't easy. Lastly, Anti cheating is certainly possible in BGT. Right now there are only hash functions, but I can add a crc32 function as well if there's an interest in that. Allen. Multithreading would indeed be nice, but let's take a look at some of the practicalities there. Let us assume that you have two loops running in two separate threads, and they both modify the same global variable. You have no way of knowing what value the variable may or may not have, at any given time. To prevent this, we would need something similar to a critical section or a mutex to lock access to some resource during a short amount of time while a thread accesses or modifies it. Here we are getting into quite advanced concepts of programming (e.g. thread synchronization), which is way beyond the simplisity goals of BGT. Co-routines is one option that I am considering, however. Hayden. The idea with the helper layer is that it is meant to be open source, so that users can go in and modify the includes to their liking. Something like the sound pool or the dynamic menu class are perfect examples where the functionality is necessary, but not really as part of the engine's foundation. This way, you are able to choose which of these components that you wish to include in your game rather than having them forced upon you. The engine implements all the low level control such as the sound and timer classes, and then it is up to the script writer to make use of these as I have done in these wrapper modules. In other words, the helper layer is meant to let you pick and choose which bits and pieces you do and do not want, which you can't do with the core functionality. Ryan. Loading dll's would indeed be very useful, but the main issue is that AngelScript currently does not support variable parameter function calls or optional parameters to functions. I could do something in the preprocessor stage like VB 6 does, where you specify the name of the function that you want to import as well as the dll filename but this still leaves me with the problem of turning the AngelScript classes into structs when these are passed as parameters, for instance. In short, this is probably possible somehow but would require a huge amount of time. I'll keep it in mind though, and if a lot of people want it it will make its way into the engine eventually, as will COM support. Bryan. I have an idea about what might be happening regarding your Sapi issues. In the dynamic menu class, if you do not specify a specific tts_voice object that you wish to use, a temporary one will be created for you behind the scenes if you are using tts options. The problem as I see it, is that NeoSpeech may not allow multiple instances of its engine to be run simultaneously and so the menu does not work. The solution is to always call the set_tts_object method in the class before calling any of the run methods, so that it uses your existing tts_voice
Re: [Audyssey] BGT future development - My replies
Hi Bryan, Well, if it makes you feel any better I've had my own troubles with the Neospeech voices in games. For example, in an older release of the G3D engine when I was toying around with Sapi 5 voices I noticed if I used a different default voice such as ATT Mike and then switched to Neospeech Kate the Neospeech voices would be very distorted and fuzzy sounding. If I set Neospeech Kate as the system default voice and it came up on start up it was crystal clear.I don't know why but those voices, Neospeech Kate and Paul, also tend to cause programs like Text Aloud to crash on me where no other Sapi 5 voice does that to me. Personally, regardless of how good they may sound I think they are buggy and the problems you are having may have nothing to do with BGT but everything to do with those particular voices. This isn't the first time I've seen problems like this with those voices. On 1/11/11, Bryan Peterson bpeterson2...@cableone.net wrote: That's the point. I had the Neospeach voices set as defaults whenever this happened. So I'm using ATT Mike at te moment despite that not being one of my favorite voices. We are the Knights who say...Ni! --- Gamers mailing list __ Gamers@audyssey.org If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org. You can make changes or update your subscription via the web, at http://audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/gamers@audyssey.org. If you have any questions or concerns regarding the management of the list, please send E-mail to gamers-ow...@audyssey.org.