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

Voxel-Based GUI

8/13/2013

4 Comments

 
First of all, I am happy to introduce my new investor: Tristan van Essen, who is making all of this possible.  He is a great guy, and I'm not just saying that because he is giving me money. :)  It takes either a very smart person or an insane person to see potential in my work, so I'm glad that Tristan is both. ;)  I hope that I can reward his good faith with success for both of us.  So I am working on Voxel Quest full time now, which means this website will definitely be seeing a lot more updates.

That said, a screenshot:
Picture
And another:
Picture
And a video (sorry its a bit choppy, I had to capture in software this time vs using a hardware recorder):
I have put a lot of work into the GUI (probably too much), but thankfully I am done with it although I will add in features here and there as I have time (namely, make it more user-friendly).  However, building out the GUI has allowed me to rapidly implement many other things that will be used in the engine such as fast AO, materials, shadows, and so forth.  It's nice to be able to preview exactly how materials will look within the editor itself.  I did some major overhauls on the performance side of things, and it performs quite well even on the Intel 4000 chip pictured here (as noted, the video is a software capture; normally it is much more smooth).  I am relieved this worked out well because there is a lot of dynamic updating going on for mesh and buffer data.  Aside from that, it is not resource intensive at all since it only updates when you move the mouse or click a button (and only uses 40 mb of texture memory, which could be far less if optimized).

The GUI is extremely flexible, much more so than what is demoed here.  It can support any layout, and the layouts are liquid/fluid/elastic/choose your term -- meaning that I just drop in components and it autosizes them correctly and intelligently.  It will even minimize container widths and heights to their smallest children, meaning you don't have to tweak column widths to see everything at once -- it all just fits.

You can additionally take any JSON data and it will build a GUI for you to edit it -- which is what's being done here.  Not only that, but it can spit back out an updated JSON across a websocket or to a file, which means real-time editing of any of your game data (as I mentioned, my editor hooks up to a C++ server that hosts the game, or can be directly embedded in the game).  One needed improvement is nesting the data more to take up vertical space - every node opens up a new horizontal container right now.

One thing that you may have noticed is the color, which is more vivid than your typical game engine (IMO).  It uses the LAB color space.  You are probably familiar with the RGB (Red, Green, Blue) and HSL (Hue, Saturation, Luminance) color spaces already.  The LAB color space (and its variants) are generally considered to be the most perceptually uniform color spaces.  Picking out a single color, this really makes little difference.  The LAB color space really shines on interpolation.  If you want to blend color A to color B using RGB, it will often turn grey between the two.  LAB avoids this by keeping saturation and lightness more or less constant between two points, at least perceptually speaking.  If you want to learn more about this, here is a good link. The easiest way to understand the difference between the two is probably a visual comparison of their linear spaces.  Take a look at a LAB color ramp (top, mirrored) vs a HSL ramp (bottom):
Picture
Picture
Doing LAB interpolations in realtime would be way too expensive.  So I precompute it.  I use gradients to build a lighting ramp, which might seem like a naive approach but in my experience it is far superior to tweaking things like specular, ambient, and diffuse lighting.  Even to experts, the mind cannot fully grasp how such colors are added together to form the result.  A gradient is great because you know exactly how each color is going to act.  If this lighting is too simplistic you can always add additional rules.  It produces far from realistic lighting, but I am much more interested in style than I am realism.  All of the chrome-ish textures you see above are achieved solely with gradient lighting - no reflection maps (although I will probably use reflection maps eventually since they provide better looking results).

Eventually I may use this GUI to power the Voxel Quest website (since it runs in a browser, obviously), but its other uses are:

  • An editor
  • A scripting engine (sometimes its way easier to find a snippet of javascript to do something than try and integrate a C++ library into your build).
  • Inventory Screen
  • Stat Screen / Character Creation
  • Intro Menu
  • Settings
  • Dialogues / NPC interaction
  • Debug Information
  • Popping up DRM notifications every five minutes >:)


Now that I'm finally done with this aspect (at least, past the worst of it) I am going to focus on getting the interesting stuff going for Voxel Quest, namely finishing up the terrain generation.
4 Comments
DavianBlack link
8/13/2013 02:57:26 pm

Glad to see another post. I'm always impressed to see your new stuff as it is never half-baked.

Very nice looking GUI and thanks for telling us about LAB, I'll definitely be looking into that!

Reply
Gavan Woolery
8/13/2013 07:59:10 pm

Thanks Davian!

Reply
Help With Thesis Writing Service London link
1/6/2022 08:53:34 pm

Congratulations on finding an investor who can help you fulfill your ambition. You must continue with all your crazy efforts; they’ll surely prove to be productive one day. I can relate to you in a way that I also provide Help With Thesis Writing Service London and people considered it as a stupid idea but I continued to do so and now I’m considered as one of the bests.

Reply
Accounting Dissertation Topics link
1/6/2022 10:11:56 pm

Haha! I also used to say this line whenever I got lesser marks in my assignments that it takes either a very smart person or a fool to understand my work. Apparently, my teacher does not fall in any of the categories. However; from that time onwards; I’ve started to take services for Accounting Dissertation Topics through an online platform so that my professor can understand their ideas.

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