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].