Feedback Requirements
After working on my design documents for a while, I started a list of the required engine technology that I would need for my new game. The first one that I am going to tackle is an overhaul and paradigm change of the GUI. GUIs don't seem like that much fun to work on, but if done properly it can make a world of difference to the whole experience.3D GUI
With that in mind, in my previous engine the GUI was a collection of special case 2D objects (buttons, labels, slider bars, etc...) inserted into the scene graph. These objects were then send information about what the cursor/buttons were doing and the objects would shoot back a message if something important happened. This worked out great for a 2D, windows type of environment.Well, now I want to change that to be a 3D GUI instead of 2D. It seems difficult at first to consider how to map the two concepts, but they actually aren't that different. The objects were already in my scene graph, so the conversion to 3D objects makes no difference there. The cursor used to be a 2D location, but now it is a 3D ray instead. The previous interaction with the cursor was essentially an intersection test between the cursor and the objects, which is still true for the 3D case. And I can still re-use the messaging system that I had before. Sounds like a good way to go.
The benefit of switching to 3D is to have a much more varied set of possible components to the gui. Also, it unifies the rendering aspects of the system, so there will only be a single rendering path instead of GUI first then scene second. I am truly looking forward to see what I can do with this...
My current tasks are to get the 3D intersection testing and location finished up. The latest Eberly book (3D Game Engine Design 2nd Ed.) has the techniques that I need, so it shouldn't take long to get them implemented. Hopefully I can get some test guis up and running soon...
It'll be interesting to see how it works out; I can imagine you'd be able to create much more interesting interfaces - especially when it comes to integrating them into a game/multimedia scene. Most UI's seem artificial and disjoint from any background imagery.
Jack