GUI

Published October 12, 2007
Advertisement
The current task on my plate, now that the 'guts' of the Accidental Engine are pretty much done, is GUI. I've been getting by with some pretty hackish GUI, as evidenced by the minimal button-based stuff of the heightmap editor. As it stands, the GUI is a set of Lua 'classes' (I use the term loosely, since OO structure in Lua is minimal at best) implementing Panels, Buttons, string labels, an input line and scrolling TTY-ish output console window. And that's pretty much it. I did hack a bit more functionality into the old Golem game, but none of that code base has made it into the Accidental Project. For good reason, since it was all C++ and based on sigslot; with the move to extended Lua, I need my GUI implemented in Lua, so I've been re-writing everything.

One other project I will be tackling soon is using EXT_framebuffer_object or similar to render an entire map to a buffer. A large portion of the goal set for Accidental involves allowing people to experiment with and learn about random level generation, and so it is of course helpful to see the level once it is built. You can, of course, load it up as an explorable level and walk through it, but for the most part that is a clunky and inhibiting way of studying the level as a whole. You need a bird's eye view of it, and the intrinsic rendering support of the visualization library of Accidental isn't up to the task of rendering an entire 3D level with shaded objects and skeletally animated characters to a buffer. Far easier to render to a framebuffer, then dump that rendering to a file or other output device so the user may study it and manipulate it at leisure.

The Engine is close to done, as far as the written design goals go. Large parts of the interface have been frozen for at least a year now, and with extended use of them I have encountered no overwhelming need or desire to change them or extend them. So those parts I can do final optimizations and cleanup on, and call them good. As it stands, once I add the GUI enhancements, I could base a game or two on it. It's a pretty tight framework, providing 3D isometric and perspective maps, skeletal animation, shader support, particle systems and other special effects, comprehensive noise library, quality RNG stuff via boost::random, large sets of utility classes for manipulating heightmaps, color buffers, reading/writing TGA files, plasma and subdivision fractals, accretion fractals, some cellular-based fractals and automata, maze and labyrinth generation algorithms, some L-system support, curves, splines, color tables, probability tables and selection, etc...

It's a whole different library from what it was when I first set up the website and started uploading basic articles. I'm starting to become rather proud of it. It sure does make my idle tinkering and experimentation a whole lot easier. Basically, this thing has been almost 15 years in the making if you consider that a lot of what it does is stuff that I wish I'd had 15 years ago when I first started messing with random levels by looking at the Nethack source code.
Previous Entry Canyon
Next Entry Hat
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement