1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Ben - July 8 2015

Discussion in 'Developer Progress Reports' started by Benjamin, Jul 9, 2015.

  1. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    Over the past few days I have been working largely on generation stuff and random fixes for random things, but the thing I am working on now specifically is Biomes! And I am so pumped about the system.

    Since we reverted to CPU gen, we have a lot more flexibility in generation, and we can go back to an infinite sub-biome specification sort of thing. Well, not totally infinite, eventually it will stack overflow, but you can go pretty damn deep. Today I got sub-biome and base biome specification working, as well as properly generating the biomes. Right now the biomes are all identical, so the next step is to add biome-specific terrain and flora as well as interpolation between different biomes.

    Heres an example biome specification in YAML that I was testing with:

    baseLookupMap: "Planets/Aldrin/base_biomes.png"
      displayName: "Arid Badlands"
      mapColor: [230, 230, 158]
      childColorMap: "Planets/Aldrin/arid_badlands_biomes.png"
      xAxis: noise
          - octaves: 3
            persistence: 0.8
            frequency: 0.15
            low: -50.0
            high: 300.0
      yAxis: height
        - id: sandy_desert
          displayName: "Sandy Desert"
          mapColor: [230, 230, 43]
              - type: noise_ridged
                octaves: 6
                persistence: 0.5
                frequency: 0.6
                low:  0.0
                high: 200.0
        - id: plateau
          displayName: "Plateau"
          mapColor: [218, 132, 2]
        - id: oasis
          displayName: "Oasis"
          mapColor: [179, 201, 4]
      displayName: "Dry Plains"
      mapColor: [151, 151, 104]
    The top level biomes are the base biomes, and they are mapped with the baseLookupMap. Currently that map looks like this:


    Each color corresponds to a certain base biome. The bottom right corner is arid_badlands. Whenever terrain lies in arid_badlands, it will check for subbiomes with the childColorMap of arid_badlands. Instead of using temperature and rainfall as in the base biome map, it uses height for the Y coordinate and a noise function for the X coordinate. Here's that color map:


    The black is no sub biome, and will just use arid_badlands. The sandy color is sandy desert, and the green is oasis. As you can see, oasis only occurs at low altitudes (since it needs to be by water) and it is always surrounded by sandy desert. Instead of height for Y you can use another noise function, but currently only noise and height can be used for lookups into texture maps. Let me know if you have any other ideas for that!

    Here are debug images of biomes from space.


    [​IMG] [​IMG] [​IMG]

    As you can see, even with CPU gen, the terrain quality is still pretty good. CPU gen switching was definitely a positive change.

    Tomorrow, sub-biome interpolation and terrain contribution!
    Last edited: Jul 9, 2015
    Benjamin, Jul 9, 2015
    Last edited by Benjamin; at Jul 9, 2015
  2. ColdFuseon

    ColdFuseon Lost in Space

    • Contributor
  3. Thomas988

    Thomas988 Back Into Space

    • Member
    Niiiiiiiiiiiiiice. :cool:
    Benjamin likes this.
  4. Gingy

    Gingy Back Into Space

    • Member
    I think I asked this on the thread where you announced the change, so feel free to disregard this if I already got an answer to it. Would switching to the CPU based method increase CPU requirements for this game? I'd like to still be able to hit a consistent 720p 30fps on my old rig (I know that's a really low standard, but we're talking about an 11 year old chipset). Although, I have my doubts that will not happen, since the other components in this computer allow me to almost reach that consistently in 0.1.6 already.
    Benjamin likes this.
  5. Arctic

    Arctic Giant Robot Advocate

    • Tester
    Looking forward to the next update!
    Benjamin likes this.
  6. Sevio

    Sevio Back Into Space

    • Member
    Interesting to see how the biomes and sub-biomes are being generated here! I was familiar with the base biome map idea based on temp and rainfall, but the sub-biome map based on altitude and noise allows for some neat stuff as well :) Will slope eventually play a part in the biome or is that more a matter of voxel generation? (sides of mountains and cliffs)
    Benjamin likes this.
  7. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    The CPU generation in this version should actually be a bit less intensive than the CPU generation in 0.1.6 for the most part, however if the biome system for Aldrin gets really complicated (which we want) it might be more intensive. Right now SoA is optimized to run on CPUs that have 3 or more hardware threads, so quad cores or dual core hyperthreaded will do great. However a dual core non-hyperthreaded might not run very well at all, since we have a render thread, main thread, and a threadpool, which needs at least 3 threads. There is a way to solve this a bit by combining the threadpool and main thread, however it would still result in a much slower experience.

    Hmm that is an interesting thought, when might slope be used? Can you give a specific example?
    Thomas988 likes this.
  8. PsychoticLeprechaun

    PsychoticLeprechaun Designer & Web Developer

    • Dev Member
    If you want a transition from plains to tall hills with a subiome of scree slopes and the like, perhaps?
    Benjamin likes this.
  9. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    Problem with using slope is that we can't accurately get slope on far terrain without generating 4x as many points as we need, which isn't a good idea with CPU gen.
  10. Gingy

    Gingy Back Into Space

    • Member
    That makes me feel better about it, since the processor I was talking about is technically a single core with hyperthreading. I don't expect it to always run well on that chipset anyway, since, again, it is really old (so old that I'll be replacing it within the next few weeks) My next CPU will probably handle the game MUCH better, considering it actually has multiple physical cores. It sounds like the game will continue to exceed my expectations with how well it performs.
    Benjamin likes this.
  11. Arpak

    Arpak Moderator - Former CM

    • Moderator
    Holy hell, what CPU is it? A single hyperthreaded CPU sounds like fun to mess with.
    Benjamin likes this.
  12. Gingy

    Gingy Back Into Space

    • Member
    A Pentium 4 @ 2.8ghz. I think it also only had a 1MB L3 cache.
    Benjamin likes this.
  13. Blackbeard Teach

    Blackbeard Teach Crash Landed

    • Member
    Sensational, I love the idea of sub biomes from space. Will these be implemented in 0.2.0?
    Gingy and Benjamin like this.
  14. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    I would say definitely below the minimum system reqs for sure :p

    Absolutely. From space they probably won't look much different. What is great about these is that we can cram a CRAP ton of variety of biomes into the world, so that when you are walking around you are constantly hitting other sub-biomes. Sub biomes will typically be similar in climate to their parents, so it will flow nicely, but each might have different flora, terrain, wildlife, minerals, caves, ect. With some help from you guys, I think we can have an incredibly detailed surface to explore. Which is why I really need to spend the time to get this right.
    Con No 1 likes this.
  15. Danarkivus-2

    Danarkivus-2 Back Into Space

    • Member
  16. Whoisthatkidd

    Whoisthatkidd Balanced Balancer

    • Member
    Benjamin and Thomas988 like this.
  17. Thomas988

    Thomas988 Back Into Space

    • Member
    I love it when guys find these things
  18. Gingy

    Gingy Back Into Space

    • Member
    That was so relatible, it was painful.

    Fortunately, I'll actually have the rest of my parts within the next few weeks. I might actually be able to at least run SoA in 720p 60fps.
    Benjamin likes this.
  19. Sevio

    Sevio Back Into Space

    • Member
    It might not directly matter for the generation of the voxel terrain at that spot, but a steep slope in a forest/grassland biome probably needs a rocky texture because loose sediment doesn't make cliffs and grass/trees don't grow on cliffs. :)
    Benjamin likes this.
  20. PsychoticLeprechaun

    PsychoticLeprechaun Designer & Web Developer

    • Dev Member
    We will be able to do things like specify far terrain textures for different biomes, including different textures for a single biome based on gradient of the far terrain mesh!
    Benjamin and Sevio like this.
Similar Threads: July 2015
Forum Title Date
Developer Progress Reports Ben - July 24 2015 Jul 25, 2015
Developer Progress Reports Ben - July 16 2015 Jul 17, 2015
Developer Progress Reports Matthew - -∞ -> July 2 2015 Jul 3, 2015
Developer Progress Reports Matthew - July 1 2016 Jul 1, 2016
Developer Progress Reports Matthew - Nov 17 2015 Nov 17, 2015

Share This Page