World executor - Terra is the worker who does what it's told, nothing more, nothing less.
Terra is the core of the voxel engine.
https://discord.starandserpent.com/
For demo implementation see Terra-demo:
World executor - Terra is the worker who does what it's told, nothing more, nothing less.
Home Page: https://discord.starandserpent.com/
License: MIT License
World executor - Terra is the worker who does what it's told, nothing more, nothing less.
Terra is the core of the voxel engine.
https://discord.starandserpent.com/
For demo implementation see Terra-demo:
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.
I am currently using jagged array to store vertice and for search. This can be maybe reduced to one dimension array.
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!
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.
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.
Right now octree is broken I should either revert changes or rewrite whole thing
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.
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.