

Its less about the computational speed, and more about memory management. :) I can say with little hesitation that C++ performance is far superior (but it is also more difficult to code). I've also been writing voxel engines since 2004 (when they were not vogue). With regards to Java vs C++, I've written a voxel engine in both (C++ version shown above). How would you improve performance in a large voxel-based world? I guess there is no right answer to this, but I would be interested to see peoples' opinions on the subject. Keep the block object themselves lightweight, so it is quick to add and remove them from the trees.Use some algorithm to work out which blocks can currently be seen, as blocks closer to the user could obfuscate the blocks behind, making it pointless to render them.Use a tree of some variety ( oct/ kd/ bsp) to split all the cubes out it seems like an oct/kd would be the better option, as you can just partition on a per cube level not a per triangle level.I assume that to make this sort of world perform well, you would need to: As it is a true 3D world, where a block can exist in any part of the world, it is basically a big 3D array, where each block in the world has a type (i.e BlockType.Empty = 0, BlockType.Dirt = 1, etc.) However, this got me thinking about the best way to manage large voxel worlds. Java, as spatial partitioning and memory management are faster in native C++.

I assume Minecraft's slowness comes from:

I found Minecraft's marvelous large worlds extremely slow to navigate, even with a quad core and meaty graphics card.
