Naulus

WurmWorldGenerator

Recommended Posts

After long work I can finnally release the first version of my map generator. I've called it 'WurmWorldGenerator' to avoid confusion with the other one. All generation algorithms are executed on the GPU and it can even show all changes in realtime. In order to run the application you need a good graphic card with OpenGL 3.3 support and Java 8.

You can download the latest version on sourceforge: https://sourceforge.net/projects/wurmworldgenerator/

 

Features

  • Uses the graphic card to generate the map
  • Can display changes in realtime
  • Each step can be edited
  • Generation data can be saved

Current Limitations

  • At the monent the full map is updated if a parameter is changed.
  • No zoom function is available.

Requirements

  • Java 8
  • Graphic card with OpenGL 3.3 support

ChangeLog

 

 

 

 

Version 1.1.0 (2015-11-18)
  • new start dialog
  • menus and toolbar
  • flower biomes
  • possibility to change number of mining actions

 

 

 

Version 1.0.1 (2015-11-15)
  • map template
  • scale window if larger than screen
  • fix of problem with dirt generation

 

 

 

Edited by Naulus

Share this post


Link to post
Share on other sites

Manual

The map is created in multiple steps. To make the changes of a step permanent you have to click on the 'Apply' button. If you change for example the terrain and click 'Apply' then you'll also have to click on 'Apply' on all following steps.

1. Terrain generation
The terrain is generated by means of combining multiple layers.
A layer can be either a noise function, a value or a border.
These layers can be blended with different blending modes.

 

1.1 Noise Generator
The noise layers are used to generate the terrain. For more complex landscapes you'll need more than one layer.
A good way to create a landscape with mountains is to use a noise generator with 8-Layers and a factor of 300 as a base layer
and a second noise generator with a cutoff from 0.5 to 0.75 and a factor of 500 for the mountains. Both can be found in the preset list.
You can also set the blending mode of the mountain layer to 'subtract' to make the sea deeper or to create lakes.

1.2 Value Generator
Generates a fixed value. Mainly used to change the water level (together with 'subtract' blending mode).

1.3 Border Generator
Generates a border which can have rounded corners to aviod artifacts. Border generators should be added at the end of the list.
A combination of a border with 'multiply' blending and a factor of 0.6 and a border with 'subtract' and a value that is high enough so that no land hits the edge work good. Both can be created with 'Add > Border (fade out)' and 'Add > Border (lower)'.

2. Soil
Controls how much dirt is dropped on a tile.
Height controls how much dirt is dropped in flat areas, Slide Start is the slope where the dirt starts to slide down the hill and Slide End is the slope at which the rock becomes visible.

3. Biomes
A biome can be either a ground tile or a tree/bush. Biomes can be restricted to a height (in meters) and a slope (in 'dirts'). They can also be filtered by a noise function if you like a natural looking distrubtion accross the map.

You can also choose a noise preset if you don't want to create your own one.
If you choose a noise preset it is copied to the biome and you can change it by clicking on the '...' button without changing the original file.
If you don't like to create your own biomes you can also choose a template from the template folder ('Data > Import').

3.1 Tree/Bush biomes
These biome type has an additional parameter to control the frequency of a tree or bush. If you use a noise filter make sure that the cutoff span is large enough (at least 0.2). The algorithm won't work properly otherwise.
The brighter the noise is the more likely it is that a tree grows on this tile.

 

3.2 Flower biomes

Flowers biomes have like trees and bushes a slider to control the frequency. Flowers can only grow on grass hence they are ignored when they are not an a grass tile. For this reason you should use a high frequency here.

4. Ores
You can create deposits like biomes and they also have a 'frequency' parameter. Here you should use really high values (between 0.9 and 0.95) otherwise the ores will be very rare and nearly impossible to find. You can also import a list with all ores with 'Data > Import'. There is a template with normal deposits and one with special ores like adamantine and glimmersteel in the template folder.

 

5. Noise functions

Nearly everything can be controlled by a noise function so it is important to understand how it works in detail.
To generate 'noise' that looks like clouds (which is also used for terrain generation) multiple layers with random values are needed. Every layer is scaled down which can be controlled with the Scaling slider. If you don't like to achieve a specific effect it is the best to use a scaling with [start to start+layers]. When you do this every layer has the half size of the previous layer.

You can controll the balance between the smaller layers and the larger layers with the Detail slider.

When you don't use the cutoff parameter the result of the noise function is between -1 and +1. On this way you can use the factor to define how high the generated terrain is.

When you use the cutoff parameter the result of the noise function is between 0 and 1. When enabled the value is restricted to the cutoff range. A noise function with a cutoff can be used to filter biomes and to generate mountains.
 

Edited by Naulus

Share this post


Link to post
Share on other sites

I tried 1.0.0-beta, but it's not working on my old card (AMD HD6670, OpenGL 4.5). I'll try again later, once my GTX 970 is back from repair.

 

[JavaFX Application Thread] INFO AppContext@6fd365d7 - new application context was created


[JavaFX Application Thread] INFO AppContext@6fd365d7 - application directory is C:\test
[JavaFX Application Thread] INFO GraphicComponentProcessor - pre-processor component added: graphic.framework.RendererRegister@3ecc5112
[JavaFX Application Thread] INFO GraphicComponentProcessor - pre-processor component added: graphic.framework.RenderContextRegister@78d4caf4
[JavaFX Application Thread] INFO GraphicComponentProcessor - pre-processor component added: graphic.framework.DefaultBindingStrategy@34690a37
[JavaFX Application Thread] INFO GraphicComponentProcessor - pre-processor component added: graphic.framework.component.Dispatcher@25b67849
[OpenGL Thread] ERROR MapGenerator - initialization failed
java.lang.ExceptionInInitializerError
at graphic.display.glfw.Window.create(Window.java:51)
at mapgen.editor.AbstractMapGenerator.init(AbstractMapGenerator.java:110)
at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:79)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at org.lwjgl.PointerBuffer.hasRemaining(PointerBuffer.java:265)
at graphic.display.glfw.Monitors.(Monitors.java:23)
... 4 more

Edited by Borgir

Share this post


Link to post
Share on other sites

I have an AMD Radeon HD 6570 and it's working for me.


 


I don't have time to play around with it atm but from the quick look I had, I'm impressed. I loaded an existing map I had and it loaded up fine. I tried the noise options real quick but I only got white which probably means high and flat :) but I'll have a go at it again later. I love the layered nature of this generator, makes experimenting a lot easier and it's lightning fast


Share this post


Link to post
Share on other sites

I do have my usual issues with the UI, namely that it tends not to fit on my 1366x768 screen, (yes, I'd prefer a larger one, but that's not an option everyone can manage).


 


So I have the feeling I'm missing some things either above or below the screen area.


 


One of these is the ability to quit, it's simply out of reach at this resolution, so it needs a task manager end task action for me.


 


Other than that, admittedly minor gripe, it is certainly an interesting tool, and offers different options to the other ones so far released.


 


Please, continue development of this, if only for the fact that choice is good, and different approaches will give more flexibility in design.


Share this post


Link to post
Share on other sites

Wow, This is beautiful.


I do wish one of you map generation software makers would add a "lazy" button though. So I could add a number or phrase into a field and push one button and a complete perfect map with all the biomes are done. Ready to use as is or tweak it a little more with the rest of the applications tools.


Share this post


Link to post
Share on other sites

Thanks for the feedback!


 


@Borgir


I hope that I solved the problem now. Tell me if there is still something strange happening.


 


@BadLuckBurt


When you create a new map it started with an empty document without generators.


I've uploaded a new version now which has predefined generators so there is something you can start with.


 


@Zenity


I knew that I forgot something important but couldn't remember anymore what it was ;)


I've uploaded a new version now which scales the window if it is larger than the screen.


 


@Crustyfoot


It is possible with a few clicks. You can import a complete and realistic biome list over Data > Import. In the "template" folder is a template called "Upland.biomes" which has biomes for trees, swamps, coast and resources. The same works for ores.


Share this post


Link to post
Share on other sites

I downloaded the 1.01 beta. If I choose 2048x2048 on the first screen, it shows the first generator section with the presets you mentioned. The map window itself stays blank, I can't get any terrain contours to show or anything. If I then click on the Soil tab, I get this error:


 





java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
    at java.util.concurrent.CompletableFuture.get(Unknown Source)
    at mapgen.action.MapDocumentActions.loadStep(MapDocumentActions.java:165)
    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 common.actions.ActionSet$InternalAction.execute(ActionSet.java:95)
    at common.actions.CallProcedure.call(CallProcedure.java:22)
    at common.actions.ConcurrentActionMap$2.run(ConcurrentActionMap.java:51)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.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)
Caused by: java.lang.NullPointerException
    at mapgen.editor.processor.SoilGenerationProcessor.update(SoilGenerationProcessor.java:99)
    at mapgen.editor.processor.SoilGenerationProcessor.update(SoilGenerationProcessor.java:25)
    at mapgen.editor.TaskProcessor.compute(TaskProcessor.java:67)
    at mapgen.editor.TaskProcessor.update(TaskProcessor.java:45)
    at graphic.framework.GraphicComponentProcessor.update(GraphicComponentProcessor.java:105)
    at graphic.framework.ComponentManager.update(ComponentManager.java:115)
    at graphic.framework.GraphicEngine.render(GraphicEngine.java:57)
    at mapgen.editor.AbstractMapGenerator.loop(AbstractMapGenerator.java:161)
    at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:83)
    ... 1 more


 


Am I doing something wrong?


 


- edit


 


Just noticed the application.log in the folder, just in case you need it:


 




[JavaFX Application Thread] INFO  AppContext@4dd9b08c - new application context was created
[JavaFX Application Thread] INFO  AppContext@4dd9b08c - application directory is Z:\Mods\wurm-world-generator-1.0.1-beta
[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.RendererRegister@33af100e
[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.RenderContextRegister@31af6cf3
[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.DefaultBindingStrategy@39ca3ef3
[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.component.Dispatcher@6feb6a33
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.MapInitProcessor@411348bb
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.MaskUpdateProcessor@6e235512
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.HeightGenerationProcessor@15aac02a
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.SoilGenerationProcessor@2050f183
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.SimulationProcessor43@2eb62a75
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.BiomeGenerationProcessor@31603eea
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.CaveGenerationProcessor@333acb61
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.view.ViewRegister@2fbf17aa
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.RendererRegister@33af100e
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added and initialized: mapgen.editor.util.UploadBuffer@2f6fde0f
[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext
[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext
[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext
[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext
[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.SingleObjectContext
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.RenderContextRegister@31af6cf3
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.DefaultBindingStrategy@39ca3ef3
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.component.Dispatcher@6feb6a33
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.MapInitProcessor@411348bb
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.MaskUpdateProcessor@6e235512
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added and initialized: mapgen.editor.util.SimpleShapes@6a7b3dd5
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added and initialized: graphic.loader.shader.ShaderLoader@35c83ae2
[OpenGL Thread] ERROR GraphicComponentProcessor - initialization of component failed: mapgen.editor.processor.HeightGenerationProcessor@15aac02a
opengl.shader.ShaderException: FRAGMENT_SHADER compilation error
    at opengl.shader.Shader.compile(Shader.java:71)
    at graphic.loader.shader.ShaderLoader.load(ShaderLoader.java:66)
    at mapgen.editor.processor.HeightGenerationProcessor.init(HeightGenerationProcessor.java:63)
    at graphic.framework.GraphicComponentProcessor.update(GraphicComponentProcessor.java:88)
    at graphic.framework.ComponentManager.init(ComponentManager.java:104)
    at graphic.framework.GraphicEngine.init(GraphicEngine.java:45)
    at mapgen.editor.AbstractMapGenerator.init(AbstractMapGenerator.java:138)
    at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:79)
    at java.lang.Thread.run(Unknown Source)
[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: height
[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: type
[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: cave
[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: preview
[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: mapgen.editor.renderer.NoisePreviewRenderer@c3f67a8
[OpenGL Thread] INFO  MapGenerator - initialization successful
[OpenGL Thread] ERROR GraphicComponentProcessor - initialization of component failed: mapgen.editor.processor.SoilGenerationProcessor@2050f183
opengl.shader.ShaderException: FRAGMENT_SHADER compilation error
    at opengl.shader.Shader.compile(Shader.java:71)
    at graphic.loader.shader.ShaderLoader.load(ShaderLoader.java:66)
    at mapgen.editor.processor.SoilGenerationProcessor.init(SoilGenerationProcessor.java:49)
    at graphic.framework.GraphicComponentProcessor.update(GraphicComponentProcessor.java:88)
    at graphic.framework.ComponentManager.update(ComponentManager.java:115)
    at graphic.framework.GraphicEngine.render(GraphicEngine.java:57)
    at mapgen.editor.AbstractMapGenerator.loop(AbstractMapGenerator.java:161)
    at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:83)
    at java.lang.Thread.run(Unknown Source)
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.SimulationProcessor43@2eb62a75
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.BiomeGenerationProcessor@31603eea
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.CaveGenerationProcessor@333acb61
[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.view.ViewRegister@2fbf17aa
[JavaFX Application Thread] INFO  AppContext@4dd9b08c - application component started: mapgen.appcontext.FileHistory@7772805b
 


Edited by BadLuckBurt

Share this post


Link to post
Share on other sites

Working fine here too, it now fits properly on screen, and all options, (including quit), are available, the workflow is pretty intuitive, and being able to see and alter settings without having to mess with text files or remembering seeds is marvellous, just load, edit and apply after altering things.


 


Haven't managed to actually break anything yet, and the only small niggle is either me not understanding things or a design choice that means setting up a map folder before launching the tool.


 


Thinking of other terrain generation software, it might be an idea to use a 'new project' approach, where users can choose to set up a new project, which will generate the folder for them, or let them edit/generate in an existing folder?


Share this post


Link to post
Share on other sites

@Sarcaticous


Good to hear that it's working :)


 


@BadLuckBirt


No, you don't do anything wrong and the application log helps alot. Your graphic card has problems to compile some shaders. Unfortunately the logger removed the error message with the reason why it fails. I've changed the shaders now and fixed the problem with the logger so it shows a detailed message if the error still occurs.


 


@Borgir


It is a bug in one of the libraries I use then. I removed the code that causes the error completely now - it was only there to add support for multiple monitors. I hope that it works then ;)

Share this post


Link to post
Share on other sites

 

@BadLuckBirt

No, you don't do anything wrong and the application log helps alot. Your graphic card has problems to compile some shaders. Unfortunately the logger removed the error message with the reason why it fails. I've changed the shaders now and fixed the problem with the logger so it shows a detailed message if the error still occurs.

 

 

I still get an error following the same steps (create a 2048x2048 map, click the Soil tab).

 

Hopefully the log will tell you what's going on this time:

 

[JavaFX Application Thread] INFO  AppContext@75f0789 - application directory is Z:\Mods\wurm-world-generator-1.0.2-beta

[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.RendererRegister@31a1da4

[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.RenderContextRegister@7a6b2962

[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.DefaultBindingStrategy@568547f9

[JavaFX Application Thread] INFO  AppContext@75f0789 - application component started: mapgen.appcontext.Config@5ee52eb0

[JavaFX Application Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.component.Dispatcher@7d89b38c

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.MapInitProcessor@5f886428

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.MaskUpdateProcessor@1615383

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.HeightGenerationProcessor@7602a8dc

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.SoilGenerationProcessor@465565e9

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.SimulationProcessor43@78d64aa2

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.BiomeGenerationProcessor@1f05105c

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: mapgen.editor.processor.CaveGenerationProcessor@44868550

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added: graphic.framework.view.ViewRegister@3146771f

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.RendererRegister@31a1da4

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added and initialized: mapgen.editor.util.UploadBuffer@b49693c

[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext

[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext

[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext

[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.MapRenderContext

[OpenGL Thread] INFO  RenderContextRegister - render-context initialized: mapgen.editor.SingleObjectContext

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.RenderContextRegister@7a6b2962

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.DefaultBindingStrategy@568547f9

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.component.Dispatcher@7d89b38c

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.MapInitProcessor@5f886428

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.MaskUpdateProcessor@1615383

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added and initialized: mapgen.editor.util.SimpleShapes@7d59f1ba

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component added and initialized: graphic.loader.shader.ShaderLoader@13c9c406

[OpenGL Thread] ERROR GraphicComponentProcessor - initialization of component failed: mapgen.editor.processor.HeightGenerationProcessor@7602a8dc

opengl.shader.ShaderException: FRAGMENT_SHADER compilation error

    Fragment shader failed to compile with the following errors:

    ERROR: 0:20: error(#133) Reserved word: output

    ERROR: 0:20: error(#132) Syntax error: "output" parse error

    ERROR: error(#273) 2 compilation errors.  No code generated

    at opengl.shader.Shader.compile(Shader.java:71)

    at graphic.loader.shader.ShaderLoader.load(ShaderLoader.java:66)

    at mapgen.editor.processor.HeightGenerationProcessor.init(HeightGenerationProcessor.java:63)

    at graphic.framework.GraphicComponentProcessor.update(GraphicComponentProcessor.java:88)

    at graphic.framework.ComponentManager.init(ComponentManager.java:104)

    at graphic.framework.GraphicEngine.init(GraphicEngine.java:45)

    at mapgen.editor.AbstractMapGenerator.init(AbstractMapGenerator.java:159)

    at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:91)

    at java.lang.Thread.run(Unknown Source)

[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: height

[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: type

[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: cave

[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: preview

[OpenGL Thread] INFO  RenderingStrategy - renderer initialized: mapgen.editor.renderer.NoisePreviewRenderer@50bdb1aa

[OpenGL Thread] INFO  MapGenerator - initialization successful

[OpenGL Thread] ERROR GraphicComponentProcessor - initialization of component failed: mapgen.editor.processor.SoilGenerationProcessor@465565e9

opengl.shader.ShaderException: FRAGMENT_SHADER compilation error

    Fragment shader failed to compile with the following errors:

    ERROR: 0:15: error(#133) Reserved word: output

    ERROR: 0:15: error(#132) Syntax error: "output" parse error

    ERROR: error(#273) 2 compilation errors.  No code generated

    at opengl.shader.Shader.compile(Shader.java:71)

    at graphic.loader.shader.ShaderLoader.load(ShaderLoader.java:66)

    at mapgen.editor.processor.SoilGenerationProcessor.init(SoilGenerationProcessor.java:49)

    at graphic.framework.GraphicComponentProcessor.update(GraphicComponentProcessor.java:88)

    at graphic.framework.ComponentManager.update(ComponentManager.java:115)

    at graphic.framework.GraphicEngine.render(GraphicEngine.java:57)

    at mapgen.editor.AbstractMapGenerator.loop(AbstractMapGenerator.java:182)

    at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:95)

    at java.lang.Thread.run(Unknown Source)

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.SimulationProcessor43@78d64aa2

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.BiomeGenerationProcessor@1f05105c

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: mapgen.editor.processor.CaveGenerationProcessor@44868550

[OpenGL Thread] INFO  GraphicComponentProcessor - pre-processor component initialized: graphic.framework.view.ViewRegister@3146771f

[JavaFX Application Thread] INFO  AppContext@75f0789 - application component started: mapgen.appcontext.FileHistory@1980ea97

[JavaFX Application Thread] WARN  MapGeneratorApp - couldn't execute map action

java.util.concurrent.ExecutionException: java.lang.NullPointerException

    at java.util.concurrent.CompletableFuture.reportGet(Unknown Source)

    at java.util.concurrent.CompletableFuture.get(Unknown Source)

    at mapgen.action.MapDocumentActions.loadStep(MapDocumentActions.java:165)

    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 common.actions.ActionSet$InternalAction.execute(ActionSet.java:95)

    at common.actions.CallProcedure.call(CallProcedure.java:22)

    at common.actions.ConcurrentActionMap$2.run(ConcurrentActionMap.java:51)

    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

    at java.util.concurrent.FutureTask.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)

Caused by: java.lang.NullPointerException

    at mapgen.editor.processor.SoilGenerationProcessor.update(SoilGenerationProcessor.java:100)

    at mapgen.editor.processor.SoilGenerationProcessor.update(SoilGenerationProcessor.java:25)

    at mapgen.editor.TaskProcessor.compute(TaskProcessor.java:67)

    at mapgen.editor.TaskProcessor.update(TaskProcessor.java:45)

    at graphic.framework.GraphicComponentProcessor.update(GraphicComponentProcessor.java:105)

    at graphic.framework.ComponentManager.update(ComponentManager.java:115)

    at graphic.framework.GraphicEngine.render(GraphicEngine.java:57)

    at mapgen.editor.AbstractMapGenerator.loop(AbstractMapGenerator.java:182)

    at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:95)

    ... 1 more

[OpenGL Thread] INFO  RenderContextRegister - render-context disposed: mapgen.editor.SingleObjectContext

[OpenGL Thread] INFO  RenderContextRegister - render-context disposed: mapgen.editor.MapRenderContext

[OpenGL Thread] INFO  RenderContextRegister - render-context disposed: mapgen.editor.MapRenderContext

[OpenGL Thread] INFO  RenderContextRegister - render-context disposed: mapgen.editor.MapRenderContext

[OpenGL Thread] INFO  RenderContextRegister - render-context disposed: mapgen.editor.MapRenderContext

[OpenGL Thread] WARN  MapGenerator - couldn't dispose graphic resources

java.lang.NullPointerException

    at mapgen.editor.processor.HeightGenerationProcessor.dispose(HeightGenerationProcessor.java:85)

    at graphic.framework.GraphicComponentProcessor.dispose(GraphicComponentProcessor.java:135)

    at graphic.framework.ComponentManager.dispose(ComponentManager.java:133)

    at graphic.framework.GraphicEngine.dispose(GraphicEngine.java:67)

    at mapgen.editor.AbstractMapGenerator.destroy(AbstractMapGenerator.java:200)

    at mapgen.editor.AbstractMapGenerator.run(AbstractMapGenerator.java:108)

    at java.lang.Thread.run(Unknown Source)

[Thread-4] INFO  AppContext@75f0789 - execute shutdown handler

[Thread-4] INFO  AppContext@75f0789 - shutdown application component: mapgen.appcontext.Config@5ee52eb0

[Thread-4] INFO  AppContext@75f0789 - shutdown application component: mapgen.appcontext.FileHistory@1980ea97

 

[JavaFX Application Thread] INFO  AppContext@75f0789 - new application context was created

Share this post


Link to post
Share on other sites

Are you using OpenCL or CUDA?   If using custom shaders I would expect it to be buggy across different platforms.   Planet Explorers had a lot of problems on mac and PC laptops until they started using a version that used any availlable GPU or CPU, and they also was doing calculations on GPU.


Share this post


Link to post
Share on other sites

@Borgir

It is a bug in one of the libraries I use then. I removed the code that causes the error completely now - it was only there to add support for multiple monitors. I hope that it works then ;)

 

Version 1.0.2-beta seems to be working, cool. Thanks.

Share this post


Link to post
Share on other sites

Been exploring a pretty nice test map, ores veins all hold 1000 ores according to set data as GM.


 


Not certain if this is a setting I've missed, or if this is even set by the map design process, it just seems strange that every single ore vein is 1000 ores is all.


 


Not a game breaker for me, since pleasing map generation is my goal, but I thought I'd mention it now.


Share this post


Link to post
Share on other sites

Thinking of other terrain generation software, it might be an idea to use a 'new project' approach, where users can choose to set up a new project, which will generate the folder for them, or let them edit/generate in an existing folder?

 

My friend suggested exactly the same :)

I will create a new start dialog which makes creating and loading maps easier.

 

 

Are you using OpenCL or CUDA?   If using custom shaders I would expect it to be buggy across different platforms.   Planet Explorers had a lot of problems on mac and PC laptops until they started using a version that used any availlable GPU or CPU, and they also was doing calculations on GPU.

 

Neither. I'm using OpenGL and render the map on a huge off-screen texture. Since maps are very image like it is perfectly suited for map generation. As long as the graphic card supports OpenGL 3.3 there shouldn't be any big problems. It would even be possible to get it working on older hardware but I would have to write a fork for each shader because the OpenGL shading language changed alot since its first release.

 

 

Been exploring a pretty nice test map, ores veins all hold 1000 ores according to set data as GM.

 

Not certain if this is a setting I've missed, or if this is even set by the map design process, it just seems strange that every single ore vein is 1000 ores is all.

 

Not a game breaker for me, since pleasing map generation is my goal, but I thought I'd mention it now.

 

When the number of mining actions is not set the wurm map api automatically sets it to 1000. I will add an option so you can set the number of actions for each vein.

Share this post


Link to post
Share on other sites

I still get an error following the same steps (create a 2048x2048 map, click the Soil tab).

 

Yes, it does. The graphic driver doesn't like a shader variable called 'output' (even when I couldn't find it in the shader specification). I've renamed it and updated the current 1.0.2-beta version. I think it works now.

Edited by Naulus

Share this post


Link to post
Share on other sites

Yes, it does. The graphic driver doesn't like a shader variable called 'output' (even when I couldn't find it in the shader specification). I've renamed it and updated the current 1.0.2-beta version. I think it works now.

 

Just tried and it works. I do hope you're ready for another bug :unsure:

 

When I move a slider, the Apply and Data buttons start moving off to the right and disappear. It looks like the window grows wider horizontally but it's frame doesn't. I also see the scales underneath the sliders readjust to the new width.

 

- edit

 

I should add, this tool is brilliant :D

 

- edit 2

 

I just noticed that the window also grows when I click on different tabs.

Edited by BadLuckBurt

Share this post


Link to post
Share on other sites

 

When the number of mining actions is not set the wurm map api automatically sets it to 1000. I will add an option so you can set the number of actions for each vein.

 

 

Either that, or perhaps some randomness with a bias toward the max of 10,000, or randomness with a bias slider, it's really a question of how much control Vs how much complexity the map generator presents to the user.

 

I really do like the maps it produces though, it feels 'gentler' that some of the others, and when I noticed I could have snow capped mountains I was totally sold on it, no idea why they didn't do that in WO ages ago, the visual appeal for me is higher, and means I don't spend ages flying around mountains painting them with snow so much :D

Share this post


Link to post
Share on other sites

Just tried and it works. I do hope you're ready for another bug :unsure:

 

When I move a slider, the Apply and Data buttons start moving off to the right and disappear. It looks like the window grows wider horizontally but it's frame doesn't. I also see the scales underneath the sliders readjust to the new width.

 

I think I already know what's wrong - I will fix that in the next patch. I've used the latest Oracle Java for testing and never had problems with it. If this is an option you could try that until it is fixed.

 

 

Either that, or perhaps some randomness with a bias toward the max of 10,000, or randomness with a bias slider, it's really a question of how much control Vs how much complexity the map generator presents to the user.

 

I really do like the maps it produces though, it feels 'gentler' that some of the others, and when I noticed I could have snow capped mountains I was totally sold on it, no idea why they didn't do that in WO ages ago, the visual appeal for me is higher, and means I don't spend ages flying around mountains painting them with snow so much :D

 

I had a similar idea. Something like a minimum and a maximum value but the bias slider is a great idea too. I think when I use some good default values someone who doesn't needs it can just ignore it but it is there when someone really wants to change it. I want to do the same for tree age.

 

I spent much time to find out where the different trees grow and which which paramters are needed to create a good looking landscape but I think it was worth it.

I also wonder why the snow isn't ingame yet. It is much more realistic when there is snow on high mountains.

Share this post


Link to post
Share on other sites
On 11/17/2015, 1:37:10, Naulus said:

 

 

I think I already know what's wrong - I will fix that in the next patch. I've used the latest Oracle Java for testing and never had problems with it. If this is an option you could try that until it is fixed.

 

 

 

Thanks. I'll give the latest Java version a try

 

- edit

 

Latest Java didn't fix it but the 1.1.0 version is working beautifully.

Edited by BadLuckBurt

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now