I am making an open world game. I split the world into segments, 9 of which are always loaded, the player in the center. Move over a segment and I load the next apropriate segments before the player reaches them.

I wanted to do this loading on a seperate thread, but with LWJGL if I load a texture from another thread it cannot be displayed. (I don't have the error but can recreate for it. I found this was the problem from an IRC log google gave me )

Each segment may have different textures, and may share some with other segments. Too many texture exist in total to have every single one loaded onto one atlas. If I load everything in the same thread as the rendering is done, there would be a significant pause when you reach the end of a segment. Does anyone have any experience with open worlds and streaming in world data they can share? Specifically though this thread business is my problem.

You can load/decode images from any thread; but you will want to upload the bytes to the GPU on the same thread as the rest of your OpenGL calls.

SlickUtil will not be a great candidate for async texture loading. Instead, I'd suggest checking out out Matthias' TextureLoader.

More importantly; how are you storing/rendering your maps? If you aren't using tiled maps (or a similar technique) then you may want to consider it. Loading a single sprite sheet at startup (and streaming "map" data) is much more efficient than decoding many large images. If all of your tiles don't fit in a few 1024x1024 textures (seems unlikely), you can organize the sprite sheets by "area" and load/unload them as necessary.

I am using tiles, currently for creating maps I have a map editor which just stores a texture per tile and I'm just binding each texture for each tile as its only a map editor for me. I think I'll have a go with libgdx though, looks really nice. Thanks to you both

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