And I’m back
The exams are over and I’m working on improving the engine further.
After lengthy consideration, I decided that it would be best to write my own GUI system from scratch rather than using an existing one. This creates a learning experience for me and avoids unnecessary overheads. It also means that I can make the UI operate in any way I want it to. It also allowed me to develop a work flow I can use in the future for adding new features:
CIDIR – Concept, Ideas, Design, Implementation, Refinement
Concept
For the GUI, I decided that I wanted to go for a simplified of the Blender UI system. I produced a mock-up in Photoshop to get ideas circulating.
Ideas
I begin to think about how the UI would be used, what it’s function would be and how customizable it should be. I decided that I wanted the GUI to be fully customizable in C++. I also considered scripting with Lua, Python or Ruby. I decided against this in due course. Scripting may be a feature for another time. I also begin to think about how I would write the systems and how they would be used later.
Design
A final software design is compiled describing classes, interfaces, inheritance, etc; as well as a list of API functions. A implementation plan is also laid out.
Implementation
The software is written according to the design and is regularly tested to ensure that systems work as expected as they are brought on-line.
Refinement
Does the feature work as expected? Are there any bugs? Are any design changes needed? If the answers to any of those questions is yes, changes are made and the feature is reassessed.
I’m sure that there are better work flows out there, but this one works quite well for me at the moment.
The GUI is not yet finished and a lot of systems are waiting to be brought online. I am using a version which is quite different from the one in the repository at present. I have separated the engine and the demo parts into different projects. The engine is built as a static library which can be used by other games or other applications. My current solution also uses an early version of the scene system. I have a newer version of the scene system in another project but it isn’t working at present for a multitude of reasons. When the GUI is working I will complete and integrate the newer scene system back into the project.
In a future post I will talk more about the GUI’s design and structure.

Leave a Reply