That said, a screenshot:
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):
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.