The following is an email I sent to Max Ogden. There was a very positive response, and he pointed me to IRC.
Hunter Trujillo:
Hi, Max! It's been a little while since I've last done a serious amount of work on my own voxel game engine, and during that time, your project sprung up! I'm very impressed, and especially impressed by Mikola Lysenko's treatments of the finer points of voxel graphics, which you seem to have integrated well into your engine.
Myself, I've been working on and off on a series of voxel game engine experiments since 2008. I've always taken the idea from a different direction than most, however; I'm not a fan of the first-person Minecraft editing experience. Instead, I'd rather edit things in the third-person, really, a more professional editor, similar to what Mr. Doob made his three.js "voxel painter" example.
Some of my older work can be found here:
Something a bit more recent:
Regardless, it's my feeling that our interests are aligned. Some things I'd like to develop for your engine are:
- voxel-edit: a 'pro', browser-based third-person voxel editing suite
- voxel-anim: a means of key-framed, interpolated voxel animation
- voxel-db: a centralized database for voxel asset storage, browsing, versioning, and collaboration
- voxel-science: putting into practice some of the ideas I outlined here, so many years ago: http://code.google.com/p/nanoblok/wiki/EnginePhysics
The science is what I'm particularly interested in. I think it'd make for some very good world-building! Imagine finding minerals on your own procedurally-generated planet, and using them to build infrastructure from scratch from designs you get from a centralized voxel database. You could build a means of collecting seawater, desalinating it using heat gotten from a device that collected solar energy, then splitting that water into equivalent volumes using a sort of simplified stoichiometry. stuff like the ideal gas equation, basic eighth-grade science applies, just in voxular form! These substances can then be liquified, thrown into tanks, attach those to a turbine, attach that to a combustion chamber and a nozzle, and see if lift can't be achieved! These can then be precomputed as part of the chunk or multi-chunk into simple input-outputs, which are then used to compute the effects of the overall system.
At any rate, what are your thoughts on the things I've outlined?
Max Ogden:
whoa!!! awesome!!! you should hang out in #stackvm on freenode if you can -- its where me and substack hang out and talk about voxeljs.
the science stuff sounds super awesome. substack is currently hacking on a bunch of physics related stuff like a voxel-servo block and a voxel-portal. i'd love to help out where I can!
I'm very interested in making educational games with voxel.js. some friends of mine recently started a company called http://diy.org and they want to integrate voxeljs into the tools that kids use to learn different skills (https://diy.org/skills)
I call it 'science' because 'materials' and 'physics' have other meanings within the realm of computer graphics, and it gets the point across nicely.
I try to be very aware of industry-changing technologies. What we're doing with voxels and WebGL is-- if done right, and done well-- will become the new standard for game development on the web in the way that Unity never was. Unity was correct to come at the problem with an editor, but it leaves game developers perpetually in search of asset creators, artists and musicians.
I hope to create a large-scale asset database for voxel models, be they functional (science-enabled), cosmetic, animated, or even voxel-procedural music (music that is created and viewable in voxel format through some generator somehow).
In terms of technology, there's still a number of challenges to be overcome, not the least of which is finding and integrating a good voxel compression scheme, perhaps in addition to implementing a mix of procedural, parametric, and voxel geometry generation schemes for model creation and world-building.
Every voxel will need to be part of hierarchy tree akin to CAD software for assigning purpose to voxels. This is different from a scenegraph in that it's all for the data model and not through the renderer.
Every model needs to be able to be accompanied with code that can either affect geometry of the model for things like animations or procedural generation, or to describe science-related functionality (such as what sort of materials a particular part of the model should affect, and how-- for example, an electrolyzer will accept water and return two parts hydrogen, one part oxygen).
To be performance-smart, in my last bit of experimental code I wrote before discovering your project, I was trying to take a bit of geometry made with a greedy mesh-generation algorithm I had made on my own, and generate a custom texture with matching UVs, in order to integrate materials of many types into one piece of geometry. It didn't work out, but if I put more effort into it, I think it might be a worthwhile optimization. Having everything in a Three.js scenegraph is too performance-heavy for simple static geometry.
In order to encourage voxel artists/content creators to use the most intelligent means of creating a model, value could be calculated in such a way to give preference to geometry created procedurally and parametrically than with per-voxel editation alone.
This is still in a draft format. A formal blog post shall be coming shortly.