Regarding the LWJGL-fullscreen-failing-after-swing component bug, I have contacted the ATI CATALYST team, and awaiting their response. The crash is happening in wglMakeCurrent. The parameters passed to it, is fine - and even if they weren't it still shouldn't crash _inside_ that method!

wglMakeContextCurrent (instead of wglMakeCurrent) is used when dealing with Pbuffers. Maybe the same call has to be used in the gl window? It's an extension so it have to be detected, but it' worth a try.

java.lang.UnsatisfiedLinkError: no timer in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at com.dnsalias.java.timer.windows.WindowsTimer.loadLibrary(WindowsTimer.java:30) at com.dnsalias.java.timer.windows.WindowsTimer.available(WindowsTimer.java:18) at com.dnsalias.java.timer.AdvancedTimer.init(AdvancedTimer.java:33) at com.dnsalias.java.timer.AdvancedTimer.<init>(AdvancedTimer.java:25) at com.wurmonline.client.WurmClient.run(WurmClient.java:177) at com.wurmonline.client.WurmClient$4.run(WurmClient.java:256)14 fps20 fps18 fps20 fps18 fps18 fpsjava.net.SocketException: Address family not supported by protocol family: no further information at sun.nio.ch.DatagramChannelImpl.disconnect0(Native Method) at sun.nio.ch.DatagramChannelImpl.disconnect(Unknown Source) at org.rubberbrain.util.udp.UdpClient.disconnect(UdpClient.java:57) at org.rubberbrain.rhyme.RhymeClient.disconnect(RhymeClient.java:184) at com.wurmonline.client.gui.WorldView.disconnect(WorldView.java:842) at com.wurmonline.client.gui.WorldView.clientTick(WorldView.java:781) at com.wurmonline.client.WurmClient.clientTick(WurmClient.java:221) at com.wurmonline.client.WurmClient.run(WurmClient.java:208) at com.wurmonline.client.WurmClient$4.run(WurmClient.java:256)

...

the message window also constantly reports GLERRORs. When I try to force quit, my computer crashes.

Edit: I had posted a text about not being too sure that it's driver related here....forget it! ATI released the Cat 3.6 today (or yesterday) and the problem with the jogl version is gone now!! No more graphics glitches.

Framerate is bound to be horrible. I'm getting ~60 fps in this version.I'll optimise the tree culling further.. As it is now, I get the same fps with tree culling on as I do when it's off, and the culling strips about two thirds of the trees.

sure:java.lang.UnsupportedOperationException: Cannot change display mode at java.awt.GraphicsDevice.setDisplayMode(Unknown Source) at com.wurmonline.client.WurmClient.initGraphics(WurmClient.java:138) at com.wurmonline.client.WurmClient.init(WurmClient.java:41) at com.wurmonline.client.WurmClient$4.run(WurmClient.java:253)java.lang.reflect.InvocationTargetException at java.awt.EventQueue.invokeAndWait(Unknown Source) at javax.swing.SwingUtilities.invokeAndWait(Unknown Source) at com.wurmonline.client.WurmClient.clientTick(WurmClient.java:224) at com.wurmonline.client.WurmClient.run(WurmClient.java:172) at com.wurmonline.client.WurmClient$4.run(WurmClient.java:255)Caused by: net.java.games.jogl.GLException: Error making context current at net.java.games.jogl.impl.x11.X11GLContext.makeCurrent(X11GLContext.java:138) at net.java.games.jogl.impl.x11.X11OnscreenGLContext.makeCurrent(X11OnscreenGLContext.java:108) at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:156) at net.java.games.jogl.GLCanvas.displayImpl(GLCanvas.java:179) at net.java.games.jogl.GLCanvas.display(GLCanvas.java:84) at com.wurmonline.client.WurmClient$3.run(WurmClient.java:228) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)Linuxjava.lang.NullPointerException at com.wurmonline.client.gui.WorldView.gameTick(WorldView.java:525) at com.wurmonline.client.WurmClient.gameTick(WurmClient.java:215) at com.wurmonline.client.WurmClient.run(WurmClient.java:196) at com.wurmonline.client.WurmClient$4.run(WurmClient.java:255)

If i may make a suggestion, i've seen this effect done in other games, and i think it would be very helpful in this one: When objects are brought into view, there is a sort of 'fade in' (i guess the transparency is brought from 100% to 0% over the course of a few seconds) and it makes it look a lot smoother walking around, than if trees and tall grass was just blipping in and out of the screen immediately. Maybe you'd could implement that when an object is made visible on the screen, it is placed in the drawing area transparant, and when the object is to be removed, it can fade away first? Just a thought.

Fantastic vegetation. I've been recently looking into that. What technique did you use for the grass and trees? That's exactly the look I wanted to go for in my app. Any pointers would be great. Keep it up, it's starting to look fantastic.

I've considered that, but I'm not entirely sure how other people do that.. I'd need to z-sort everything each frame, and there can be up to a thousand trees and a thousand "grasspatches" in view at the same time..

Fantastic vegetation. I've been recently looking into that. What technique did you use for the grass and trees? That's exactly the look I wanted to go for in my app. Any pointers would be great. Keep it up, it's starting to look fantastic.

This could get lengthy, but here we go:

There are two similar systems in place, one for the trees and other "big" items (like buildings and so) and one for the tile decoration.

Whenever the user moves to a new tile, the engine scans the closest tiles with a simple for (x=-n; x<n; x++) for (y=-n; y<n; y++) for trees.For each tile that contains a tree, it calculates how far away it is from the tile the user and how many tree neighbors it has.If the ratio of neighbors versus distance is over a certain threshold, AND the tree is on an "odd" tile (odd==((x+y)&1)), that tree is ignored. (effectively "trimming" dense forests when they are far away that you don't notice the difference)Then a new Random is created with x*somePrime+y*someOtherPrime as the seed, and a new Tree object is created based on that Random object. This will ensure that a tree on a specific tile will always look the same without me ever having to store that information. Information like offset within the tile, rotation, size and color is generated.That Tree object is then added to a SortedSet, sorted by distance.

The rendering loop iterates over the set, checks if the tile the tree is on is visible, and renders the tree if it is. The first trees up to a certain limit are rendered in high detail mode (right now just a cross of three polygons. Will be full models later), and the rest are rendered in low detail mode (billboards). When more than the maximum number of trees has been rendered, the iterator exits.

Tile decorations work almost the same, with the exception of the texture of the tile deciding what types of decorations will be added to it. The amount of decorations added to a tile depends on the distance to that tile, with the biggest decorations being added first.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org