Gavan Woolery
  • News
  • About
  • Contact
  • Screenshots
  • Videos

Step 1

11/2/2011

2 Comments

 
For the past few years I've been jumping between projects, but mostly distracted with surviving.  I have been failing for so long that I think I might have learned how not to do it a little bit better.  My goal is to get actually get a product out the door - a game or an engine (or both).  I want to make it with volumetric/solid modeling and be able to generate pixel-art-esque imagery.  The easy part is starting, as they say.  But I really want to finish something.  What I have learned over the years is all common knowledge, but I am stubborn and had to learn the hard way:

1) Premature optimization is death.  An unfinished product that runs twice as fast is worth nothing.
2) Non-prioritization is death.  You will want to work on the most interesting to build, trivial features, but should not.
3) Scrapping and rebuilding is death.  You think you have learned so much, but the truth is you never stop learning.
4) Boredom is death.  If a project is too mundane, it will die.
5) Too many features is death.  Do a few things well, then expand from there.

I have worked on a number of platforms across Windows, Mac, and Linux.  Windows was (by far) the easiest OS to program on (especially given the availability of tools and existing code), but it is also the hardest to develop cross-platform applications with.  I also am ditching my PCs, I think, in favor of my newer Mac (I am not a huge fan of Macs, but I do most of my contracting work on them).  So, after spending literally months of my little free time trying to settle on a platform, I am using Qt with OpenGL 2.x (3.x support is quirky on Macs, especially with Qt).

I have spent a fairly long time (10 years) working with polygons, I have decided that I hate them.  I am using voxels because they are so much easier to do procedural generation with.  You have a finite level of detail which means you can generate objects implicitly based on a given coordinate.  I once wrote an engine with polygon-based Voronoi generation, with a month of hard work.  Conversely, what you see below was generated in a few hours of work (After spending a countless amount of time trying to get the shaders, texture loading, etc. working on Qt).  I am using volume rendering, although the underlying data can be rendered with any method (i.e. optimized for sparse voxel octrees).

So here is a screenshot: 128x128x128 Voronoi grid with my own special magic sauce algorithms.  I have also implemented shadows and normals (normals not shown), but sampling still needs to be fixed.  The sampling methods need improvement to get rid of stair-stepping and rotation artifacts.
Picture
2 Comments
Roy Zhang
11/8/2011 05:22:27 am

Is your secret magic sauce algorithm anything like a jump flooding algorithm?

Reply
Gavan Woolery
11/8/2011 09:24:26 am

I actually though of using something similar but this was a slightly less efficient (but much easier to code) method. It hashes the points in a 3D grid and guarantees a certain amount of uniformity in the point distribution, additionally making searching for neighboring points very easy and relatively efficient. I am sure something like this has been done before but I came up with it after a little bit of thought :)

Reply



Leave a Reply.

    Interesting Games, Sites, and Projects

    Atomontage

    0 fps
    Voxatron
    King Arthur's Gold
    Minecraft
    Dwarf Fortress
    Braid
    Mysterious Castle
    The Humble Indie Bundle(s)
    Project Zomboid
    Retro City Rampage
    Star Command
    Proc World
    Volumes of Fun
    Big Bad Wofl
    Tom Dobrowolski
    Ken Silverman
    Inigo Quilez
    Moving Blocks
    CodeFlow
    Merlin3D
    Sea of Memes
    Twenty Sided


    Twitter Me: @gavanw
    Facebook Me: gavanw

    Insult Me: (sorry, no link)

    RSS Feed