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

Ben - July 16 2015

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

  1. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    Yo guys! I have been doing a crap ton of generation stuff over the past week. Optimizing things, working on transitions, ect.

    I switched us over to a new biome method. Rather than having lookup textures that are hand designed, we now specify properties in a file for min/max temperature, humidity, height, and random noise for the distribution of sub-biomes. The reason for this, is that it makes biome transitions MUCH easier to calculate, and it also uses less RAM than the other solution. The downside is that it will be a bit harder to visualize these biomes when you are making them in data, but I am confident that with the right tools modders will still make lots of great biomes.

    First ill explain the transition stuff. Without interpolation between biomes, we end up with crap like this:
    [​IMG]
    This is the edge between a "plateau" and an "arid badlands" biome. Because the plateau has its own noise functions, this occurs. With the old lookup texture method, I tried using a blur function to sort of blur the lookup maps on the CPU, and while it did okay, it was REALLY slow, and it made it so that you could not control the transition length at all.

    Here's an example result with the blur, but without any interpolation so you can see the steps of the burred texture.
    [​IMG]
    Every biome transition would have this same length. As you can see below, It looks ok with interpolation, but it was just too slow to calculate.

    [​IMG]
    Yellow = sandy desert. orange = plateau.

    With the new method of pure YAML bound specification, I wanted a very fast way to generate these biomes, without needing ANY preprocessing. And the results were very good!

    [​IMG]
    [​IMG]
    Green = oasis biome.

    Here is what the biome output looks like from space right now, with axial tilt so you can see the full range from pole to equator. (it will become MUCH more complex in the future).
    [​IMG]

    After I got this working, I started moving on to flora generation. I started with simple single block flora.
    [​IMG]

    Then I moved on to allowing them to have custom distributions so that they can cluster:

    [​IMG]
    [Ignore the weird edges to this test world, its due to a layer parsing bug that is so easy to fix]

    They look pretty cool with SSAO, even though our SSAO isn't completely correct I think:
    [​IMG]

    After single block flora were tackled, I moved on to tree generation. It was a lot of work to parse the tree files in YAML since I wanted to have some custom parsing rules, but once that was finished (yesterday) I was able to start working on actual generation. The new tree generation algorithm is going to be much faster than the 0.1.6 one, as well as providing MUCH more versatility in generation. You can generate trees, boulders, ice cream cones, whatever you want.

    The way it works is that you can specify in YAML a series of "data points" for each tree that allow you to fully customize the trunk shape and tree properties from the bottom to the top of the tree. You can also specify ranges for these properties based on the age of the tree. So far it is proving to be VERY versatile and fast.

    Here's some progress shots from today:


    [​IMG]
    [​IMG]

    [​IMG]
    Bugs are fun too :p

    In order to blend between data points I use hermite interpolation. Here it is without and with hermite interpolation, and you can see why its so important.

    [​IMG]
    [​IMG]

    You can make some really complex shapes. Here's a cup tree with only 3 data points needed.

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

    And I do recall promising ice cream cones...

    [​IMG]
    [​IMG]

    And how about we randomize the tree ages?

    [​IMG]

    These ice cream cones were generated in a grand total of < 0.02 seconds. (it was slower to add the blocks to the compressed voxel data than it was to generate the damn things)

    Tomorrow I am going to work more on branches and leaves, and soon I will start working on tree fruit as well! With "fruit" generation, you will be able to generate hanging fruit, where "fruit" is really any single or multiblock flora you want. Vines, giant acorns, glowing orbs, whatever.

    Oh and let me know if you don't like the lower frequency but higher content reports. I can split these up into more, smaller reports if you would prefer.

    Now I am going to make some fried chicken!

    Be on the lookout for epic trees in the future...
    Last edited: Jul 17, 2015
    Benjamin, Jul 17, 2015
    Last edited by Benjamin; at Jul 17, 2015
    #1
    Sevio, Jpr, joppiesaus and 8 others like this.
  2. ColdFuseon

    ColdFuseon Lost in Space

    • Contributor
    Nice !
    ColdFuseon, Jul 17, 2015
    Last edited by ColdFuseon; at Jul 17, 2015
    #2
    Benjamin likes this.
  3. ColdFuseon

    ColdFuseon Lost in Space

    • Contributor
    looks like we're approaching 0.2.0
    Benjamin likes this.
  4. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    Slowly but surely! I am sort of rewriting most of the voxel stuff, since I know a lot more now than I did then, but once its finally all back in we can really take off on the new features.
    Thomas988 and ColdFuseon like this.
  5. Thomas988

    Thomas988 Back Into Space

    • Member
    I love you.

    But seriously, this is amazing! Absolutely incredible work, Ben, 0.20 is looking insane! :D
    Benjamin likes this.
  6. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    Thanks! I think I can possibly eliminate a lot of those intersecting trees with a prepossessing pass. I will experiment with that as well, forgot to mention it in the post.
    Thomas988 and ColdFuseon like this.
  7. Thomas988

    Thomas988 Back Into Space

    • Member
    Things are getting funky m8 ( ͡~ ͜ʖ ͡°)
  8. Arctic

    Arctic Giant Robot Advocate

    • Tester
    Dat SSAO tho
    Benjamin and Thomas988 like this.
  9. Danarkivus-2

    Danarkivus-2 Back Into Space

    • Member
    this is amazing!!!
    Benjamin and Thomas988 like this.
  10. Snipecoolbunny

    Snipecoolbunny Back Into Space

    • Member
    omg. uve been busy!
  11. Sevio

    Sevio Back Into Space

    • Member
    Looking good! Will this generation also be available in-game to the core mechanics and mods to generate ice cream cones... Err, I mean trees after planting something? :p
  12. Benjamin

    Benjamin Lead Developer

    • Dev Leader
    Of course!
    Sevio likes this.
Similar Threads: July 2015
Forum Title Date
Developer Progress Reports Ben - July 24 2015 Jul 25, 2015
Developer Progress Reports Ben - July 8 2015 Jul 9, 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