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

Wednesday, February 9, 2011

Open Hobby

Why not making  this project Open Source? I have received this question several times, either in comments, tweets or email. It is probably better if I address it in one post.

I could give a list of reasons why I'm not opening the code:

  • Need to refactor and document what I have
  • My OpenCL code is not good for every card out there
  • Many features still in early stage (architecture, vegetation, city generation)
  • My wife won't let me do it

The honest answer is I don't know. I have a very demanding job, whatever little time I have to spare, I use it in this project. I only do it because it relaxes me. Some people count sheep, I think about voxels.

If I made it Open Source, I would need to start thinking about other things. It won't be relaxing anymore, and I will probably find a different hobby.

Anyway there is a chance something will come out of this. Maybe a game and an engine, which I would have no problem licensing.


  1. well .. you could just open the source instead of "open source" it ..
    i mean that you can make a download button for your source code for all who wants to read it and for all the other you just includes a warning naming the same reasons aboth ..

  2. Nope sorry, I'm not giving the source code away. I will do code swaps, though. If you have some code that you wrote and it is something I need and cannot be found anywhere, I could trade it by an equivalent portion of my code. How about that?

  3. Well, to open the sources you don't have to document, refactor or support anything. You produce good looking pictures with your engine and we want to learn from that reading your sources, adapting it to other hardware, os and languages.

    Your hobby would be shared by some others and you dont need to spend time on bug reports or feature requests!

    Licensing also under a permissive license or even copyleft license would help to encourage others to share their code.

  4. OK I just gave it a second thought to opening the code. We did a quick vote at my household to approve the idea. Saddly the motion did not pass. My wife and my seven-month-old twin daughters say nay. Only me and my cat were for it. We agreed a new referendum will happen in a year from now. My twins will be able to understand spoken language by then, maybe I can flip at least one of them to my side.

  5. Code swaps hey? What would be of interest?

  6. I'm looking for a fast, robust GPU Global Illumination solution, with at least one bounce.

  7. Hi,

    I'm a software dev in acoustic research. We use some algorithm (based on phonon) rather related to photon.

    I'm realy impressed by your "hobby". I dreaming about an unlimited, persistant and craftable world. You got the answer with voxels and procedural algorithms.

    Global illumination may be one of the most intensive processing piece of code.

    You must first. Translate your octree space subdivision into a "navigable" discretisation of the space. See adaptive mesh software like tetgen, with neighboors data.

    Email me if you want more information. (contact_2009(at_)nettrader(dot )fr ), or the google account if you can.

  8. Thanks for the hints. I have seen many papers on the subject. For a code swap I was hoping for an implementation I could use right away. My current Global Illumination is based on the hemicube method. It is not bad, but for sure I will need to improve this area.

    Tetgen is some sort of marching tetrahedrons, that is for the surface extraction. I have that covered with Dual Contouring, which are adaptive too.

  9. I don't have a clue about the code. Like bridges and fantastic graphics I'm glad someone does. Love your work.

  10. LOL why doesn't your wife want to let you share this?

    By the way, some of the stuff on your list you need not worry about. Like documenting and refactoring it... I personally would not care if you let me access to the code without documentation. I can pretty much answer any questions I have about any code given to me by just studying said code.

    And I'm currently using other software that is in earlier alpha stages like JigLibX and I don't mind how unstable the features are. Part of the fun for me would be improving them and then contributing them back to the project.

    Since you don't want to share the code you made, would you be willing to collaborate on a new project, similar to yours but reigned back a bit so that it can run on entry to mid range computers?

    Do you think you could help me come up with/mentor/guide me on creating a (XNA C# based) prodecural world terrain generator? My target platform would be Xboxs and entry level computers. I want something as easy to process as minecraft (so that means large voxels) that can run on CPUs or GPUs but doesn't need high end stuff to get a decent FPS.

    I basically just need good algorithms. You seems to have about 2 years or more experience over me. If not I could always do it on my own but I figured I'd ask the expert ;)

  11. @Corey: Yes, I would be willing to collaborate. You can contact me at my gmail account. Same username as here, just add

  12. _Coming from Bay12 a few minutes ago, there are a number of people there who think such (read; your) systems would be the perfect thing to give graphics to Dwarf Fortress, it being an already incredibly detailed procedural system. Although, since "presentation and polish" is the last development step-ish thing, you will probably have held many annual votes on the matter of open sourcing or even selling by then.
    _You might want to see if you have anything to relate to Tarn(, although I can't say I've compared your procedural codes to see if they could improve each other.
    _Since I might never remember to come back, good luck, and stay thirsty (for knowledge).

  13. Hi

    I've found your site on Youtube, great stuff. I can understand, that you dont want to opensource your project in the (near) future, but i would really like to see a tech demo. Just an .exe, where you can navigate around. Im sure lot of ppl would be interested in it, and it would generate more attention at your project.

  14. I have plans for an EXE demo, but this is far in the future. You must understand I'm designing this to run in the cloud, so the procedural generation will be hosted by servers. Not only I need to have a working generation system but also the streaming of the world to the client. This may take around one year. Hang on there! :)

  15. @Nivm: This is very interesting to me. I have not played Dwarf Fortress, but I found it is a constant reference while researching about content generation.

    I like to start with the visuals because they usually impose the hardest constraints. When I got clear what I can do visually, I will move into populating the world and giving it history. This will be one or two years down the road. I'm sure Dwarf Fortress will still be around. I will have a deep look then.

  16. Wow you want to run this generation on a cloud? Thats a step I wasn't thinking of. The kind of worlds you could generate would be sweet.

    I too like to start with the render/visuals for the same reason. Physics and hit detection has been around since newton so its pretty well covered.