Divine Voxel Engine - Voxel Engine Made With Babylon.js - Alpha 1.0 Out Now

This is stunning as usual !!! awesome progress :slight_smile:

1 Like

just discovered this project, this is fascinating!

1 Like

Agreed. You’ll kill us all if you continue like that. Please stop it :grin: :joy: …No, actually, please don’t :wink: :star_struck:

1 Like

All right I released the update last night:

It took a tremendous amount of work to update all the example worlds and fix a lot of bugs.
But hopefully in the future there will be less breaking changes.

The next update (Alpha 1.2.3) will be the dimension update.
You can kind of use dimensions now but I need to implement a complex system for handling light and water flowing in other dimensions. After that will come full server integration and I will set up a test server for people to play on.

I have many more plans and a lot of cool things that I want to add. This really is just the beginning of this project.

DVE will turn a year old on November 15th.

Here is the first video I made of it:

And here is the most recent:

So, thank you everyone for the kind words and encouragement.
My ultimate goal is still to make something beautiful and performant that people can build infinite worlds with.

8 Likes

You NEVER fail to impress :star_struck:

1 Like

It’s amazing😱!You are doing a cool thing nobody done.You’re a role model for us.
I want to join you,I am a college students majoring in software engineering.Please tell me what I need to learn.

1 Like

Well, first thank you.

Though I would say there are other voxel engines and some are made in JavaScript.
However, this is the first one I have personally seen that focuses on multi-threading/parallelism and user friendliness.

The things you would need to know to wok on this engine are:

  • TypeScript & Babylon.Js
  • Web Workers and Node.Js Worker Threads
  • Shared memory and atomics.
  • Async programming concepts.
  • Writing performant JavaScript. You must really understand how JavaScript engines like V8 work. Best advice I can give is try to keep object “shapes” the same.
  • Using flat arrays instead of multi-dimensional arrays and calculating their index.
  • Hashing/paging for data storage.
  • Meshing Concepts (positions, normals, uvs, colors…).
  • Binary math and binary encoding.
  • Working with raw binary data as well.
  • The breadth first search algorithm.
  • Differences between the browser environment and the Node.js environment.
  • Some basic GLSL (and eventually the WGSL which I will have to learn soon).
  • Writing readable and maintainable software.
  • Git/Github

If that list does not freak you out check out this pre-beta release checklist:

Now if you are still interested please PM me and I will see what I can do.
Personally I don’t need much help as this is my labor of love but if someone has insight on how to make things better I would be happy to take it.

7 Likes

Thank you for your reply,there are something I never heard.But I am glad I have a chance to learn more.I will try to learn these in the following monthes,I will callback when I get ready.I love to join in the cool thing,cause I can grow through these.

1 Like

All right so I was able to port all test worlds from electron to the github page:
https://divine-star-software.github.io/DVE-Examples/

I figured out if set “crossorigin” equal to “anonymous” on the script tag you can use Shared Array Buffers without changing the headers of the file served. Though it seems to work only on windows machines and some reason on android phones. Maybe Macs have some extra security features I don’t know about…

However eventually you will be able to log onto the test server from this site. Should be pretty cool once I get that all figured out.

If you want to have fun with it and build/destroy stuff just go to the “Dream Space” world.

The controls are:
WASD - movement
Space Bar - jump
z - brings up voxel select screen
left mouse button - break voxel
right mouse button - place voxel
shift + right mouse button - explode area

Over the weekend I was even able to make breaking/adding voxels so much faster. I realized the way I was doing it was kind of in-efficient. Now it all feels instantaneous even when placing lights down.

Also, over the weekend I did for the first livestream of me working on the engine. Had someone ask me to add explosions so I did that:



Was not too hard. Just a BFS algorithm with a distance check to keep it in the radius specified.

4 Likes

This thread is one of my favorite on the forum :slight_smile: I waiting for the updates like the next season of a serie ending in a cliffhanger.

4 Likes

You and me, Seb, you and me :star_struck:

These demos run SO BEAUTIFULLY in my machine it’s a shining example of what web graphics can achieve

2 Likes

Thank you!
Welp I guess stay tuned in. This is just the beginning :slight_smile:

1 Like

All right awesome that is good to hear!
Have not had many people check out the examples.
I do most of the development on a gaming PC so it is good to get feedback like that.

Now, to be fair I have seen crazy things like ray tracing done with WebGL but I am not focused on that for right now. Maybe in the future. I just want to target “mid range” machines and have the default lighting system look as good as it can.

In the future with WebGPU though now that I will be trying to push the engine to the limits.

I think people do underestimate web graphics at this current point but I see on the horizon a renaissance coming.

2 Likes

Divine Voxel Engine is now a year old!

To celebrate I made this cool and trippy metal music video showing off the progress.

People have asked me why I am doing this.

Well I just want to make voxel game that are trippy, metal, and a lot of fun.
That is really what Divine Star is about.

Also, just on a personal note. When I was 22 (4 years ago) I was diagnosed with cancer. Thankfully I was able to beat it but not without a few scars. Since then I have decided to make my life just about “making something beautiful”. Of course that term is relative but still it is what drives me.

Anyway thank you again everyone!

9 Likes

Again, @lucas-divinestar has made my day :slight_smile: This is so coool

1 Like

You literally rock my friend!

1 Like

Thanks everyone for the kind words and appreciation.
I’ve had this vision in my mind for a few years now and it is finally coming to light thanks to Babylon.

I am also starting the next year DVE on a good note.
Here is the updated default example world:



2 Likes

I have been very busy.

New Mesher

I rewrote the actual mesher for the engine. Now it is much easier to add custom voxel shapes into the engine. Here is a basic example:

  mesher.quad.setDimensions(1, 1);
  mesher.templateData.loadIn("top");
  mesher.quad
   .setDirection("south")
   .addData(1, animationState)
   .updatePosition(0.5, 0.5, 0.05)
   .create();
  mesher.templateData.loadIn("bottom");
  mesher.quad
   .setDirection("north")
   .addData(1, animationState)
   .updatePosition(0.5, 0.5, 0.05)
   .create();

This will create a double sided panel from the chunk template.
The mesher was the oldest code that was still around and filled with bugs.

The basic way it works is that you can draw quads given it’s center and dimensions. Then use the textures generated from the processed chunk data to texture it. It also handles light shading and all that other complicated stuff for you.

With that I was able to make the meshes about 1/3 of their former size.

Infinite World Gen Plugin

I’ve been working on a plug-in system. The first plugin I am working on is one for infinite world generation!
Here is an example of it working:

I feel infinite world gen is always the ultimate test of any voxel engine. I still need to optimize this and yes even make world gen multi-threaded. Which is possible just needs a bit more work.

Music For Test Worlds

Some people have asked me to make some music for the test worlds so here are two tracks I made for that:

I will be adding sounds soon to. I have my sound designer friend making some for me.

Binary Tags

I wrote another library called Divine Binary Tags which allows you to create basically a schema to read/write to a buffer.
Now it is very easy to add and expand data attached to voxels, chunks, and columns.

Here is a basic example for columns:

import { TagManager } from "../../../Libs/DivineBinaryTags/TagManager.js";
export const ColumnDataTags = new TagManager("column-tags");
ColumnDataTags.registerTag({
 id: "#dve:dimension_id",
 type: "typed-number",
 numberType: "16ui",
});
ColumnDataTags.registerTag({
 id: "#dve:p_x",
 type: "typed-number",
 numberType: "32i",
});
ColumnDataTags.registerTag({
 id: "#dve:p_y",
 type: "typed-number",
 numberType: "32i",
});
ColumnDataTags.registerTag({
 id: "#dve:p_z",
 type: "typed-number",
 numberType: "32i",
});
ColumnDataTags.registerTag({
 id: "#dve:is_world_gen_done",
 type: "boolean",
});
ColumnDataTags.registerTag({
 id: "#dve:is_world_sun_done",
 type: "boolean",
});
ColumnDataTags.registerTag({
 id: "#dve:is_rgb_done",
 type: "boolean",
});
ColumnDataTags.registerTag({
 id: "#dve:is_liquid_flow_donw",
 type: "boolean",
});
ColumnDataTags.registerTag({
 id: "#dve:is_magma_flow_donw",
 type: "boolean",
});

You can get abd set the data like this:

ColumnDataTags.getTag("#dve:is_world_gen_done");
ColumnDataTags.setTag("#dve:is_world_gen_done", 1);

Road To Beta

So, with all of that beta is looks like it is coming soon. Maybe in another month or two.
Once beta is out I will have a server set up for people to come try the engine out and help find any bugs.

6 Likes

This deserves another. You Nailed It !!!

He-nailed-it GIFs - Get the best GIF on GIPHY

2 Likes

I know the day will be a good one when I see you updated this thread :smiley: Every time I am amazed by what you are building, this has been a hell of a year! And here’s to many more! :champagne::champagne::champagne::champagne:

Cheers Gif - GIFcen

3 Likes