Coder Social home page Coder Social logo

terra's Introduction

terra's People

Contributors

pawlost avatar pilvinen avatar alexporter8013 avatar

Watchers

James Cloos avatar  avatar  avatar Brickster avatar  avatar

Forkers

pawlost

terra's Issues

Palette compression

We need to return pallete compression.
As far as I understand it pallete compression stores 4 bytes long ids and if they are used in chunk frequently they are saved in table and used in chunk as reference to saved id in table. Table is send to client via networking in chunk array.

Documentation for octree, chunk, and block formats!

Octree, chunk, and block formats need detailed documentation going over how and for what the bits and bytes are reserved + everything significant related to that.

Without proper documentation on this it will be increasingly hard to in the future to envision changes and new additions which require support from the formats.

For example we need a bit signifying that block has extra data outside of the block format - ie. containers, and other special cases. That data cannot be stored directly in the block format. Do we have that now? Yes? No? No idea -> there's no documentation.

So when we do need to add that bit -> do we have space for it... ? If not, do we have to add whole another byte to store it??

Stuff like this can lead to having to do unnecessary rewrites and to a lot of headaches.

Documentation and proper planning is important!

Wrong culling between terrains

I made a wrong asumption. I thought that between terrains should not be culling and regular mesh can be rendered there. But this is causing enourmous amount of vertices being generated and it is generaly wrong. Before I started learning from graduation exam I made important breakthrough because I am using another loop to go though blocks of different material since RLE structure is 32 as blocks x axis x 32 blocks as z axis x number of different materials as y axis. This helps reduce main loop and array from regular 32 x 32 x 32 to 32 x 32 x different materials in each row (max 32). This has been tested for front side of the blocks before I have started learning for graduation but I havent finished it. This means current dev branch is not working and it is essential for this voxel generation to finish this.

Make searching terra octree thread safe

Right now threads which are searching in terra octree are locked. This is significantly reducing speed. Maybe if I could replace array with something like ConcurentDictionary it would improve overall speed because I could stop using locks.

Chunk border culling

Currently borders between chunks have meshes. This generates too many vertices and needs to be solved. My solution is to create 6 arrays of structs containing top and bottom of a border. Each array would contain 64 of these structs and cover border between chunks. The structs can be then used in meshing to determine if there is or isnt solid material.

Allow negative coordinates in Terra

This issue is related to starandserpent/Voxel-demo#85.
This will require removing all bitwise operations in Terra, but it is only option if you want to alllow terrain generation in every direction. This is very important for Torus mapping which should happen even in negative coordinates.

Split Terra

I think only terra is not enough.
We need Terra-client which will contain only code needed on client side and unrelated to godot.
We need Terra-server which will contain only code needed on server side and unrelated to godot.
Terra-API or Terra-Core which will contain serializible data which would be send between between Terra-Client and Terra-Server.

Classes for Terra-Client
Mesher
TODO

Classes for Terra-Server
Load Marker
Octree
OctreeNode

Classes for Terra-Core
Chunk
Marker
Run
Registry
Position
Constants

I suggest renaming this repo to Terra-Core

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.