Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Practicality of dear ImGUI for game engines #1315

Closed
123tris opened this issue Sep 6, 2017 · 6 comments
Closed

Practicality of dear ImGUI for game engines #1315

123tris opened this issue Sep 6, 2017 · 6 comments
Labels

Comments

@123tris
Copy link

123tris commented Sep 6, 2017

Hello y'all. I'm a university student developing a 3D game engine (http:https://tristeon.strikingly.com/) and I'm planning to create an editor similar to Unity for it. However there are many editor libraries available and I'm in quite a bind. I looked at the basics of Qt and Dear ImGUI and while very different I quite like both of them. I unfortunately lack the time to gain expertise in both tools to make the right decision that is applicable for making a game engine. I'm aware that the library has been used for a game engine before (lumix engine).

I've done my fair share of research on this but I feel that most people talking about this topic are biased towards one another as they are a lot more experienced in one. I was wondering to ask for unbiased comments about deciding on a GUI library.

@ocornut
Copy link
Owner

ocornut commented Sep 6, 2017

There's no right or wrong answer and people here (me especially) are definitively biased as well :)

Qt is one of the standard (that alone has some value) and is very full-featured.
Dear ImGui is weird and lacks features (even though it is improving), but it can be more pleasant and very efficient with the right programmers and mindset. It's valuable for experienced c++ games programmers because it's relatively easy to hack through it or extend it, while for all its qualities Qt is probably harder to extend.

Totally not biased:

  • Qt may force you to learn more of how Qt works. You have a stable job and paperwork to read before your next meeting. Your software is deployed to thousands of people, you'll sell your company in seven years and buy a house with the money.
  • Dear ImGui may force you to do more things by yourself to complement its shortcomings. You are covered in bruises, carrying an axe and eating raw meat. You get to see the sunset, bathe in wind and you are building a beautiful camp - which you die building. If you like doing things by yourself it may work for you!

Some links:

@nem0
Copy link
Contributor

nem0 commented Sep 6, 2017

Lumix Engine's editor used to be in Qt, so I can very easily compare. ImGui is the winner. YMMV.
Pros:

  • small == much faster compile + link time, app startup time, in a few cases I had some performance issues with Qt
  • iteration time - imgui is better by order of magnitude
  • does not contain nonUI stuff as Qt
  • custom widgets are two orders of magnitude easier to do

Cons:

  • skinning
  • missing features, e.g. docking
  • needs high FPS

@Pagghiu
Copy link
Contributor

Pagghiu commented Sep 6, 2017

I am in similar situation as @nem0 but on a completely different field (we do robotic automation).
We've been starting with Qt that is great but we've found the same issues as @nem0.

We only redraw the UI when something happens, plus we don't do heavy 3D editors so responsiveness of our ui is always pretty nice between 30 and 60 fps.

I am running some private tests during my spare time to improve imgui on animations (and in general on skinning) and I think once we get them right ImGui will be the coolest looking UI framework on earth !

@skl131313
Copy link

skl131313 commented Sep 7, 2017

I'm not using C++ so Qt is pretty much off the table, it would be a pain and no wrapper currently exists for it so I'd have to write my own. I'd end up losing a lot of things that make Qt enticing though anyways.

One thing I like about ImGui is that it's part of the game engine. For Qt you'd have to figure out a way to run the game with Qt on top of it. Which usually means maintaining two separate projects, one for the game engine and one for the editor. But the game engine would need to be somehow integrated with the editor. Which isn't always the greatest to do, Qt takes control of the main loop and can be a pain to try and keep it under your control instead. You are using two different APIs, so if you store an image in DXT1 format, you might have a hard time getting that to render in Qt for use in the interface. You might have to just convert it to PNG or something and then pass it through normally. So you have a lot of duplication to accommodate two different techniques. With ImGui you can use your own rendering so you don't have to worry about the formats so long as you support it in your game engine.

@data-man
Copy link

data-man commented Sep 8, 2017

@123tris Try Godot Engine. It's awesome!

@ocornut
Copy link
Owner

ocornut commented Dec 20, 2017

@123tris Closing this topic as stale, since it was an open-ended discussion topic. Let us know if you ended up using dear imgui !

@ocornut ocornut closed this as completed Dec 20, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants