Monday, October 7, 2013

Voxel Engine "Based" Projects

Recently I had a pleasant surprise to see that the Voxel Engine that I shared in this blog was able to help some guys to develop some amazing projects.

Inverto

"Inverto" is a first person shooter-puzzler with gravity manipulations. Game is ideological successor of such games as "Prey" and "Portal" with a pinch of parkour. Proceed all of the testing areas as a simple researcher with your trusty GraviGun. Prepare to explore Escher-esque spaces and solve navigational puzzles by changing gravity direction, employing body momentum and fighting nausea (only if you have weak vestibular system). "Inverto" is developed on Unity3D game engine and is planned on Windows, Mac, Linux and Web. Will be released later this summer. Current version of the game is in alpha state, and does not represent final product quality.


http://www.indiedb.com/games/gravitron
http://inverto.gravityboxstudio.net/



BitDrill

Although currently in it’s early stages, BitDrill is a game that is being developed by one man about online mining and combat. The basic idea of the game is that you and your friends get on a LAN game (currently, may add a server later) and mine. You sell off the resources gathered to obtain cash. With the cash you can then buy upgrades. With the upgrades you can mine deeper. Or you can fight your friends!

http://bitdrill.wordpress.com/


Optimizations

Other Unity forum users like RetromadeGames used the engine as well and shared some thoughts. Right now we are trying to optimize the chunk generation. I will post here if we are able to find some simple fixes to improve the engine performance. 
For now some things that you guys could try is avoid to recreate the mesh at every chunk refresh and use mesh double buffer and mesh markDynamic. But the biggest issues are:

  • Recreate the mesh collider (as Tito, a user of BitDrill pointed out, it's better to use aabb collision. This will fix most of the performance issues)
  • Soft Lightning. This could be and must be optimized ( this was just a proof of concept ).

Like I said before, this was just a prototype and it need a lot of work to get into a real project. So congrats for all those people who created some really nice things using the Voxel Engine. And please, let me know if someone else create something cool using this. :)

4 comments:

  1. Hi this is Tito, the bit drill user you mentioned. Some other optimizations I have done in my unreleased game I have been working on
    1. Breaking out lighting, mesh generation and terrain generation over frames. If you use aabb collision then it does not matter that the mesh may take 2 or even 3 frames to calculate what it is supposed to look like because all it uses is the block array to know where the new block was added or removed. I found this boosts overall fluidity on my android phone more than anything!
    2. Get the block and light variables out of an object and get them in a struct or byte array. This was the first thing I did and it helps speed up everything else since the bytes will be able to be accessed better. It also made it very easy for me to change the lighting from one color to multicolor :)
    3. Get the part of the lighting calculation that are iterated recursively out of recursion. At least on my old android phone, it only allows so many levels of recursion before it maxes out the stack. My lights travel up to 18 blocks and that was way too many levels deep in recursion for my phone to handle.
    4. Micro optimizations through bit shifting and the like. The block story blog has an entry on this that is really good. Not only does it help speed up calculations, it prepares you for super simple ways of figuring out what chunk to load when and if you expand the world to generate near infinitely like block story and minecraft.

    I am excited to see more people using this engine you have provided since it has helped immensely! I also want to make a shoutout to the bitdrill game and creator, its a fun game and I hope he continues working on it!

    Tate

    ReplyDelete
  2. Thanks for your comment. I will update the blog post with your findings to help the other people that are using this engine. Thanks a lot! :)

    ReplyDelete
  3. Could you post the source to github so we can fork and contribute changes back to it? I have pieces and parts from different mesh/chunk performance tests and this would help contribute changes back to the engine.

    ReplyDelete
    Replies
    1. Nice ideia. Just created a git repository. I will make a post about it.

      Delete