You can get Voxel Farm now. For more information click here.

Saturday, February 5, 2011

The Missionaries Arrived

I have done my first render of some architecture. Here you can see the results:

It is some kind of Romanesque church. It is all made of voxels, so it is pretty much the same as the terrain and the trees I have shown before.

This church is entirely procedural. It was created by an L-System based on a series of grammar rules. The rules can be evaluated in many different ways, producing churches with many different layouts and sizes. Many of the rules can be used for other things than churches. For instance, the same towers could appear in a castle as well.

Artistic input is still required, but at a very generic level. The artist creates the basic building blocks like doors, windows and ornaments. Then they are procedurally recombined by the grammar. This way a few assets can spawn a large number of very different looking buildings.

The base assets are in polygonal form. This is so it is easier for the artist to create them. For this reason the architecture L-System outputs polygonal meshes. The meshes are then voxelized and blended with the rest of the terrain so it benefits from all the advantages of the voxel engine.

I have still a very long way to go regarding architecture. First I need to improve the grammars so I can also represent interior spaces. The interior of this church is not very good for instance. It has practically nothing inside. I also need to port the voxelization to OpenCL. I'm still running a CPU-bound prototype.

And one building is just the beginning. I want a complex network of interconnected cities. These doodles illustrate what I'm going for:

At this point I feel like the man who was carrying a brick so other people could imagine how his house was. But hopefully you will get the idea.

I will post soon about the L-System and architecture grammars. It was very interesting for me and it was one of the tasks in this project I enjoyed the most.


  1. Wow. This is incredible stuff. I went through most of your posts and am amazed by how good it all looks.
    I would like to learn more about how this is done, but don't really even know where to start. Do you have any plans on show the code or open-sourcing it, or are you going to try to make a product to sell out of this?

  2. Thanks for your comments. I have no plans to share the source code for the near future. I'm not sure if there will ever be a product. For now this is just a hobby.

    1. please please please, this needs to become available to inspire the next generations of gaming, this engine neeeeeeds to be licenced to WURM Online also, maybe you dont realize you are on the front of the future of games here, i can tell you this will be great for the world one way or another just get it out there!!

  3. Wow, you are totally gonna beat me to the same idea.

  4. "Thanks for your comments. I have no plans to share the source code for the near future. I'm not sure if there will ever be a product. For now this is just a hobby."

    Holy crap you have to be kidding. I'd really like to get your engine working in my engine, otherwise I'll have to do it on my own (putting me a year and a half behind in dev and time to market and also having to "reinvent the wheel", a beautiful wheel which you have already labored with love to crate). Also, your engine runs on the GPU using a crazy high level of multi threading which mine will not so there would have to be some scaling back.

    But keeping this just for yourself and not allowing people to at least license it would be like Newton not ever allowing others to learn calculus!

    Even as your system is now, it would be an amazing base for an indie game (even a commerical game). I'm still tied up working on fingerprint system software and have to meet deadlines so I have put my game on hold until ASAP.

    But seriously, I will get my base engine together to show you and hopefully you'll be down to at least partner with me and split profits. That way if it goes no where its not a big deal, but if it does make money then we both get credit. Also, the source would be kept strictly confidential between me and you unless you want to make it open-source or whatever.

    It'll all be very legit and honorable. You are a friggen Artist and a Scientist!

  5. If I were you I wouldn't make it open-source. I would license it or at least let people use it so long as they shared profits with you, that way seems most fair. Giving it away free in open-source would be a very nice, kind move but someone might abuse it and your generosity somehow.

  6. I also have to re-read your other articles because I'd really love to learn and implement a system that converts polygons to voxels.

    Sorry for so many posts, your stuff excites me.

  7. Your 'hobby' is certainly resulting in some incredibly good looking screenshots, so no wonder people are interested in using it. Would you care to elaborate on why you're not going to open-source it? I mean - given what you've accomplished, it would be a waste to show your 'brick' to the handfull of people you may encounter, while you could be handing out blueprints of your grande house.

  8. Is there any chance that you'll talk more about your L-System grammars in future posts?

    I'm finding the whole series to be utterly fascinating, especially the post on how how you modelled the various systems in your city building game. It's the L-Systems though that I'm really interested in, since you're clearly getting some stunning results out of them, and they're an area that I just don't know enough about, so I'd love to hear more about them!

    Keep up the good work, and long may this series go on.

  9. @Ed: Yes, I plan to cover the architecture L-System a bit later.

  10. @Corey: Please stop spamming. He will do whatever he wants, ok? Of course it's nice to be open source, but let him decide if he wants to get some financial rewards on his work. Without having others stub him in his back ;)

    @MCeperoG: Very nice blog. I just read all your articles, and reminded me when tried to do some little procedurally generated tree. In that time just 2D. Also, reading your blog I've better understood now what a voxel is and how awesome structure is it.

    Thanks for it. Waiting your articles, even if you don't provide code.

  11. @Timo: Thanks for your comments. Corey actually said on Feb 7th it was OK to keep the source closed as he would do the same. I know he posts a lot of comments, but I don't mind. He is really excited about procedural content :)

  12. We have the same hobby. This is basically what I am also trying to produce! I'll be keeping an eye on you - keep it up.