Hi Davy,

I just wanted to clarify briefly what issues I had when integrating XAudio2 with BGT. Initially, everything seemed to work flawlessly. But what I noticed when trying it in a large scale project with a lot of sounds playing simultaneously was that XAudio2 would sometimes cause lag before playing a new sound. This was not a sound that had just been opened; it was a sound that had been cloned from another previously existing instance. Therefore I was able to exclude disk IO as the cause. At first I figured that it was probably just my machine being sluggish, but it kept happening regularly. I then wanted to make sure that it wasn't the fact that XAudio2 is virtualized on Windows XP, so I tested it on several Windows 7 and Vista machines with the same results. I then did a side by side comparison of DirectSound and XAudio2, and DirectSound did not suffer from this problem on any of the machines used for the test. This was done in late 2010, but I have not seen any significant new releases of XAudio2 since then so I would presume that the problem still exists. Important to note is that the lag usually does not happen if you have just a few sounds playing at once. You need to reach quantities of about 10 or 15 before it starts to become noticeable.

Kind regards,

Philip Bennefall
----- Original Message ----- From: "Davy Kager" <[email protected]>
To: "'Gamers Discussion list'" <[email protected]>
Sent: Saturday, December 14, 2013 1:58 PM
Subject: Re: [Audyssey] BGT, Mac and More


Hi Thomas,

I have had no trouble with XAudio2. That coupled with very low-level input handling using the Win32 API made for some awesome times. Still, the disadvantage to such low-level work (I count XAudio2 as relatively low-level too), is that it takes more work to get things done - including more evaluation of your code to make sure it won't crash at run-time. And the difference inr esponsiveness isn't too big anyway. We're talking milliseconds here. The one thing I did like about those components is that it was mostly event-driven. I'm not a big fan of polling for input. Unfortunately, I've read that Microsoft dropped XNA, so I wouldn't be surprised if XAudio2 is going too. That's two abandoned audio systems in five years.

And really, OpenAL isn't so bad. There are devices with hardware support (though I'm disabling that to ensure a uniform user experience). And with the rise of Steam, being able to target Linux is a good thing. Then there is the iOS thing, they use OpenAL too. Joal is a great option for Java developers. For iOS there is the excellent Object-AL. Sadly Joal seems to have some issues acquiring the soundcard at times, but that's probably partly the fault of Windows and its drivers. It's also a bit of a resource hog, it does a lot of memory copying that more low-level APIs avoid. But hey, it does save you some resource managing.

DirectSound was great, and it's cool that it still works on modern systems, but just like with VB6 I'd strongly suggest new developers skip it altogether. As you said the 3D part is very much broken unless you do your own tweaking (and even then), and to be fair the API really isn't that easy to use compared to XAudio2 or OpenAL. The one nice thing is that you can easily script against it, but that's not too important for serious game developers.

Cheers,
Davy

-----Original Message-----
From: Gamers [mailto:[email protected]] On Behalf Of Thomas Ward
Sent: Saturday, December 14, 2013 13:18
To: Gamers Discussion list
Subject: Re: [Audyssey] BGT, Mac and More

Hi Davy,

Well, the problem with XAudio2 is that a number of developers have reported it is buggy. Philip was working on a version of BGT that uses XAudio2, and found out it caused some instabilities in BGT and removed XAudio2 support for the time being. So that is why BGT does not presently support XAudio2.

However, I agree for a multi-platform game there is no better option than OpenAL. You can use Joal for Java or write your own custom wrapper for the library for a decent cross-platform audio library that works on Mac, Linux, and Windows. Truth be told I am looking at using OpenAL as a replacement for DirectSound on Windows anyway just because the 3d audio is broken big time on DirectSound in Windows 7, Windows 8, and Windows 8.1. Clearly I need something else other than DirectSound, and XAudio2 is rather up in the air at this point.

As far as license agreement stopping someone from reverse engineering code I just can not go with that option. To me that is like someone intentionally leaving their front door unlocked and than hanging a sign outside saying "do not enter." A person who respects you as a developer, has some decency, obviously won't reverse your code or pirate your software. However, sad to say a lot of people will not and it never hurts to add a few extra layers of security to keep the amateur wannabe crackers out of your code.

At the same time I am no fan boy of a lot of the security methods used out there to secure and license software. As you say anything can be cracked, stolen, etc by the right person so adding an insane amount of security won't work. What I feel is that there has to be a fair balance between reasonable security to keep amateur wannabe crackers out while not being intrusive to legitimate customers.

As you yourself said you should stop trying to create a false sense of security as nothing you try or do is perfect. The only thing you or I can do as developers is make a game good enough that people will want to buy it to own it, offer content only available to legitimate customers, and keep the cost reasonable so you make a decent income from it but not so high that people will want to turn to pirating to get it.

Cheers!


On 12/13/13, Davy Kager <[email protected]> wrote:
Hi,

Yes, it definitely seems that <some language> coupled with OpenAL is
the way to go.  For a Windows-only game I'd use XAudio2 (which BGT
doesn't do either), but for a multi-platform game OpenAL has a lot to
offer inspite of its quirks.  It makes transitioning to iOS easier as
well, unless you go and use the Papa Engine for full binaural audio in
your iOS games.  But the Papa Engine and BGT aren't free, which I
appreciate can be a bit of a problem for developers just starting out.
If you pay those $100 for BGT or your Apple iOS developer account you
practically have to come up with something that sells well in order to make it, as you say, financially viable.

The cross-platform applications I have developed so far worked
reasonably well on Mac, although I never made a serious effort to make
the Mac version as streamlined as the Windows version since demand was
low.  This seems to be rapidly changing now.
So yes, coding your own engine in Java or C++ is a lot more work than
licensing BGT and using that, but I feel the benefits justify that
decision (provided you have the time and resources to take on such a project).

Java's lack of security certainly stings.  It's understandable if you
look at Java's history and intended use, but still...  On the other
hand, the license agreement should legally stop any legitimate user
from prying.  Of course enforcing a license agreement is a bit of a
toughy for indie developers.  But even so, if you have an awesome
online back-end to your game, i.e. the bazaar in Entombed, users would
still have a good reason to buy the real thing.  Not to mention the
whole gratitude bit: I took the time to develop for a niche market, so saying thanks by pirating isn't very nice.
 The harsh truth is that any software can be pirated if the right
people get their hands on it.
I'm especially concerned about my game's audio being stolen, partly
because I want my audio to be at least somewhat unique and partly
because it might get me into a legal corner if some kid steals my
audio and puts it up somewhere.  But then again, no encryption is
going to be perfect.  Java is the extreme example.  You can't properly
hide your decryption key in code, and externalizing it makes it even
easier for someone to do the decryption themselves.  You could
definitely store the key on a remote server and download it everytime
the game is started, but then your players can't use the game while
offline.  You could also code your own implementation of AES and push
your class files through an obfuscator.  That'd probably stop most
people, but it's very ugly indeed.  So Java is really bad.  Except
that memory dumping a BGT game also spills a lot of "interesting"
data.  So yes, it securely stores sound data on disk, but it has to be
played back at some point.  I guess you'd just have to make your game
good enough that people are willing to pay for it, much like true fans of a pop star will still buy their songs instead of downloading them illegally.
Oh, and obviously the more encryption runs you put in, the slower your
game is going to be.  And in the end, a determined hacker can still
get in.  I think I have to watch myself and stop trying to create a
fake feeling of security.  That doesn't mean I like how people can
decompile my classes, though.  I suppose I have to set priorities:
rapid development or better pseudo-security.

Cheers,
Davy


---
Gamers mailing list __ [email protected] If you want to leave the list, send E-mail to [email protected]. 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/[email protected]. If you have any questions or concerns regarding the management of the list, please send E-mail to [email protected].


---
Gamers mailing list __ [email protected]
If you want to leave the list, send E-mail to [email protected].
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/[email protected].
If you have any questions or concerns regarding the management of the list,
please send E-mail to [email protected].


---
Gamers mailing list __ [email protected]
If you want to leave the list, send E-mail to [email protected].
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/[email protected].
If you have any questions or concerns regarding the management of the list,
please send E-mail to [email protected].

Reply via email to