Thanks for the excellent feedback, guys. Exactly the kind of feedback I was hoping for
I know what to do next
That’s fun!
I just uploaded a new version:
http://www.gagaplay.com/hypblazer/test/hypblazer.jnlp
The sound implementation can now be switched between javasound and OpenAL.
The OpenAL implementation now uses slick-util as suggested by kapta.
However, per default the JavaSound implementation is selected (streaming using OpenAL for the music is just not working reliably on my computer and also slick-util did not solve this). On my PC, the JavaSound implementation works best.
To switch to OpenAL, open the .properties file located in ‘System.getProperty(“user.home”) + “/.hyperblazer”’ and set the property ‘openal’ to ‘1’
I’d like some feedback on the following (hopefully from people with different OS’es):
- How does the default JavaSound implementation work? (does it work at all, does it have a sufficiently small latency, any problems?)
- Idem for the OpenAL implementation
Thanks in advance!
Tested on Linux (Debian Lenny), with OpenJDK 1.6.0_0-b11.
I couldn’t run without first editing the JNLP file to put the opening tag onto one line.
Once I fixed that I could hear jump sound effects with so little latency they almost seemed to be played too early! There was no background music, and it crashed at the end of the first level. Popped up a dialog which said nothing interesting (words to the effect of “There has been an error and Hypblazer must exit”) and didn’t respond when I clicked on the button.
The console from which I ran has lots of
java.lang.Exception: Unable to open the sourceDataLine: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian not supported.
and a
FINISH!
java.lang.NullPointerException
at com.gagaplay.sound.SoundSystem.playFX(SoundSystem.java:115)
at com.gagaplay.hwblast.Game.nextLevel(Game.java:773)
at com.gagaplay.hwblast.engine.TileFinish.touch(TileFinish.java:37)
at com.gagaplay.hwblast.engine.Road.touch(Road.java:72)
at com.gagaplay.hwblast.engine.Player.tick(Player.java:147)
at com.gagaplay.hwblast.Game.logic(Game.java:517)
at com.gagaplay.hwblast.Game.run(Game.java:417)
at com.gagaplay.hwblast.Game.main(Game.java:227)
which is probably the error which made it crash.
Will now try with OpenAL, but I expect that it has a missing resource and won’t be much happier playing it with a different system.
Edit: well, I was wrong. With OpenAL I got less than a second of background music, and it crashed when I was on about 20 points.
java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(InputStream.java:351)
at java.io.FilterInputStream.reset(FilterInputStream.java:217)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:135)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1111)
at org.newdawn.slick.openal.WaveData.create(WaveData.java:123)
at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:712)
at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:682)
at org.newdawn.slick.openal.AudioLoader.getAudio(AudioLoader.java:54)
at com.gagaplay.sound.SoundSystem.<clinit>(SoundSystem.java:40)
at com.gagaplay.hwblast.Game.gameStart(Game.java:763)
at com.gagaplay.hwblast.Game.logic(Game.java:554)
at com.gagaplay.hwblast.Game.run(Game.java:417)
at com.gagaplay.hwblast.Game.main(Game.java:227)
java.lang.NullPointerException
at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:714)
at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:682)
at org.newdawn.slick.openal.AudioLoader.getAudio(AudioLoader.java:54)
at com.gagaplay.sound.SoundSystem.<clinit>(SoundSystem.java:40)
at com.gagaplay.hwblast.Game.gameStart(Game.java:763)
at com.gagaplay.hwblast.Game.logic(Game.java:554)
at com.gagaplay.hwblast.Game.run(Game.java:417)
at com.gagaplay.hwblast.Game.main(Game.java:227)
java.lang.NullPointerException
at com.gagaplay.sound.SoundSystem.playFX(SoundSystem.java:106)
at com.gagaplay.hwblast.engine.Player.jump(Player.java:230)
at com.gagaplay.hwblast.engine.TileJump.touch(TileJump.java:31)
at com.gagaplay.hwblast.engine.Road.touch(Road.java:72)
at com.gagaplay.hwblast.engine.Player.tick(Player.java:147)
at com.gagaplay.hwblast.Game.logic(Game.java:517)
at com.gagaplay.hwblast.Game.run(Game.java:417)
at com.gagaplay.hwblast.Game.main(Game.java:227)
Thanks again for testing pjt33, I really appreciate it!
[quote]I couldn’t run without first editing the JNLP file to put the opening tag onto one line.
[/quote]
I blame this on the JRE you’re using (the jnlp is valid XML and should be fine), but it’s good to know. I’ll change the jnlp to work around it.
[quote]…and didn’t respond when I clicked on the button.
[/quote]
I’m not sure what’s causing this, but it also seems a JRE issue?
[quote]java.lang.Exception: Unable to open the sourceDataLine: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian not supported.
[/quote]
Strange, as I think it’s the JRE that selects this format. Again, a JRE issue?
[quote]java.io.IOException: mark/reset not supported
at java.io.InputStream.reset(InputStream.java:351)
at java.io.FilterInputStream.reset(FilterInputStream.java:217)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:135)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1111)
[/quote]
Again, looks like a JRE bug to me?
I think the rest of the exceptions are results of the above ones.
In any case, I checked but the resources are definitely all there.
Now, normally I don’t like to blame the JRE so easily for all my problems, but to be honest I don’t know what else to conclude and how to fix this…
Any chance you could try it on a Sun JRE or another machine?
[quote]With OpenAL I got less than a second of background music
[/quote]
Hmm, yes, I have the same problem. I’m doing exactly the same thing as in the slick-util example code except that I’m loading the music from the classloader, so I’m not sure how to fix this.
Cheers,
Erik
That was Sun, almost. (OpenJDK is the GPL’d Sun implementation with the 2% or so of third party binaries removed). I should be able to test with 1.6.0_10, though.
Ok, 1.6.0_10 on a different Debian Lenny machine: JavaSound works fine, OpenAL still has the problem with the background music.
Hehe, maybe that 2% is the part that makes JavaSound work ;D
But still, I guess there must be a way to make JavaSound work on OpenJDK, so I’ll try to find a way.
Thanks again.
For a relatively simple game, I like the concept. If you decide to pick up work on this again, I would suggest maybe the inclusion of only 1 power-up per level that doesn’t affect score directly. Maybe I missed it, but having the option to bump off things would be cool too. I could see an opportunity for environment particles in that case for collision events.
I like the idea of bumping off things! It would make gameplay more forgiving without really getting less difficult to master
Right now any collision to obstacles and holes always result in a crashing ball which I suppose could be frustrating.
I’m not sure I see what you mean by ‘only 1 power up per level that doesn’t affect score directly’. Could you give an example?
Currently the idea was mostly that of a racing game (I’ve even started implementing an online time-trial mode a-la Mirror’s Edge, but have been too swamped lately with other things before I was able to finish it yet).
Thanks for the feedback
this would probably be way to much work, but it is just an idea when bored. You could have actual racing instead of time trials. Could create a mor sustaining game I guess. Cuase then there would be a sense of competition for after completing the game.
but then again I guess this same sense of competition would come from time trials competition. But would be the smae as seeing the guyh enxt to you. this would also go nicely with ebing able tot bounce.
but again I am jsut saying an idea. Probably not a good one though.
Yes, that would be fun wouldn’t it
It’s just that it’s a bit too ambitious for the time I have available for game coding lately (boredom is a luxury I don’t have atm ;)).
Have to say, I love this WIP Erikd. We have several pairs of 3D glasses here that were acquired though a variety of our kid’s DVDs and the 3D stuff is awesome. Would love to see more of this in other games here at JGO
Thanks, Chris. The 3D stuff is actually quite easy to implement, although it takes a bit of fiddling to get things right. Maybe I’ll write a tutorial when I find the time.
Oh, just to let you know, I just moved from Vista to Ubuntu as my main OS, so Linux support should hopefully be better in the near future (starting with sound on OpenJDK).
Windows Vista got me annoyed enough to make me adventurous, and so far I’m very pleasantly surprised by Ubuntu! All of a sudden I can find everything again, and everything feels easy, logical and fast
I have no idea why Microsoft changed windows from the perfectly usable XP into the slow frustrating bloaty hideous-looking counter-intuitive super annoying nag-fest that is Vista.
dont worry they fixed everything in 7.
I just moved the latest version (some new backgrounds, new menu) to the main page of the game (webstart link: http://www.gagaplay.com/hypblazer/hypblazer.jnlp).
Although the online time trial mode is not finished yet (which is why the menu option is grayed out), I think it’s good enough for the game’s main page.
I’m currently playing around with adding head tracking to it using a webcam. It’s fiddly and it’s not perfect yet, but currently under the right light conditions it already works (which is a really cool effect in combination with the anaglyph 3D mode). It really adds something to the game play experience as you can now ‘duck’ under the overhead obstacles (the ‘banner’ looking things) to see farther ahead.
I hope I can get it reliable enough, though.
As requested your game is reviewed for the featured game section.
+1 point if the game installs and uninstalls correctly
+1 point if the game doesn’t crash ever
+1 point if the game is slickly presented
+1 point if the game has “good” graphics that suit the game
+1 point if the game has “good” sound that suit the game (nice sound)
+1 point if the game’s overall style is “good”
+1 point if the game is original or brings a great new original twist (barely scape this since its a remake but gets the point for 3d effects graphics)
+1 point if your judge enjoyed playing the game
+1 point if the game is complete enough that doesn’t feel anything is missing
+0 point if you don’t whine and you demand nothing of the mods (simply saying “can you rate my game please” is fine) (sorry you loose a point here, do keep this rule in mind in future, buy hey still pretty good score :))
See my previous post in this thread as that feedback still mostly stands.
9/10
FEATURED.
p.s. also please edit your original post (first post in thread) to omit the WIP bits as the featured section is intended to showcase games which are complete or practically there. First post is also the post that every person checking your game out for the first time will refer to so it should have the most up to date links and screenshots.
Hi, I have a suggestion for the author. Please include a resolution selection or put the display into the currently set resolution. Because on low resolutions everything looks pixellated for me. Still game is very fun and love the 3D option (I have 3D glasses!).
I see that my attempt at being humble backfired here
I honestly didn’t mean to whine though, and I don’t think I demanded anything.
(Ok now I am whining ;D)
Anyway, thanks a lot kapta!
Good point, I’ll have a look. The choice of (low) resolution was just an attempt to make sure it could manage 60fps on as many machines as possible.
Thanks for the feedback!
Erik
Not sure if you’ve made any changes but I tried playing your game Hyper Blazer and received an error saying unable to launch the application. The details are :
BadFieldException[ Cache must be enabled for nativelib or installer-desc support,http://www.gagaplay.com/hypblazer/lwjgl_win32.jar]
at com.sun.javaws.jnl.XMLFormat.handleResourceElement(Unknown Source)
at com.sun.javaws.jnl.XMLFormat.access$800(Unknown Source)
at com.sun.javaws.jnl.XMLFormat$2$1.visitElement(Unknown Source)
at com.sun.javaws.jnl.XMLUtils.visitChildrenElements(Unknown Source)
at com.sun.javaws.jnl.XMLFormat$2.visitElement(Unknown Source)
at com.sun.javaws.jnl.XMLUtils.visitElements(Unknown Source)
at com.sun.javaws.jnl.XMLFormat.buildResourcesDesc(Unknown Source)
at com.sun.javaws.jnl.XMLFormat.parse(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
This error was in the error console as well:
Error: GadrmGeneralWrapper is not defined
Source File: chrome://gadrm/content/gadrm.js
Line: 150
I’m on XP, Firefox 1.6, running java 6.17
Of course it might also be my own stupidity but I thought I’d give you a heads up.
Mike