Jiwon Kim

Voxelygon - Polyhedron Voxel

Recommended Posts

Hello, I`m ji-won, Kim in Korea. ;)

I`m developing polyhedron voxel middleware for Unity.

 

What`s mean polyhedron vexel? See below.

 

This middleware based on block combination. And, these blocks have various shape. So the combination of these blocks make terrain like low-poly.

Below video is result of these combination.

 

 

Like other voxel engines, CAN destroy rrain and generate terrain. Of course, can apply to Unity based physics effects like anti gravition and explosion.

 

These video recorded on i3-4160 CPU with GTX 650 system. FPS range is 45~60 over while destroying and refresh.

Support multi-threading for refreshing chunks.

 

future works

- pathfinding based on various size units.

- huge units and partial destroying.

- crafting system and support json.

 

 

If you're interested, send me a mail. lagnas2000@gmail.com or lagnas2000@naver.com

Edited by Jiwon Kim

Share this post


Link to post
Share on other sites
On 8/30/2017 at 5:47 PM, Jiwon Kim said:

Support multi-threading for refreshing chunks.

Is this your own multi-threading or using Unity's Coroutines?

I ask because I notice Unity has problems running simultaneous routines, chances are that with a destructive terrain I would also like destructive objects and that would need the coroutines to do smoothly.

Share this post


Link to post
Share on other sites

 

10 hours ago, swiftcoder said:

That looks pretty nice, the beveled edges break up the block structure nicely. Can it handle caves?

Of couse can handle caves. Voxelygon have block based BD structure.

To make caves, insert VACANT block as your wish. Below show like that.

example.png.616340344d3d387daa343f7d97118cca.png

 

Below blocks like pile shape consits of 4 blocks, and 3 vacant block, and 3 cubic blocks.

 

Share this post


Link to post
Share on other sites
3 hours ago, Scouting Ninja said:

Is this your own multi-threading or using Unity's Coroutines?

I ask because I notice Unity has problems running simultaneous routines, chances are that with a destructive terrain I would also like destructive objects and that would need the coroutines to do smoothly.

Yes, my own multi-threading method.

Unity support only 2 thread process, (main thread and rendering thread). Then Unity API is processed on main thread.

 

Voxelygon support multi-threading partially. Based on Unity, so using Unity API codes does NOT multi-threading. But my own codes support multi-threading(ex : refreshing chunk, pathfinding).

 

But, Unity Collider does NOT support multi-threading, so update mesh collider applied to chunks does NOT support multi-threading.

 

On test, refreshing 32x32 sized chunks spent 10~12 ms. To update mesh spents 7ms(NOT multi-threading), to update inner data 1ms (multi-threading), to update rendering process 2 ms(multi-threading).

Edited by Jiwon Kim

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Forum Statistics

    • Total Topics
      628288
    • Total Posts
      2981846
  • Similar Content

    • By reders
      Hi, everyone!
      I "finished" building my first game. Obviously Pong.
      It's written in C++ on Visual Studio with SFML.
      Pong.cpp
      What do you think? What should I consider doing to improve the code?
      Thank you very much.
       
      EDIT: added some screenshot and .zip file of the playable game
       
      Pong.zip


    • By noodleBowl
      I was wondering if anyone could explain the depth buffer and the depth stencil state comparison function to me as I'm a little confused
      So I have set up a depth stencil state where the DepthFunc is set to D3D11_COMPARISON_LESS, but what am I actually comparing here? What is actually written to the buffer, the pixel that should show up in the front?
      I have these 2 quad faces, a Red Face and a Blue Face. The Blue Face is further away from the Viewer with a Z index value of -100.0f. Where the Red Face is close to the Viewer with a Z index value of 0.0f.
      When DepthFunc is set to D3D11_COMPARISON_LESS the Red Face shows up in front of the Blue Face like it should based on the Z index values. BUT if I change the DepthFunc to D3D11_COMPARISON_LESS_EQUAL the Blue Face shows in front of the Red Face. Which does not make sense to me, I would think that when the function is set to D3D11_COMPARISON_LESS_EQUAL the Red Face would still show up in front of the Blue Face as the Z index for the Red Face is still closer to the viewer
      Am I thinking of this comparison function all wrong?
      Vertex data just in case
      //Vertex date that make up the 2 faces Vertex verts[] = { //Red face Vertex(Vector4(0.0f, 0.0f, 0.0f), Color(1.0f, 0.0f, 0.0f)), Vertex(Vector4(100.0f, 100.0f, 0.0f), Color(1.0f, 0.0f, 0.0f)), Vertex(Vector4(100.0f, 0.0f, 0.0f), Color(1.0f, 0.0f, 0.0f)), Vertex(Vector4(0.0f, 0.0f, 0.0f), Color(1.0f, 0.0f, 0.0f)), Vertex(Vector4(0.0f, 100.0f, 0.0f), Color(1.0f, 0.0f, 0.0f)), Vertex(Vector4(100.0f, 100.0f, 0.0f), Color(1.0f, 0.0f, 0.0f)), //Blue face Vertex(Vector4(0.0f, 0.0f, -100.0f), Color(0.0f, 0.0f, 1.0f)), Vertex(Vector4(100.0f, 100.0f, -100.0f), Color(0.0f, 0.0f, 1.0f)), Vertex(Vector4(100.0f, 0.0f, -100.0f), Color(0.0f, 0.0f, 1.0f)), Vertex(Vector4(0.0f, 0.0f, -100.0f), Color(0.0f, 0.0f, 1.0f)), Vertex(Vector4(0.0f, 100.0f, -100.0f), Color(0.0f, 0.0f, 1.0f)), Vertex(Vector4(100.0f, 100.0f, -100.0f), Color(0.0f, 0.0f, 1.0f)), };  
    • By Rannion
      Hi,
      I'm trying to fill a win64 Console with ASCII char.
      At the moment I have 2 solutions: one using std::cout for each line, let's say 30 lines at once using std::endl at the end of each one.
      The second solution is using FillConsoleOutputCharacter. This method seems a lot more robust and with less flickering. But I'm guessing, internally it's using a different table than the one used by std::cout. I'm trying to fill the console with the unsigned char 0xB0 which is a sort of grey square when I use std::cout but when using FillConsoleOutputCharacter it is outputted as the UTF8 char '°'.
      I tried using SetConsoleOutputCP before but could not find a proper way to force it to only use the non-extended ASCII code page...
      Has anyone a hint on this one?
      Cheers!
    • By Vortez
      Hi guys, i know this is stupid but i've been trying to convert this block of asm code in c++ for an hour or two and im stuck
      ////////////////////////////////////////////////////////////////////////////////////////////// /////// This routine write the value returned by GetProcAddress() at the address p /////////// ////////////////////////////////////////////////////////////////////////////////////////////// bool SetProcAddress(HINSTANCE dll, void *p, char *name) { UINT *res = (UINT*)ptr; void *f = GetProcAddress(dll, name); if(!f) return false; _asm { push ebx push edx mov ebx, f mov edx, p mov [ebx], edx // <--- put edx at the address pointed by ebx pop edx pop ebx } return res != 0; } ... // ie: SetProcAddress(hDll, &some_function, "function_name"); I tried:
      memcmp(p, f, sizeof(p)); and UINT *i1 = (*UINT)p; UINT *i2 = (*UINT)f; *f = *p; The first one dosent seem to give the right retult, and the second one won't compile.
      Any idea?
    • By adapelin
      I am a computer engineering student and i have the assignment below. İ only can write the 2D maze array and have no idea about creating car and time as well. Could anyone write and explain hot to do???
      Minimum Criteria: You are expected to design the game by using C ++ . Below are the minimal criteria: • You must create game board with 2 - Dimensional Matrix • Bonuses create with randomly in the game board • All bonuses have got the same value but different effect for car and score . These effects may be positive or negative . • You must use pointer for creating and using car . Some bonuses may be change car type. • When the game finish, you must show high - score. • For moving car , you need to create coordinate s randomly and you need to write proper control statements. • You must use functions for drawing game board and changing car type . If you need extra functions, you can use it. • If you cannot get out the maze when the time is up , the game is over and you need to show high score. In this project, you must do all minimum criteria. In the end, your program must be work without any errors. Bonus: • Save and load high score information to/from disk • Each bonus has got different random values. • You can create cheat codes for the game. • You can create alternative control for car . • Car can jump over the wall but may lose the score . When car exit the maze , game is over and you need to show high score.    
  • Popular Now