kruithne.net

Development Tools

In my last post, Sticking to the Script, I went over my progress of building a custom user interface. It made logical sense from here to start building out some development tools using it. So I did.

Here you can see a handful of tools for monitoring frame timings and memory regions, and it's fine for this, but as I started to draft more tools, I needed more things. Text inputs, check boxes, sliders, draggable windows, collapseable sections and so on.

Let's build all that then! Well. Let's not. I'm a big advocate for writing things yourself instead of reaching for third party libraries. I've spent long enough working professionally on codebases in the Node ecosystem that I've built a strong aversion to it.

But, despite that, I also know when it just makes sense. I could burn a load of time crafting out the most feature rich interface for my development/debugging tools, or I could just do what every other game engine does and use Dear ImGui.

If you're not familiar, Dear ImGui is an immediate-mode graphics user interface library. It's super easy to integrate into any language/engine, and it makes whipping up debugging tools an absolute breeze. It's widely used in game engines for this very reason.

Image credit: Ubisoft, Remedy, Tuxedo Labs, Valve

Getting ImGui into the engine was so straight-forward and boring that it doesn't even warrant an in-depth explanation. I simply compiled it and wrote a quick bindings to go from C++ to C, and that was it.

Let's Get Down To Business

Okay, so now what? The first thing on my list which I used as a litmus test to see if I actually wanted to stick with Dear ImGui was to port over the profiling tools I'd just written from my own game interface code.

That was far too easy. Not only did I port over my memory profiler, frame profiler and frame time monitors, but it was easy to make them a lot better as well.

For this next tool, you might have already spotted it in my Spreadsheets in a Trenchcoat post last week. Data tables are essentially the spreadsheets of my engine, and being able to edit them in-engine is super useful.

Closing Notes

That's it for this post. Not a very long one this time (you're welcome or sorry, depending on your preference). I was originally going to include this in the previous devlog post, but it was already droning on a bit.

Adding Dear ImGui to the engine has not only sped up development time as I'm not wasting it building out widgets only I'll fondle, but it's also allowed me to prototype faster. Also, it just feels like I'm one of the cool kids now, right?

Comments

No comments yet. Be the first to comment!

Leave a Comment

Your email won't be displayed publicly. Used for verification only.

Steam
YouTube
X
Patreon
GitHub
Discord