Comments (4)
It was indeed started before GDNative, and still isn't mostly because of what @tinmanjuggernaut said. It would limit the module not just because of being limited by script API, but also because it makes integration less natural, adds a bit of overhead. Quite often with this status, there are blockers to workaround for (Feature requests, PR etc, like I had to do for my terrain plugin, it wasnt properly functionnal for about a year until Godot finally exposed the features I needed!).
I'm also concerned about stability. AFAIK GDNative lacks a lot from type-safety when interacting with the Godot API (and ABI compatibility often breaks across versions), mistakes are easy, and it can be a daunting task to diagnose them while at the same time this module already does tight threaded stuff with huge amounts of data. I need to give another try to see the status of this but so far i've been more confident with a module workflow, and rebuilding the engine isnt complicated (and fast once you've done it once). So I'm not opposed to a GDNative port, but it's not something I'd like to work on too soon (but you are free to try :D)
Also there is the fact that GDNative libraries currently don't work on web and mobile exports (I could be wrong about latter tho, havent checked recently). Less of a problem for me as I personally want to use this module on high-end desktop, but could be a concern for others.
GDNative also doesn't support natural exposition to C#, which is something quite likely for people wanting to build a large game from voxel technology. Currently you have to go through varcalls (i.e calling by function name and variant args which is much slower and daunting in C#). As a module, voxel tools just work fine with this language.
On the other hand, I'm not sure about integration in core. I know Reduz would be interested to have a voxel terrain but maybe my expectations aren't exactly the same as his, but that's speculation as I don't know if he actually had a detailed look at the module. Also, while I stick to most of Godot's guidelines with conservativeness, I had to break some rules in the codebase to leverage extra performance and maintainability (because I had to, rather than having to stick with whatever "modern" standard), you can see I use std::vector
, lambdas and template functors quite often. I wouldn't consider the module ready for integration in core for a year as well because I consider the API right now is far from "final" and editor tools are rough.
Finally, I vaguely thought about moving away from Godot API, and limit its uses for places where I actually interact with it (while preferably not adding overhead). VoxelServer
is a possibility. That would help make the module a bit more independent, so that it could not only ease its port to GDNative (if someone dares :D), but also to other engines. I'm personally not interested in maintaining multiple frontends as I just care about the module itself and its use in Godot, but that could be something to consider in the future.
from godot_voxel.
IIRC it was started before GDNative was a thing.
from godot_voxel.
I agree development time would be faster in GDNative as we can compile just the module, not the engine, and don't have to reload Godot. Yet, GDNative still takes some setup for the end user.
Also GDNative is still kind of clunky right now. It's new and not feature complete. And you have to work through the GDNative API to access the engine instead of working directly with the back end classes.
So although it's Zylann's call as to when it's ported, if ever, I suspect GDNative won't be ready for a project as complex as Voxel Tools for at least another year. Then v4 & Vulkan coming out, there's even more API to implement in GDNative.
A more likely path is including it in the master branch of Godot once the module is feature complete. But again, that's way out and may not be desired by Zylann or Godot devs.
from godot_voxel.
Thanks for all the info. You've given me quite a bit to chew on for a while. The idea of moving away from the Godot API is particularly interesting. I guess I'll have to wait and see where this project goes. Whatever you end up doing, keep up the amazing work!
from godot_voxel.
Related Issues (20)
- GDExtension API dump wrong type for enum VoxelInstancer::UpMode HOT 3
- So... quick question how would I make the noise larger? HOT 1
- VoxelMeshSDF partition_subdiv description missing info about BAKE_MODE_APPROX_FLOODFILL HOT 1
- VoxelMeshSDF get_aabb() mentions non existant margin property HOT 1
- Dummy page "2" not needed anymore HOT 1
- Assertion printed when previewing last VoxelMeshSDF layer in editor HOT 1
- VoxelModifier preview mesh has gaps with smoothness HOT 3
- Toggling visibility of VoxelModifier does nothing HOT 1
- VoxelModifierMesh changing isolevel does not update preview HOT 1
- Is the VoxelGraphGenerator usable as a base for the generation in a VoxelGenerationScript? HOT 10
- VoxelMeshSDF incorrect BAKE_MODE_ACCURATE_NAIVE description about sign calculation HOT 2
- VoxelMeshSDF BAKE_MODE_ACCURATE_PARTITIONED does not accurately bake PrismMesh HOT 3
- VoxelModifierMesh does not show up under VoxelTerrain HOT 2
- Performing edit on VoxelTerrain that hasn't loaded yet silently fails HOT 6
- Voxel Cubes not texturing. and meshes laggy and unpreforment. HOT 4
- Godot crashes when trying to add any element to the VoxelBlockyTypeLibrary HOT 2
- Error reported using '_GenerateBlock' of 'C #' HOT 3
- VoxelTool.do_* functions do not ignore VoxelModifier on terrain HOT 4
- VoxelModifier get cutout around edited regions HOT 2
- Double custom_build [15073afe3] crash when installing SQLite GDExtension HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from godot_voxel.