top of page
  • Writer's pictureWalter Hill

Exploring ImGui & Custom Editors - Rocket3d

For almost a year, I have been slowly developing my own 3d engine Rocket3d in C++ with an OpenGL backend. I started the project with the knowledge learned from Champlain College’s Game Architecture course, the summer SDL project I made based on that class, and from Learn OpenGL.


This Spring for my final semester, I will be working on Rocket3d in class. My overarching goal is to use class time to research and implement new features to move the engine forward. Specifically, I will be exploring and researching the process of developing a custom editor for the engine. I want to focus on building an editor with the ImGui library in C++, utilizing code architecture best practices to push myself as a coder and a creator.


ImGui example

I believe that working through the challenge of creating a custom editor will help me grow as a programmer in my ability to design software systems and enhance my proficiency and fluency with C++. Integrating ImGui into my existing engine structure in a clean and efficient way will be a challenge, but completing this project will reinforce my ability to work with existing libraries and codebases. This project will also be an opportunity for me to flex my ability to accurately document large code implementations. I began implementing Doxygen into Rocket3d only a few months ago, but in building the editor, effective documentation will be a central focus from the beginning.


Looking forward, this project will require time spent reading, watching, and taking notes on the topics of ImGui and constructing custom editors as a whole. Through research, I hope to eliminate a number of unknowns and blind spots in my technical know-how. At this time, the biggest unknown is that I am unfamiliar with ImGui. I will likely need to spend time learning the library, and implementing it in isolation to get familiar, and then integrate the library into the editor I will build. Another unknown is the question of how to structure the editor in terms of code architecture. I have done very minimal research and come across ideas like rendering layers, but I will need to explore the design in greater depth going forward to determine how I want to build the editor in the context of the engine.


The Rocket3d engine

What’s the post about? (Post Description)0/320For almost a year, I have been slowly developing my own 3d engine Rocket3d in C++ with an OpenGL backend. I started the project with the knowledge learned from Champlain College’s Game Architecture course, the summer SDL project I made based on that class, and from Learn OpenGL. This Spring for my final semester, I wil

Knowing that there’s a lot I don’t know, scheduling and planning ahead will be key. I am confident that I can develop an editor to a presentation-worthy point by the end of the semester. I don’t believe my work on the editor will be complete, but I think I will have at least enough to show off to my classmates and build on for use in the Rocket3d engine going forward.


It is also important to note that this project depends on external factors, primarily ImGui. ImGui is an in-development library and will receive updates as I am using it. Because of this, I will be selecting the most recent stable release and sticking with that at least through this semester to minimize issues from updating to new versions of the library.


I’m excited to get the ball rolling on this new project for my game engine, and I can’t wait to learn and grow as a programmer. And hopefully at the end of the semester, I’ll have me the foundations of a full-fledged game editor.

bottom of page