Showing posts with label Engine. Show all posts
Showing posts with label Engine. Show all posts

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. :)

Saturday, March 9, 2013

Voxel Engine Part 3 (Final)

As promised, here is the Voxel Engine Unity Project:
Unity Package (1.36mb)
Alternative download link

The webplayer demo is available in my previous post.

There is a "Read-me" file inside the package pointing out some directions for those who are trying to understand the project.

I would like to thanks Paul of the BlockStory project that wrote some very useful articles that helped me a lot to get started in the Voxel World. Some classes are heavily based on his samples.

Thanks as well to the Unity community that have this great topic about voxels and to Jeff Standen that wrote the Simplex3D Noise that I'm using.

This demo works on iOS, Android, Mac, Windows and Webplayer. It was tested on my Android Galaxy S2 and Apple iPad4.

The main bottleneck is the CPU while the player is creating and destroying blocks. In the code I left some hints of things that I would have done differently now, or links to articles that offers a better solution for what I did. Remember, this is just a prototype that emerged from a study. There is a lot of stuff to change if you are planning to use this in a real project.

The textures and sounds came from Minecraft ( https://minecraft.net/ ), and the pickaxe is a model that I did trying to reproduce the Minecraft pickaxe. So those assets are not my property and should not be used in any commercial way.

Fell free to use all the other assets and scripts in the way you like.
If you did something cool using this project, please let me know. :)


Thread

Friday, March 8, 2013

Voxel Engine Part 2

This video show the voxel world generation. It doesn't take this long. The video is that slow to we be able to see what is happening.


The first pass generate the heightmap and the second is responsible to create the mesh and perform the lightning calculation.

And here follows the webplayer to you guys give a try to the engine. In the case that the previous link didn't work, you can download the demo here.

There is a lot of things to enhance, and many parts to optimize but I'm done with this project. In the next days I will post the project with all sources and assets so it may help someone that is thinking to study voxels.

Thread

Saturday, March 2, 2013

Voxel Engine Part 1

In the last weeks Unity announced the winners of the DirectX11 Competition.  It was submited many amazing projects, but this one in particular caught attention: "Voxel Cone Tracing created by Kurt Loeffer".
For those who do not know me, I'm addicted to computer graphics and Global Illumination has always been one of my favorite lightning technics. 
So I decided to learn more and try to implement my own version based on the following Nvidia paper: Voxel-Cone-Tracing-Octree-Real-Time-Illumination

There is also some interesting stuff on the book GPU Gems3, that thanks to Nvidia can be found here for free.

As the name implies, this technique is based on voxelization then I thought it would be interesting to study some voxel engines first. I dunno exactly how or when, but a few moments after I started my studies I found myself trying to recreate some of Minecraft features using Unity.

Here follows some results:

 This world can be "infinity" in all directions. As you can see, even the Y-Axis is split into Chunks.
This map was generated using the Simplex3D Noise 

Fake Ambient Occlusion and Fog
 Cave Generation and diffrent block types
Hard Light & Soft Light
Ambient Occlusion, Soft Light
Hard Light flood
Soft Light flood


The engine is pretty basic, but I think that covers some of main features. It deals with world/cave generation, only render the faces that can be seen, player can create/destroy blocks, dynamic soft light flood (and all other types as well), different block types... In terms of CPU/Memory it's not so optimized right now, but still runs well on my iPad4 and Samsung Galaxy S2. 
I have to clean up the code and soon I will post the entire project here.

Meanwhile, here is the material that I used to learn more about voxels (the main articles are highlighted):

Thread