Project Voxelscape [Now Open Source!]

Hello all. I’ve been working on a voxel engine for some time now and recently switched from Unity3D to Xenko for that modern C# experience. Async/await and modern threading libraries proved to be an absolute must for my project and C# 3.5 just couldn’t cut it any longer.

Check out this video to see it in action; https://www.youtube.com/watch?v=whJOtux2DrQ

Now released open source! https://bitbucket.org/LyingDwarf/xenko-voxelscape/src/master/

Built with Xenko 3.0.0.9, but can’t run in the GameEditor. Only runs from the XenkoVoxelscape.sln and only in Debug mode. No longer being actively worked on. Only demonstrates procedurally generating sky islands. No runtime editing of voxels and no physical collisions.

6 Likes

I too have a Unity3d project that relies heavily on proc gen meshes like your’s. How hard is it to generate your mesh in Xenko? What difficulties did you have porting from one to the other. I too am having issues with garbage collection along with some other things affecting performance and was looking into Xenko but issues like your’s with the collision mesh etc are making me hesitant so I curious how you experience has been.

I’ll be responding in depth on your other posting :wink:

Sorry the blog is down for now, but you can still see the engine running here; https://www.youtube.com/watch?v=whJOtux2DrQ

As I’m no longer actively developing this project I’ve decided to release it as is under the open source MIT license. For anyone interested in voxels and procedural generation I hope you can find something useful here. https://bitbucket.org/LyingDwarf/xenko-voxelscape/src/master/

I last worked on this over a year ago so getting it to run again has proven a little tricky. I’ve updated it to work with Xenko 3.0.0.9, but I can’t get it to run from the GameEditor because of some Nuget error. It only runs from the XenkoVoxelscape.sln opened in Visual Studio and only in Debug mode. In Release mode I get a NullReferenceException, no idea why. If someone could provide some help with that and the Nuget error it’d be much appreciated.

4 Likes

Thanks @LyingDwarf.

Even though you seem to have abandoned GitHub, I have created a fork there: https://github.com/Kryptos-FR/Xenko-Voxelscape as I don’t have a bitbucket account nor plan to create one.

1 Like

That is pretty awesome. Great of you to share it @LyingDwarf

1 Like

How can we make this have a visual indicate into a (entity) node within Xenko. That way I can have a idea on what areas terrain generates at that way I an properly place assets.

I’m sorry but I honestly don’t know. The voxel engine was not designed with the GameEditor in mind and as stated above I can’t even get it to run inside the GameEditor right now. It doesn’t support loading and unloading other game assets as the player moves around.

Hello, I noticed in the video you brought up a numerical menu to generate the seed type (seen at 1:48 in the video). How does one bring up that same menu? Also wanted to know if it is possible to generate voxels based on a 2D template. That way I can layout assets in Xenko without having to worry about clipping objects to the terrain.

Looking back over the code it appears that functionality was removed during some refactor. But if you’re ready to dive into the code, Voxelscape.Xenko.Game.Scenes.Streaming.StreamingSceneController is where the high level setup of the scene is done. The call to StreamingStageMeshFactory.CreateSkyIsland() on line 64 could be changed to be given a seed value, and stageEntity declared on line 77 is what holds the current voxel world. By destroying that entity and making a new one with the new seed you’d get a different voxel world generated.

The sky islands are actually generated according to a set of 2D height maps. However, those maps are also procedurally generated and there was no functionality added for loading any kind of standard height map data. On the subject of missing functionality, and as an up front warning here, this voxel engine also doesn’t have working physics collision yet and doesn’t have the ability to change voxels at runtime (no digging or building). This really is only meant as a demo of random world generation.