Weekly Update (Jul 16, 2016)

  • Traverse Team

    Hi guys,

    We have another very busy week behind us. Most of the coding is still in the area of generating ocean mesh -- we've moved away from old approach that creates one big mesh for the planet. This required the whole planet to be in-memory in order to render, and created hundreds of thousands of vertices. Having vertex animation (for waves) made it relatively GPU intensive, and consumed quite of bit of RAM to store it (both CPU and GPU memory).

    This approach completely broke when we moved to creating very large planets -- number of vertices now started to exceed millions. New solution creates a mesh only in the viewport region, on each frame (when camera moves -- but in normal gameplay camera always moves ^_^). This has to be really fast because any time spent here directly affects FPS. New implementation takes about 1-2ms on a 3.5Ghz CPU

    Very last step in this work is trimming ocean surface to edges of the ocean (since we actually simulate Ocean in Traverse -- you can have dry holes or dry tunnels under ocean if you avoid hitting ocean floor while digging).

    Currently working on properly edging the ocean with the beach line, almost finished!

    Here is a brief video demonstrating how it works -- for the video we forced 'viewport' to be 40% smaller than actual screen (red box)


    Summary from git commit history:

    Date: Sat Jul 16 21:58:00 2016 +1200

    • updated workers to refer to Ocean, rather than OceanMesh
    • ocean edge work to worker thread
    • implemented solution to non-deterministic ocean mesh randomness

    Date: Fri Jul 15 22:42:25 2016 +1200

    • fixed ocean flicker -- caused by different ordering of triangle splits
    • ocean surface generation - work in progress
    • refactor ocean surface to squeeze 1ms out of processing

    Date: Thu Jul 14 23:03:26 2016 +1200

    • ocean edging -- work in progress
    • ocean work -- work in progress
    • re-optimizing ocean mesh gen to sub-1ms

    Date: Wed Jul 13 22:36:00 2016 +1200

    • recalc ocean surface on ocean height update
    • update ocean surface only on camera move

    Date: Tue Jul 12 23:44:32 2016 +1200

    • raw ocean mesh generation complete
    • ocean surface generation - work in progress
    • ocean triangle splitting refactor

    Date: Mon Jul 11 23:36:13 2016 +1200

    • fixed ocean surface flicker bug
    • calculate viewport area once only
    • ocean surface subdivision

    Date: Sun Jul 10 21:05:36 2016 +1200

    • ocean/viewport clipping algorithm
    • ocean surface generation - work in progress

  • Nice and intense work! I really like how is it going. One question, dynamic generation will be linked to the field of view range? so if you change how far you can see, the dynamic generation will do more or less job.

  • Traverse Team

    @Draëcal Ocean gets drawn up to 10km from camera in the distance. I didn't look towards horizon in the clip -- shame.. Worst case is when we have both very far away and very close vertices -- we generate about 2000 triangles, and it takes about 1.2ms. Subdivision works relative to camera distance. All other cases its much faster.

  • Nice ocean mesh! Good job!

    Devs! Would you adding to the ocean several giant monsters?

    Best Regards

  • Traverse Team

    @AHrEJl we sure will! And like all mobs -- players get to decide what mobs spawn where, but rare mobes will have a chance of spawning by themselves..!

    We'll be working on mobs placement system and gui soon, as soon as this ocean mesh work is out of the way.

Log in to reply

Looks like your connection to Traverse Community was lost, please wait while we try to reconnect.