Does this LWJGL game work on your system?

Started by Ciardhubh, March 03, 2009, 14:11:07

Previous topic - Next topic

Ciardhubh

I've finished a game that I wrote to improve my OpenGL skills and to learn GLSL. Space Folds is a take on the classic asteroid-shooter. It uses several shaders for bloom, normal/specular mapping and distortion effects. I am really interested to know how it runs on various systems.

I've developped it on a computer with an Nvidia graphics card, only to realise later that the shaders didn't work on an ATI card. After some shader-rewriting it now works on both computers. Still, I'd love to know how it runs on other systems (OS and graphics card mainly).

Please give it a try it and tell me whether you ran into any problems or not.

Play now (via Java Web Start)

Screenshots







Menu controls

F: toggle fullscreen
left, right: select level

In-game controls

The ship is controlled by a series of thrusters. You have to control thrusters individually. Firing a thruster will push your ship in the opposite direction.



Thrusters: num-pad keys
Space: fire missile

Do not forget to enable num-lock or else the keys will not work. The game tries to enable it automatically but this is not supported by all systems.

Easier, alternative control scheme:

Thrusters: Arrow keys
Halt: H
Fire missile: Space

System requirements
- Java 5.0 or greater (Web Start version only)
- Windows, Mac OS X, Linux or Solaris
- An OpenGL 2.0-capable graphics card (requires shader support)

Play via Java Web Start
- no download
- runs from browser
- requires Java 5 or higher to be installed
- works on Windows, Linux, Mac OS X and Solaris

Display Configurator for Web Start Version
- if you want to change display settings after the first start

Download Windows Executable (~27 MB)
- Windows-only but does not require Java to be installed

elias4444

Won't run for me on my Mac Pro (ATI 1900). I get the following error report:

Quote
Java information:
Exception type: Bus Error (0xa) at pc=0x000000012a8cb479

Java VM: Java HotSpot(TM) 64-Bit Server VM (1.6.0_07-b06-57 mixed mode macosx-amd64)

Current thread (0x0000000101a02800):  JavaThread "javawsApplicationMain" [_thread_in_native, id=712077312, stack(0x000000012a617000,0x000000012a717000)]
Stack: [0x000000012a617000,0x000000012a717000]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.lwjgl.opengl.GL20.nglGetShaderInfoLog(IILjava/nio/IntBuffer;ILjava/nio/ByteBuffer;IJ)V+0
j  org.lwjgl.opengl.GL20.glGetShaderInfoLog(ILjava/nio/IntBuffer;Ljava/nio/ByteBuffer;)V+58
j  de.ciardhubh.gamelibrary.graphics.shaders.ShaderUtility.getShaderInfoLog(I)Ljava/lang/String;+24
j  de.ciardhubh.gamelibrary.graphics.shaders.ShaderUtility.compileShader(ILjava/nio/ByteBuffer;)I+38
j  de.ciardhubh.gamelibrary.graphics.shaders.ShaderUtility.loadCompileLinkShader(Ljava/lang/String;Ljava/lang/String;)I+6
j  de.ciardhubh.spacefolds.shaders.Shaders.<init>()V+40
j  de.ciardhubh.spacefolds.SpaceFoldsMain.preloadAssets()V+42
j  de.ciardhubh.spacefolds.SpaceFoldsMain.startGame()V+188
j  de.ciardhubh.spacefolds.SpaceFoldsMain.main([Ljava/lang/String;)V+284
v  ~BufferBlob::StubRoutines (1)
j  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0
j  sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87
j  sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
j  com.sun.javaws.Launcher.executeApplication(Lcom/sun/javaws/jnl/LaunchDesc;Lcom/sun/deploy/cache/LocalApplicationProperties;Ljava/lang/Class;Lcom/sun/javaws/ui/DownloadWindow;)V+239
j  com.sun.javaws.Launcher.executeMainClass(Lcom/sun/javaws/jnl/LaunchDesc;Lcom/sun/deploy/cache/LocalApplicationProperties;Ljava/lang/Class;Lcom/sun/javaws/ui/DownloadWindow;)V+25
j  com.sun.javaws.Launcher.doLaunchApp()V+262
com.sun.javaws.Launcher.run()V+1
java.lang.Thread.run()V+11
v  ~BufferBlob::StubRoutines (1)
=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

kappa

The game works fine on linux64 and windows vista, only wish the controls were simpler there are too many buttons just to move the ship. It would be nice if it only used the cursor keys for ship movement. The use of the num pad also makes it impossible to play on a laptop.

EgonOlsen

Doesn't work on Intel onboard...FBOs are not supported on this crapset... :(

Edit: But it works fine on Radeon HD4870, Vista, Java6. But the controls are too complex IMHO.

Ciardhubh

Quote from: elias4444 on March 03, 2009, 17:30:36
Won't run for me on my Mac Pro (ATI 1900). I get the following error report:

Quote
Java information:
Exception type: Bus Error (0xa) at pc=0x000000012a8cb479

...

Thanks for the information. A Bus Error? That's new. After some searching I have no idea who's to blame. Me, Apple, ATI, LWJGL, Sun? This happening on a glGetShaderInfoLog call is strange. I'm not passing any weird data into that function. The only thing I could come up with - without getting my hands on a Mac - was that I reused a ByteBuffer for that call. The new version of the game creates a new ByteBuffer. I also skipped querying the info log if the shader compiled successfully. Maybe the driver doesn't expect glGetShaderInfoLog calls if everything went ok? Of course it might still fail if I query the log after the shader failed to compile. Fun.

I'd appreciate if you could give the new version a try.

Quote from: javalwjgl
only wish the controls were simpler there are too many buttons just to move the ship. It would be nice if it only used the cursor keys for ship movement.
Quote from: EgonOlsen
Doesn't work on Intel onboard...FBOs are not supported on this crapset... Sad

Edit: But it works fine on Radeon HD4870, Vista, Java6. But the controls are too complex IMHO.

Thanks for trying it. Your wish is my command. You can now alternatively use the arrow keys to turn the ship and move forward and backward. In order to halt all movement, press H (former Num5). Nobody appreciates complex controls :D.

FBOs are required as I use them in postprocessing for bloom and the warping effect.

elias4444

=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

Evil-Devil

Yay, error....

Quote from: Java Console06.03.2009 13:28:35 de.ciardhubh.spacefolds.storage.Storage setDirectory
INFO: Setting savegame directory to: C:\Dokumente und Einstellungen\b.behrendt\.spacefolds
java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:http://ciardhubh.de/games/common_libraries_j5/lib/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
   at com.sun.xml.bind.v2.model.impl.ModelBuilder.<clinit>(ModelBuilder.java:173)
   at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422)
   at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
   at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
   at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)
   at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:188)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
   at javax.xml.bind.ContextFinder.find(Unknown Source)
   at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
   at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
   at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
   at de.ciardhubh.displayconfig.persistence.JAXBManager.unmarshal(JAXBManager.java:45)
   at de.ciardhubh.displayconfig.persistence.DisplayConfigStorage.loadDisplayConfig(DisplayConfigStorage.java:44)
   at de.ciardhubh.displayconfig.swinggui.ConfigFrame.<init>(ConfigFrame.java:68)
   at de.ciardhubh.spacefolds.SpaceFoldsMain.main(SpaceFoldsMain.java:95)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at com.sun.javaws.Launcher.executeApplication(Unknown Source)
   at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
   at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
   at com.sun.javaws.Launcher.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)

OS: Win XP
Graphics: GiForce 4 Ti 4200

Ciardhubh

Quote from: Evil-Devil on March 06, 2009, 12:30:36
Yay, error....

...

From what I could find, this error happens if you have a non-up-to-date version of Java 6. Space Folds will no longer load JAXB if Java 6 is installed, so it shouldn't happen anymore. Plus this cut the download size in half for Java 6 :D Thanks for reporting.

Edit:
According to http://en.wikipedia.org/wiki/Comparison_of_Nvidia_Graphics_Processing_Units the GeForce 4 Ti 4200 doesn't support OpenGL 2.0 (unless some driver update changed that), so it might not run anyway.

Ciardhubh

Quote from: elias4444 on March 04, 2009, 16:03:00
Sorry, I still get the same error.  ::)

I wonder, do other LWJGL games that use shaders work on your systems? Or other non-LWJGL OpenGL programs that use shaders?

Did anybody get Space Folds to run on any Mac?

elias4444

Not sure. I honestly haven't fiddled with shaders yet.
=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

Evil-Devil

Quote from: Ciardhubh on March 10, 2009, 12:10:58
According to http://en.wikipedia.org/wiki/Comparison_of_Nvidia_Graphics_Processing_Units the GeForce 4 Ti 4200 doesn't support OpenGL 2.0 (unless some driver update changed that), so it might not run anyway.
OK. I'll try it to start the game on my home pc when i have my broadband connection installed. Hopefully this weekend :)