I’m taking a big a detour today. I expected to post the next installment of the dungeon generation series. But another aspect of SilverQuest: Gaiden I’m currently dealing with are GUIs.
When I talk about GUIs in SQG, these are things like the player character generator and the options menu. The way they were written is a little scatter-shot and difficult to modify. I had decided what I needed is a proper GUI library. This seems a daunting prospect. I’ve made them before and never been wholly satisfied with the results. I think this is a pretty common feeling, if social media is anything to go by.
When I think about GUI libraries, I immediately gravitate to GEM-style systems. This is not because I think they are particularly good. Rather it is because GEM is the first “modern” GUI I was exposed to as an Atari ST programmer. So, I’ve been reading my dot matrix printout of Tim Oren’s Professional GEM and once again its scope is giving me the heebie-jeebies.
As it happens, yesterday a friend on Twitter asked about best practices for implementing GUIs. And this morning while I was sorting through old downloads, I found the helpfully named “867.mp4”. It turns out it was Casey Muratori’s talk on Immediate Mode GUIs.
It’s a very interesting talk but it led me down a frustrating rabbit hole of internet transience due to missing and broken links. I spent some time this morning tracking down this lost information.
If the name Casey Muratori sounds familiar, maybe it’s because he’s made quite a splash with his Handmade Hero streaming educational video series in which he builds an entire 3D game from scratch in C++, showing it live, every day, every step of the way, while explaining every decision and concept. It’s pretty amazing stuff but I digress.
At the end of the GUI talk, Casey mentions Sean Barrett’s upcoming Game Developer Magazine article on Immediate Mode GUIs. You can read it online.
- Immediate Mode GUIs by Sean Barrett, Game Developer Magazine, Sept. 2005, pg. 34
Sean Barrett’s article includes a link to some code and a demonstration.
- Inner Product code
On that page are some decrepit links to forum threads which are preserved here.
- “I don’t want to have to keep calling DoButton()!”
- Atman’s tree-view
You can also find the remnants of the Molly Rocket forums below. There are a great many topics. They are little difficult to read due to incomplete formatting but at least they weren’t deleted like so much of our ever-fading internet.
- Molly Rocket IMGUI Forum
Also of note are Sean Barrett’s other articles. The Game Developer Magazine Archives are now free to read and Sean’s Inner Product column is always worthwhile.
- Game Developer Magazine Archive
- Sean Barrett’s blog has some other interesting articles to check out.
Today I also stumbled across something Christopher Rast was kind to point out. Although Tim Oren’s Professional GEM was written in 1986, it has some really valuable chapters on user interfaces that will never be out of date.
- User Interfaces, Part 1
- User Interfaces, Part 2
And on that topic, Apple’s Human Interface Guidelines is a classic.
- Macintosh Human Interface Guidelines
Let me know your experiences with Immediate Mode GUIs. I think I’m going to give them a try with SQG.
-xot