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

Tuesday, August 9, 2011

Staircraft

The staircase grammars are turning out nicely. Here is a screenshot:


This is taken from the low-resolution model. Please ignore the texturing for now, since it is the same brick texture everywhere. I did not bother yet to apply any materials to the architecture. It is only about the shapes and how they connect to each other.

The columns in the image are part of the staircase, which is in the middle of a large building. I will show more of this later.


21 comments:

  1. Amazing, like always.

    ReplyDelete
  2. How long does it take to generate a building like this?

    ReplyDelete
  3. Hmm, I never saw this addressed anywhere else: are the worlds generated by this spherical? I would prefer wrapping to borders.

    ReplyDelete
  4. hum, I don't want to nag excesively but I don't think a floor that thin supported by thin colon could support such massive stair (then again I could be wrong).

    ReplyDelete
  5. That's really a great work.

    ReplyDelete
  6. @roots: It takes less than a second.

    ReplyDelete
  7. @Anonymous 1:

    Worlds are flat for now. I will do a first iteration with 12km x 12km patch, no wrapping.

    @Anonymous 2:

    Maybe. But the stairs even if they appears solid are hollow.

    ReplyDelete
  8. Looking good. My only critical comment is that some kind of boundary blocking needs to exist (banisters, low walls, etc.) to keep folk from falling off the exposed sides of the stairs. Perhaps a full wall should exist on the interior side(s) along the stairs themselves. Alas this would also block the view from one stair to another, as you would have to traverse the wall on each new level to look up the next bit.

    ReplyDelete
  9. @Alluvian: Yes you are right, banisters are needed.

    ReplyDelete
  10. I've been lurking for some time now and this project fascinates me to no end. I hope something subtantial comes from it. Like a sandboxy game.

    ReplyDelete
  11. I've been following for a little while, and with every post I get more excited about it. Is there any way with your system to have a video of the results? Even just a camera pan through the environment would look very impressive I think.

    I also am left wondering about the technical side of your system. If you were to generate the entire world from a blank slate, how long would it take? Does it leave a very big memory footprint?

    ReplyDelete
  12. Huh.. so are there any plans to ever implement wrapping in the future? I just ask because I know that the world suddenly ending or having invisible walls would bother some people.

    ReplyDelete
  13. Firstly, this blog is amazing, and I wish I could do or even understand half of the stuff you're doing here (but, being only 19, I've still got time to learn). Each post continues to amaze me at the depth you're achieving and the absolutely stunning results.

    I've been wondering more and more what background you've had in programming that led to these great ideas and posts.

    Secondly, a quick suggestion/request: Is there any way you could create and upload a video of your world as it progresses through each level of creation? I got the idea from introversion software's development blog of Subversion, where they show their city being procedurally demonstrated in the video from this blog post: http://forums.introversion.co.uk/introversion/viewtopic.php?t=1132
    To me it's just an excellent way to understand each step of the algorithm and it's fun to watch a world spring up from nothing.

    Keep up the amazing work.

    ReplyDelete
  14. @Ryan: Yes it has been a while since I have uploaded any new videos to my YouTube channel. My screen capture software was a trial and it expired. I need to get a new one. Did you see the old videos?

    I have not generated an entire world yet, but I can estimate how long it would take. Note that I plan to generate the entire world down to the tiniest detail before people can experience it.

    My worlds are split into cells, each cell is 6m x 6m x 6m. Inside a cell, geometric detail can go down to 2cm x 2cm x 2cm, and the material detail down to 0.1cm x 0.1cm.

    The geometry for each cell has to be generated from volumetric data, then textured using different materials, lighted, simplified and reprojected so details in the high resolution model are preserved in the low resolution model. All this takes an average of one second per cell.

    Now consider an area similar to the first WoW pack: 12km x 12km. That is 2000x2000 cells, which is 4 million cells. A single cell is only 6 meters high, so if there is something like a tree or a building, more cells need be computed in the vertical. If you average this for a typical world, it is around 2 vertical cells on every location. That brings us to 8 million cells.

    Each cell was one second to compute, the resulting time is roughly 90 days. If I use 3 machines, it can be done in 30 days. I would produce a few terabytes of data.

    This is with average hardware: 4 GB RAM Intel i5 ~2.8GHz, 512MB ATI 4770.

    ReplyDelete
  15. @Dante: If it helps, I can tell you about my background. I'm a Electrical Engineer and learned to program on my own. Since then I have done games cause I enjoy creating things that may entertain other people. I'm not particularly skilled in math, programming or any of the subjects required for this kind of work. I'm just very stubborn.

    The introversion videos are sexy. I'm afraid the generation sequence of my worlds would not be as cinematic. I need to get my screen capture software working again, then I will see how the generation phase could be shown.

    ReplyDelete
  16. >>Note that I plan to generate the entire world down to the tiniest detail before people can experience it.

    Will there be the possibility of generating worlds yourself and storing them yourself?

    ReplyDelete
  17. @Anonymous: It is a possibility if I simplify the world. But this would be less interesting to me. I want to use the "cloud" and see how much detail can be pushed down to clients. This applies the same for an action game or even for a sandbox-type of game where thousands would share the same sandbox.

    ReplyDelete
  18. Hmmm, that's sounds more like a sandbox MMO to me. Not appealing to all players (not me at least). But, since this is a project for personal interest (that's the impression I got) rather than trying to make the most marketable game, I can imagine you don't try to appeal to everyone. It just would be cool to be able to control the level of detail and the size of the world to make client-side generation more feasible.

    ReplyDelete
  19. @Anonymous: Right, labels aside I will try building a game I would like to play. Then we'll see if any others care enough to play it too.

    One positive aspect of flying solo like I do is not having to worry too much about mass appeal or design committees.

    Anyway it is too early for me to start thinking of a specific game. I need to test drive this technology for a while and see if "it" will suggest any particular game experience to me.

    ReplyDelete
  20. @MCeperoG: You're crazy, and in the dwarfiest way possible (a big compliment).

    I do hope that when you get closer to the end you make this single player in some way though. There are WAY too many MMO's, and glitches in those games make the game less fun. If I play this I'd want to be able to screw around like crazy and not have to worry about making the game less fun for others.

    I suppose you could do this with a server only streaming the general world data, with user interactions being stored client-side, but I'm getting way ahead of myself.

    Anyways those stairs look awesome,

    ReplyDelete
  21. Heh, yeah you are starting to remind me of ToadyOne the way you talk. That is in no way a bad thing and in fact an excellent thing.

    No matter how it turns out, simply the fact that everything I see in that final world, however I interact with it, was generated algorithmically will still blow my mind.

    ReplyDelete

There was an error in this gadget