Terrain Generator


  • F

    Thank you :-) Well, not sure what comes out of this, I'm more engine/library writer rather than a game developer but who knows :) . But I shared this work so whoever is interested in it can re-use it as as. It would be nice to put the references to the original blog posts (included in code).

    @Martin I'd be interested in the profiling since it seems the interpreter when generating the terrain takes its time, but it's expected since there's quite some math behinf (opensimplex noise). But the drawing itself should go straight to switch gfx pipeline...

    The complexity is as follows: terrain is 256x256 heightmap array resulting in 255x255x2 triangles - which is around 130k. Typically I draw around 600 trees (the max is 1500). Each tree might have 100-200 triangles? (just guessing) resulting in additional 60k or 120k triangles. All in all I should be under 500k triangles which is not that much :)


  • F

    @mixaal I would also like profiling. I've encountered some code that runs very slow and it's not clear to me if there's a specific task that is very slow or if it's a equally distributed slowness.


  • F

    The current status includes grass, clouds and skybox, also cleaned-up the code a bit ;)

    Some clouds in the sky:
    clouds01.jpg

    Overcast:
    overcast.jpg

    In the highlands:
    in-the-heights.jpg


  • F

    This looks so cool! Awesome job man.


  • F

    @Jongjungbu Thanks a lot :) !


  • Fuze Team

    Absolutely awesome beyond words. Just took a look at the code.. Think I've got some homework to be getting on with!

    I think you should add a single, randomly placed, random object and the goal is to find it. (It should be ridiculously small)


  • F

    Hi @Dave , Thanks for these words ! Good idea to make it a little more like a game rather than a demo. Will take a look at it !


  • F

    Ridiculously small? @Dave
    You are brutal!


  • F

    Isn’t that why people talk about needles in haystacks? Because they’re fun to find, right?


  • F

    amazing work!


  • Fuze Team

    So tell us Mixaal... what could we do to the terrain generator to help you on this quest - any limitations? what does it need. The truth is it is an early function and one very much open to expansion. At this stage no one is better qualified to comment than you. I am truly 'gob-smacked' (classic English phrase!) by what you have achieved so far.


  • F

    Hi @Jonboy
    Thank you for your interest ! The limit I hit was the terrain size, anything bigger than 256x256 didn't finish (more precisely, didn't wait for it to finish), it might be that opensimplex noise uses quite a lot of math. So to put these into some RFE list:

    1. Be able to generate huge terrains 4096x4096 or even bigger
    2. Having something like ROAM in place, i.e. user generates the terrain and the terrain is drawn in an optimized way, the further you're the bigger patches are drawn:
      https://www.gamasutra.com/view/feature/131596/realtime_dynamic_level_of_detail_.php
      https://developer.nvidia.com/gpugems/GPUGems2/gpugems2_chapter02.html
      The latter one can be very efficient on modern GPUs when displaying large terrains
    3. Having simplex noise or perlin noise implementation in F4NS might speed up things a lot, the noise generation is handy not only for mountains but for any "map": water, clouds, maze, 3D fractals (rocks), etc.
    4. I almost forget! Be able to specify textures for the terrain.
    5. Sometimes be able to draw triangle on my own would be handy ;)


  • Loving the terrain generator... I had a brief play and came across the same 256*256 limit.... Also something strange happens when the camera passing through zero on the Z axis...? (I started off at Z0 looking at Z0 and the image doesn't appear at all..... took me ages to work out what was wrong!)


    Full code is in the first frame... still amazed at what you can do with so little code!


  • Fuze Team

    Talking of terrain generation have you seen this one from Japan:


  • Fuze Team

    This is absolutely awesome... Mandelbrot set is so fascinating and to see it like this is incredibly exciting.


  • F

    Hi @Myddrak

    Yes I assume this is a bug Fuze team is aware of since they have in their tutorial - 0.0001 shift for the camera Z-axis view as well ;-) I was wondering why and I bumbed into the same bug as you described here.



  • I found a bug. When you hit the -- button the clouds seem to studder a bit.


  • Fuze Team

    Thats not a bug. When the program is running, pressing minus takes a screenshot capture and uses it as the project thumbnail. The stutter you're seeing is just that background process running - the Switch only has so much of everything to go around.


Log in to reply