Isotröma (Tesseract 2)

It’s a lot smoother now even though I don’t see the FPS counter.

@sugarrushx6
Hey, awesome !! That’s emo for me, it’s the first video of one of my projects ^^ !
And i notice you didn’t spoil the levels ^^ .
But i didn’t see the bug, what appened exactly ?
And thanks a lot !

@gouessej
Oh, i’m comptetely idiot, i forgot to add the fps counter !
But if it’s smoother the update wasn’t for nothing ^^ .
Thanks a lot for the test !
PS : i’m about to try TUER.

Well… in the Realitron level, instead of terrain in FRONT of you,
it’s under you… ::slight_smile:

But, thanks for the feedback! ;D

Hi

Which plugin(s) of Paul Lamb’s Sound Library do you use? Do you use LWJGL OpenAL plugin?

I have just tried to run it on a Packard Bell EasyNote MH36 (Mobile Intel GMA X4500) under Windows 7 64 bits with Oracle Java 1.7 update 17. As I’m not a typical casual user and I dislike disparaging creations, I don’t panic, I don’t wrongly claim that your game crashes my whole system, I don’t (ab)use of CTRL+ALT+SUPPR, I don’t claim that I had to force it to quit… I get only this in the console:
atch: beginTraversal
Match: digest selected JREDesc: JREDesc[version 1.5+, heap=-1–1, args=null, href=null, sel=false, null, null], JREInfo: JREInfo for index 0:
platform is: 1.7
product is: 1.7.0_17
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files\Java\jre7\bin\javaw.exe
args is: null
native platform is: Windows, amd64 [ x86_64, 64bit ]
JavaFX runtime is: JavaFX 2.2.7 found at C:\Program Files\Java\jre7
enabled is: true
registered is: true
system is: true

Match: ignoring maxHeap: -1
Match: ignoring InitHeap: -1
Match: digesting vmargs: null
Match: digested vmargs: [JVMParameters: isSecure: true, args: ]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: ]
Match: digest LaunchDesc: http://tesseract-fps.sourceforge.net/isotroma/isotroma_exp.jnlp
Match: digest properties: [-Dsun.java2d.noddraw=true, -Dorg.lwjgl.util.NoChecks=true, -Dorg.lwjgl.opengl.Window.undecorated=true]
Match: JVM args: [JVMParameters: isSecure: false, args: -Dsun.java2d.noddraw=true -Dorg.lwjgl.util.NoChecks=true -Dorg.lwjgl.opengl.Window.undecorated=true]
Match: endTraversal ..
Match: JVM args final: -Dsun.java2d.noddraw=true -Dorg.lwjgl.util.NoChecks=true -Dorg.lwjgl.opengl.Window.undecorated=true
Match: Running JREInfo Version    match: 1.7.0.17 == 1.7.0.17
 Match: Running JVM args match the secure subset: have:<-Dsun.java2d.noddraw=true -Dsun.java2d.noddraw=true>  satisfy want:<-Dsun.java2d.noddraw=true -Dorg.lwjgl.util.NoChecks=true -Dorg.lwjgl.opengl.Window.undecorated=true>

JNLPClassLoader: Finding library lwjgl64.dll

I get this thread dump with JVisualVM:

2013-03-08 19:08:49
Full thread dump Java HotSpot™ 64-Bit Server VM (23.7-b01 mixed mode):

“RMI TCP Connection(16)-192.168.1.12” daemon prio=6 tid=0x0000000006a73800 nid=0x4b0 runnable [0x0000000009dae000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
- locked <0x00000000cca82100> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- <0x00000000cca822c0> (a java.util.concurrent.ThreadPoolExecutor$Worker)

“RMI TCP Connection(idle)” daemon prio=6 tid=0x0000000006a70000 nid=0xd24 waiting on condition [0x000000000d2cf000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000dc063a88> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source)
at java.util.concurrent.SynchronousQueue.poll(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“JMX server connection timeout 46” daemon prio=6 tid=0x0000000006a70800 nid=0xdd0 in Object.wait() [0x000000000d5df000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dc1927b8> (a [I)
at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(Unknown Source)
- locked <0x00000000dc1927b8> (a [I)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“RMI Scheduler(0)” daemon prio=6 tid=0x0000000006a73000 nid=0xdf4 waiting on condition [0x000000000ae3f000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000dc006008> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“RMI TCP Connection(17)-192.168.1.12” daemon prio=6 tid=0x0000000006a6f000 nid=0xddc runnable [0x000000000ad0e000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
- locked <0x00000000cc0142c8> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- <0x00000000dc192b78> (a java.util.concurrent.ThreadPoolExecutor$Worker)

“RMI TCP Accept-0” daemon prio=6 tid=0x0000000006a71800 nid=0xad8 runnable [0x000000000d45e000]
java.lang.Thread.State: RUNNABLE
at java.net.DualStackPlainSocketImpl.accept0(Native Method)
at java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source)
at java.net.AbstractPlainSocketImpl.accept(Unknown Source)
at java.net.PlainSocketImpl.accept(Unknown Source)
- locked <0x00000000dc0061d8> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“javawsApplicationMain” prio=6 tid=0x0000000006a72000 nid=0xf08 runnable [0x000000000836e000]
java.lang.Thread.State: RUNNABLE
at jglload.JGL_ImageLoader.(JGL_ImageLoader.java:50)
at util.DisplayIndexes.addFont(DisplayIndexes.java:74)
at util.Sys.init(Sys.java:161)
at main.Main.main(Main.java:37)
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)

Locked ownable synchronizers:
- None

“TimerQueue” daemon prio=6 tid=0x0000000006a6e800 nid=0xa84 waiting on condition [0x000000000853f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000dba48f80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.DelayQueue.take(Unknown Source)
at javax.swing.TimerQueue.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- <0x00000000dbbfda00> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

“ConsoleTraceListener” daemon prio=6 tid=0x0000000006949800 nid=0x3e0 in Object.wait() [0x0000000007a5f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49050> (a com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)
at java.lang.Object.wait(Object.java:503)
at com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$ConsoleWriterThread.run(Unknown Source)
- locked <0x00000000dba49050> (a com.sun.deploy.uitoolkit.ui.ConsoleTraceListener$BoundedStringBuffer)

Locked ownable synchronizers:
- None

“AWT-EventQueue-1” prio=6 tid=0x0000000006850800 nid=0x860 waiting on condition [0x000000000741e000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000dba490e0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.awt.EventQueue.getNextEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Locked ownable synchronizers:
- None

“DestroyJavaVM” prio=6 tid=0x0000000001fcd800 nid=0xf14 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

“Javaws Secure Thread” daemon prio=6 tid=0x000000000684a000 nid=0x1dc in Object.wait() [0x000000000772f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49238> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
- locked <0x00000000dba49238> (a java.lang.Object)

Locked ownable synchronizers:
- None

“AWT-EventQueue-0” prio=6 tid=0x0000000006845000 nid=0xca4 waiting on condition [0x0000000006c6e000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000dba492c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.awt.EventQueue.getNextEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Locked ownable synchronizers:
- None

“AWT-Windows” daemon prio=6 tid=0x000000000683a000 nid=0xe0c runnable [0x00000000072fe000]
java.lang.Thread.State: RUNNABLE
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“AWT-Shutdown” prio=6 tid=0x000000000557a800 nid=0xa24 in Object.wait() [0x0000000006f9f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49490> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at sun.awt.AWTAutoShutdown.run(Unknown Source)
- locked <0x00000000dba49490> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“Java2D Disposer” daemon prio=10 tid=0x0000000005579800 nid=0xbb4 in Object.wait() [0x00000000070de000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49530> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000dba49530> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at sun.java2d.Disposer.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“CacheCleanUpThread” daemon prio=6 tid=0x00000000067b1800 nid=0xaac in Object.wait() [0x000000000592e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49570> (a com.sun.deploy.cache.CleanupThread)
at java.lang.Object.wait(Object.java:503)
at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
- locked <0x00000000dba49570> (a com.sun.deploy.cache.CleanupThread)

Locked ownable synchronizers:
- None

“CacheMemoryCleanUpThread” daemon prio=6 tid=0x000000000553b800 nid=0x5ac in Object.wait() [0x0000000006e9f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49668> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000dba49668> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown Source)

Locked ownable synchronizers:
- None

“traceMsgQueueThread” daemon prio=6 tid=0x000000000547c800 nid=0x858 in Object.wait() [0x000000000645f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49700> (a java.util.ArrayList)
at java.lang.Object.wait(Object.java:503)
at com.sun.deploy.trace.Trace$TraceMsgQueueChecker.run(Unknown Source)
- locked <0x00000000dba49700> (a java.util.ArrayList)
at java.lang.Thread.run(Unknown Source)

Locked ownable synchronizers:
- None

“Service Thread” daemon prio=6 tid=0x000000000545f000 nid=0xf60 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

“C2 CompilerThread1” daemon prio=10 tid=0x000000000545d800 nid=0xf34 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

“C2 CompilerThread0” daemon prio=10 tid=0x000000000544e000 nid=0xef8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

“Attach Listener” daemon prio=10 tid=0x000000000544c800 nid=0xea8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

“Signal Dispatcher” daemon prio=10 tid=0x0000000005449000 nid=0x9f0 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

“Finalizer” daemon prio=8 tid=0x00000000053bc800 nid=0xf44 in Object.wait() [0x0000000005a6f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba49998> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000dba49998> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

Locked ownable synchronizers:
- None

“Reference Handler” daemon prio=10 tid=0x00000000053b5000 nid=0xa88 in Object.wait() [0x000000000582f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000dba48b50> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x00000000dba48b50> (a java.lang.ref.Reference$Lock)

Locked ownable synchronizers:
- None

“VM Thread” prio=10 tid=0x00000000053ae800 nid=0xeec runnable

“VM Periodic Task Thread” prio=10 tid=0x000000000546e800 nid=0xed4 waiting on condition

JNI global references: 1097

I think I know the root cause of this problem. I don’t succeed in running OpenAL on this laptop but I benefit of a fail-fast mechanism in my case, it would be fine if Paul Lamb didn’t use a timeout of 30 seconds in my case… If you need some (constructive) help, let me know. I’m not a Windows expert, any developer having the same problem should have done what I’ve just done now, that’s the minimum.

Edit.: Where is the source code of your game? I would like to force the initialization of OpenAL in a try catch clause and use JavaSound as a fallback.

I’ve played through all the levels, and I really enjoyed it!
I was sceptical about it, with the square-rainbow terrain and black outlines, but I found that that actually completely suited it! :smiley:

Can’t wait for more levels, it seems like it will be a very fun game!

@sugarrushx6
Sorry, i didn’t get it :frowning: , but the terrains display had a lot of modifications these last times, i hope it has repaired that :wink: .

@gouessej
AWESOME !!
Many many thanks ! I think you save my life :slight_smile: .

I think the main meat of the log is this :

which seems to indicate it’s the font texture loading which crashed… in fact that’s not surprising, i had some J1.1-compatible exotic algos but as the code is 1.5 i just replaced it by the ImageIO way ;D .

For Paul Lamb Sound System, yes, in fact i do as what you told : try LWJGL plugin and switch to JavaSound if problem (even if i noticed that a sound can only be played once with it :frowning: ).

For the code, yes i didn’t publish it yet, in fact i waited to resolve this bug ;D ! If now the game works fine, I’ll put sources in a Sourceforge project soon :wink: .

So, a new experimental version is online, which features :

  • faster terrain display
  • chuncks sizes choosed for each map
  • terrains lines removable
  • Regular windowed display modes (800x600, 1024x768, 1280x1024)
  • And so repaired (i hope) textures loading

I also added a new terrain as a perf test (greater size x smaller cubes = lots of tris) : “terrain7”. Here’s a view :

(its generation ingame could be a little long)

So, as usual, if that didn’t work for you, could you try this new version please ?
-> http://tesseract-fps.sourceforge.net/isotroma/isotroma_exp.jnlp

This time i’m sure it’s the good one !

@NegativeZero
Thank you very much !
If the bug which poisons my life since mounthes is fixed, some new level should arrive quick :wink: .

Let me know when that’s worth another try. Anyway, it would be fine that we find a solution for OpenAL-Soft. JavaSound has some nasty limitations, we may have problems with it even under Windows.

[quote=gouessej]Let me know when that’s worth another try.
[/quote]
Thanks, Julien ^^ . Well, now I repaired all the versions from the bug you found, maybe you could give a try with your Packard Bell EasyNote, just to confirm all is fine…

[quote=gouessej]Anyway, it would be fine that we find a solution for OpenAL-Soft.
[/quote]
Yes, it would be great ! But i’m a complete noob, i inquire a little about it and maybe we could mail ^^ …

Otherwise, nothing really new to show, i work on the editor’s model part (from the classical MVC), except now the possibility to add skyboxes (didn’t want to start to use external graphical resources, but i must admit it really improves a scene !). So the tutos look like :

And a terrain of the experimental version :

These repaired and “extended” versions are still online on :
http://tesseract-fps.sourceforge.net/isotroma/index.html

It works very well now, great job :slight_smile:

Beat the church level. When I got to the second part I was frustrated that nothing was dying, and eventually brought the terrain down(up?) on EVERYTHING, and then decided to explore to find the end of level thing.

Health packs didn’t work though.

As for your test enviroment I put it on to the max setting and it was fun to romp around on. Would make for some really interesting death matches if you make terrain kick you away when it’s formed. Nvidea GTX 560M

Sorry for answering late, i hadn’t internet :wink: .

@gouessej
Many thanks, cool, that reassures me :smiley: .

@lithos
Thanks a lot for the test :wink: .
Yes, the current levels are actually really not clears, dued to my crappy designer talents ! I hope i’ll get better, with a lot of work, ha ha !
In fact health packs are power-ups ;D , and they work only if “cypher” weapon is selected (another confusing stuff, that’s true, i have to change model…).
Currently being trapped into new matter makes you die actually :wink: . In fact i didn’t want to make multi, but i’m about to change my idea :wink: .

While i’m here, i can give a few news : the editor progresses well (soon i’ll be able to place boxes into levels, amazing no ? ;D ).
Otherwise i still work on terrain generation. recently i felt on a terrific algo to dig pretty underground galleries (ridged multi-fractal noise, conceited no ?). moreover, i decided to add textures. After several failures with classical textures (uv correct computation, which demand the normal of all points, but geometry is only stocked on graphic card to gain memory…), i thought about 3D textures procedural generation. It’s only the beginning, but here is the result with classical chessboard texture :

The goal is to allow the player to generate different types of random textures in the editor :wink: .

This looks very nice ! Do you plan to smooth the normals of your generated terrain to get rid of the sharp edges ?

Thank you deathpat :smiley: .

For the smoothing normals, yeah it would be fine but it’s difficult in my case because the geometry is in numerous separate vbo/display lists and currently i can’t know which triangles own a point… Difficult but NOT impossible ! I guess it may cost a few neurons, but i’ll think about it :wink: .

Otherwise, i’m glad to share with you my evening progresses in texture generation : soon numerous shapes will be available because i just succeeded to implement random perturbations of a repetitive shape. the result can currently look like this :

Ha ha, i found the secret of tileable textures ;D !

Hello, a few news :wink: :

After having realized (lately) that the main problem in a marching cube system is the memory, i worked on it and decreased dramatically the volume of the terrains. So bigger levels generation is now available :wink: .
Exemple : this “naked” 400x400x100 voxels terrain :

Its size is “only” 213 Mo, which lets the possibility of really huge environments on a current computer. The problem in that case is the generation time which is currently slow, but numerous optimizations can still be done :wink: . I think with a bit more of work infinite terrains (with threaded generation) will be available, it’s not really the goal of the project but it would be cool ^^ .

Looks smooth, reminds me of a lava lamp. Look forward to updates

Thank you ^^ .
Yes, the more we can have voxels, the more we can make “curvy” shapes, which graphically takes away the project from a certain famous game ;D …

Hello, some few news ^^ :

sorry, there still isn’t a new demo because this week i lost time again on the code… but it’s for a right cause : i succeded at least to get smooth normals from terrains :smiley: . (without shader nor GPU manipulation, nor more memory use, which wasn’t so easy ;D )
Graphically, that doesn’t suit to all shapes, but combined to broken grounds it could give some kind of “liquid” aspect that can fit to the project :

Otherwise i abandonned the 3D textures for good old 2D ones because i found an efficient (and simple) way to map UV’s on any terrains (but textures must have some features : tileable + symetric according to the diagonal, but procedurally it’s not difficult to generate :wink: ).

Now i can go back to my new level to put a new demo online quickly ^^ .

Very nice, I think if you put some time into a kick-butt shader this will look amazing :slight_smile:

Gameplay was good, only suggestions is that I would like to be able to hold down the mouse button to shoot instead of clicking.

Thank you :smiley: (sorry for answering late)

For the shaders, i can’t ! It’s not a joke, i currently develop on a laptop that doesn’t even support GLSL…
But you’re right, it would be fine, and i’d love even to try some GPGPU for this project :wink: .
Arf, soon it’s my birthday ;D .

For the shoots, yes, i will add a new weapon which will do that (a machine gun) for the intensive shooting times :wink: .

Otherwise, still no new demo :frowning: , i progress very slowly on some new level… I hope it’ll be complete next week.