I wasn't sure where should I ask the questions so came to this thread.


I've got my trial version and have plans for two projects in Unity. I've seen voxel engines before and know a bit about them but when looking at your docs some things are not clear.


In general the relation between voxel worlds, terrains, instances and ... are not clear to me. How can I understand more about the systems. Some questions below.


I want to use it for two games in unity. We have a multiplayer tank game using old voxel tech which we generate its terrain on the fly and a survival multiplayer game using your terrain engines probably.


1- If I want to generate voxels on the fly, what should I do in voxel studio to just export a set of textured and colored voxels and some meshesfor modification tools that I want to use for deformation?

2- Is there any overview of how things in the system relate to each other? any plans to write text version docs for things like biome and smart biome instead of videos?

3- How can I generate a collision geometry in my unity based or none-unity based server from voxels?

4- What are layers and voxel instances exactly and how to make custom layers? do I need it for the tank project?

5- If I want to allow my players to create voxel based tanks and then play with them? Is it voxel instances? How different these are from something which is a part of the world?

6- When more unity docs will become available?

7- How much of the tools/procedural generation parts in voxel studio are available at runtime for deformations and creation (I mean other than using a mesh for changing material or directly modifying voxel data)?
8- If I write a network layer which sends changes only over the network, is voxel farm deterministic to apply exactly the same modifications to the voxels in the other side?



As some amount of feedback, I would say work more on docs and integrations, maybe stop feature development or slow it down a bit and work on those. I've worked at tool development companies, and even now our company makes game backends so I know how tough it can be but ease of use and understanding is very very important too.

0 0
1) You need to export a Unity bundle from a Voxel Studio project. Any features you add to this project will be included in the bundle. There are a number of things you can add: default terrain, meta-meshes, voxel extensions, etc. These are optional, depending on your project you will know which ones to add. The bare minimum is a list of voxel materials. 

2) There is little inter-dependencies between these different features. Most forms of voxel content are built as individual voxel layers, which are combined on the fly by the engine. A typical configuration would be:

Base Layer: Default Terrain
Layer 1: Default Terrain Voxel Instances
Layer 2: Meta-meshes
Layer 3: Meta-mesh Voxel Instances
Layer 4: Voxel Edits
Layer 5: Player/User Voxel Edits

This page explain how worlds are layered:

3) The Unity plugin shows how collision meshes are generated. We can provide pointers to where this appears in the Unity code.

4) See answer to question (2). You can think of Voxel Layers as if they were Photoshop layers. The SDK contains multiple examples of how an entirely custom layer can be implemented. Look for classes that implement the IVoxelLayer interface.

5) Voxel Farm is typically used to create large, destructible environments, like terrains, cities, etc. Moving objects made out of voxels, like the tanks in your example, is something you could do as well but would require some additional planning. We do not have an example of this at the moment. We can guide you on how to achieve this, however.

6) We plan to bring online a set of guides for Unity during the month of June (2017)

7) All voxel edition tools are at your disposal. You can select Voxel Studio's "Voxel Edit" ribbon tab to see this set.

8) Voxel Farm is deterministic. It is meant to be used like you described, where clients come up with the same data individually and only changes to the base data need to be handled by the network.
0 0

Thanks for the answers.

Two questions. What are voxel extensions and also about 5

What if I want to generate a mesh using voxels and then use the mesh in a typical gameObject so don't allow destruction of the object? And what do you mean by planning? Do you mean because the mesh should be generated again whenever a voxel based object moves? Is there any way to just have some voxel data, generate a mesh out of it and remove it from the voxel world? Or have separate voxel system for each gameObject and only move it as a whole and just that.


Also on voxel instances and mesh editing tool, how can I generate the meshes using FBX files?


I'll look into the unity codebase, finding editing functionality there should not be hard (I'm used to huge codebases) and then will ask more if I had questions and will create a network implementation which I can probably share with you guys. The system is insantely nice!

0 0
You can find more about extensions here:

For moving voxel objects, you can always keep a side representation of the object in voxels. Whenever the object changes, you can recompute the mesh representation for it. Spatial transforms will not require you to recompute the object meshes. I meant this will require planning since you would need to keep track of which objects you have and manage their voxel representations.

Voxel Studio contains features to generate voxel instances from FBX. We can share any additional code you may need.
0 0

Thanks for the fast responses. As last question, If I buy pro which platform I'll have access to in Unity? And do you have any benchmarks for android? The tank game is a mobile one and voxel world are not huge, say 100mx100m maps and voxels probably can be 1/8 of a meter instead of voxel farm's default setting.


On objects, So do you mean the voxel object will not be a part of the terrain object and I can create it as a separate object? It is great then. Will they be voxel instances in this case or a separate object like the terrain? As I understand instances are just a concept for planting objects on a terrain for things like trees, rocks and ... right?

0 0
Ah and another question, If I have a very high quality high detail mesh of a building or monument or ... Can I easily make it a voxel object or I have to use a low poly metamesh and add the details in voxel studio using metamaterials? The building is a historical site ?
0 0
Please note that Android is not supported by Voxel Farm in Unity. Since Voxel Farm is in C++ and Unity in C#, a DLL is required to wrap the C++ code in the plugin. Any OS that does not support DLLs (iOS and Android) won't be able to run Voxel Farm.

For UE4 this is not a problem since UE4 is also C++
0 0
Isn't it possible to create a android native plugin .so and wrap the voxel farm code in that? All other plugins are doing it. If the wrapper is basically a set of p/invoke ([ddlimport]) calls then there should be no issues as far as i can understand it unless you need specific .NET interop features only available on windows like COM which i know you are not using.

How do you link voxel farm in unreal? as a static library?
0 0
Yes, Voxel Farm is standard C++ so it could be wrapped similar to how other libraries do it. We do not include this at the moment, so it is something you would need to do. It could follow the same pattern as the library, so most of the code for the DLL plugin can be reused.

In UE4 Voxel Farm is statically linked. If you have the PRO license, which includes source code, the code may be recompiled by UE to target specific platforms.
0 0


What do you mean "For moving voxel objects, you can always keep a side representation of the object in voxels"? Create a Voxel Octree for each moving object?

0 0
Regarding separate voxelized objects, this would require the ability to get a mesh from raw voxel data, correct? Is this possible in the current version? Basically a function that takes in cubic array of voxels and returns the resulting meshes. From my understanding it is only possible to do this with Voxel Layers that are part of the overall world. Or could each object be its own layer and the results just be transformed around? Either way a single function like this would be useful if it makes sense.
0 0
Your understanding is correct. This is currently available only for objects that are large enough so different parts of it may be at different LOD. The voxel world is an example.

We are currently designing a multi-object system and we are debating internally what is the best way to go. It may be simpler to have just one system for everything, regardless of the size of the object. The rationale is, once you have voxel objects, you may want to modify them in real time, produce different LOD views of them, etc. There is already an optimized pipeline for this in place. We would not like to duplicate any of this. For instance, making holes in the terrain is no different than making holes in a spaceship hull, and you would like these two operations to be handled by a single system so computing resources are better distributed. The direction we are likely to choose is to reduce the overhead of having one of these objects to the point you can have large quantities of them, regardless of whether they are planets, asteroids, spaceships or a coffee mug.
0 0