Dear ImGui -- C++ GUI Framework For AAA Games and Game Engines

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ม.ค. 2021
  • Dear imGUI is a light weight open source cross platform immediate mode GUI toolkit, used by tons of AAA game studios, for both games and game engines/tools. Dear imGUI 1.80 was just released.
    Link:
    gamefromscratch.com/dear-imgu...
    -----------------------------------------------------------------------------------------------------------
    GameDev News : gamefromscratch.com
    GameDev Tutorials : devga.me
    Support : / gamefromscratch
    Discord : / discord
    Twitter : / gamefromscratch
    -----------------------------------------------------------------------------------------------------------
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 122

  • @gamefromscratch
    @gamefromscratch  3 ปีที่แล้ว +10

    Link:
    gamefromscratch.com/dear-imgui-1-80-released/
    -----------------------------------------------------------------------------------------------------------
    *GameDev News* : gamefromscratch.com
    *GameDev Tutorials* : devga.me
    *Support* : www.patreon.com/gamefromscratch
    *Discord* : discord.com/invite/R7tUVbD
    *Twitter* : twitter.com/gamefromscratch
    -----------------------------------------------------------------------------------------------------------

  • @PolygonHive
    @PolygonHive 3 ปีที่แล้ว +118

    We used this a lot in the AAA industry, probably the best debug UI ever. And the remote functionality is awesome 😉👍

    • @supremeleaderkimjongun
      @supremeleaderkimjongun 2 ปีที่แล้ว +2

      Doesn't look too much good though. But on performance side it's very efficient.

    • @darkzeroprojects4245
      @darkzeroprojects4245 2 ปีที่แล้ว +1

      @@supremeleaderkimjongun something I am fine with.
      Thoug if one can make it more stylish on tp of it it be Good

    • @clintonreisig
      @clintonreisig 2 ปีที่แล้ว +2

      I want to write source in only C, but do not mind the GUI being in CPP. My applications will be OS cross platform. The information seems to say that the GUI made from Dear IMGui should look typically the same regardless of OS implementation with no need to tweak it. Am I correct on this?

    • @bronzekoala9141
      @bronzekoala9141 ปีที่แล้ว +1

      @@supremeleaderkimjongun It can be themed to look exactly how you like it.

    • @alexs2195
      @alexs2195 6 วันที่ผ่านมา

      @@supremeleaderkimjongun this is why he called the best debug UI lol

  • @mazimadu
    @mazimadu 3 ปีที่แล้ว +74

    "It run on your toaster probably ..."
    (Sees Qt)
    HE'S NOT LYING!!

  • @seppukun208
    @seppukun208 3 ปีที่แล้ว +10

    ooof, I remember IMGUI. I used it in my first year of uni. It moves so fast and gets updated so often it's hard to keep up. But it certainly made my project way better looking than the rest of my classmates.

  • @apollolux
    @apollolux 3 ปีที่แล้ว +24

    Two things to note that aren't covered in this video:
    1. While for some reason not listed in the users, Adobe also uses Dear ImGui and with the Dear ImGui implementation of their "Spectrum Design Language" (basically a glorified style guide, but still useful nonetheless) they plan on making their future app GUIs more visually consistent and unified, and the rendering more platform-agnostic. My personal assumption is they're going to double down on their existing use of Chromium Embedded Framework.
    2. The design methodologies and the overall history and progress of the Dear ImGui project are more apparent once you realize that the dev, Omar Cornut, is also known as Bock, the dev of the Sega emulator Meka. Using, even just looking at, Meka you will see this is a dev who eats his own dogfood.

  • @VertegrezNox
    @VertegrezNox 3 ปีที่แล้ว

    Thank you. been looking for more info on creating 'tools' & this looks pretty nice so ill do some more digging and probably give it a shot

  • @joshmadscientist5338
    @joshmadscientist5338 3 ปีที่แล้ว +13

    Damn it. When telling my friend about the ui toolset I was writing for my engine, he mentioned imgui. I shoulda listened and saved myself a month.

    • @kylegaijin
      @kylegaijin 2 ปีที่แล้ว +5

      but, that was still good experience for you.

  • @redox5373
    @redox5373 3 ปีที่แล้ว +1

    Waited for a long time for this video

  • @michaelbitzer7295
    @michaelbitzer7295 3 ปีที่แล้ว +2

    I have been using it for years and it is amazing!

  • @MichaelProstka
    @MichaelProstka 3 ปีที่แล้ว +9

    Been looking to replace Qt for our in-house tools, this might be just the right fit.

  • @legend4646
    @legend4646 3 ปีที่แล้ว +8

    dang, ive seen this kind of thing in games and never realized it was open source!

  • @cykboy3254
    @cykboy3254 3 ปีที่แล้ว +14

    imgui is awesome but not so much for most actual game UI, tooling and such however its brilliant for

  • @ucmRich
    @ucmRich 3 ปีที่แล้ว +35

    check out The Cherno he build his own engine "Hazel Game Engine" and he uses ImGui.

    • @0tiii
      @0tiii 3 ปีที่แล้ว +10

      On the real though, he is lots of show little substance

    • @novaria
      @novaria 3 ปีที่แล้ว +3

      @@0tiii wdym he did some pretty good tutorials and went in-depth compared to other tutorials found on youtube. Also he seems to know his stuff. Where does this come from? Just curious, maybe I'm missing something.

    • @utilityy
      @utilityy 3 ปีที่แล้ว +2

      Yeah cherno is awesome

    • @MrDarkoiV
      @MrDarkoiV 3 ปีที่แล้ว +2

      @@novaria I am not sure, I had found myself always underwhelmed in his tutorials.
      IDK how it is now, but his past tutorials were mostly basics that could be shown in 1/3 of time that he used, and any useful followups with more advanced usages were often promised but not delivered.

    • @alexs2195
      @alexs2195 6 วันที่ผ่านมา

      @@MrDarkoiV his tutorials are slow, but he did focus on the basics and explanation. Is a really good tutorial if you want to spend time and learn, but if you just want to copy code is pretty annoying.

  • @MastermindAtWork
    @MastermindAtWork 3 ปีที่แล้ว +2

    I seen Game Freak's Pokemon Sword and Shield engine used ImGUI from the Beta images shown of the game.

  • @darkaaaaaaa
    @darkaaaaaaa 3 ปีที่แล้ว +24

    How simple to implement backend for ImGUI? I've got it all running, inlcuding input, on N3DS under 8 hours.

  • @SianaGearz
    @SianaGearz 3 ปีที่แล้ว

    Would you consider making a roundup/comparison of all the different similar libs? There's also Nuklear and Google FlatUI.

  • @softwave1662
    @softwave1662 3 ปีที่แล้ว +12

    ImGui is wonderful.

  • @herrdingenz6295
    @herrdingenz6295 3 ปีที่แล้ว +1

    3:00 Dear ImGui has drag'n'drop and cut'n'paste .. it even has docking and viewports

  • @NavyaVedachala
    @NavyaVedachala 2 ปีที่แล้ว

    Hello! This was great. I need to make time plot inside my game screen. Are there any video resources that explain how to set up graphs using IMGUI? Thank you!

  • @akshayazariah
    @akshayazariah 3 ปีที่แล้ว +3

    Dear ImGUI is a Godsend.

  • @UnidayStudio
    @UnidayStudio 3 ปีที่แล้ว +13

    I use this in my game engine, it's awesome!

    • @mihajlosreckovic8404
      @mihajlosreckovic8404 2 ปีที่แล้ว

      Is the source code available? Curious to see how it looks. I am learning about game engine development (DirectX currently), and would like to see how other projects look

    • @bhaveshtiwari5783
      @bhaveshtiwari5783 2 ปีที่แล้ว

      @@mihajlosreckovic8404 just check out his channel he already have a lot of videos on his game engine

  • @sharkinahat
    @sharkinahat 3 ปีที่แล้ว +1

    I only played a bit with the Python bidings and it worked fine. I like its no nonsense style, you don't get 55 types of Button classes.

  • @yadav-r
    @yadav-r 2 ปีที่แล้ว

    interesting, really appreciate the time & effort you put into your content.

  • @mohamedamine-vx6mb
    @mohamedamine-vx6mb 3 ปีที่แล้ว

    Good work

  • @tomtawadros
    @tomtawadros 3 ปีที่แล้ว +14

    Interesting, seen star citizen use this. Always thought it was just a feature of their engine.

    • @HereIsZane
      @HereIsZane 3 ปีที่แล้ว +2

      Nope it seems they are using imgui instead of the standard CE UI for new stuff, probably cause new LY versions have a different UI framework so in case they want to upgrade in the future they won't have to redo all the tools.

  • @IElial
    @IElial 3 ปีที่แล้ว +4

    Thx ! Strangely I was completely bling on this side. And just understand what Im mean in ImGui ^^. So to be clear, this is mainly devoted to Dev UI (like tool) but not for end user (player) interface (like creating game menu, inventory, ...)

  • @BrainSlugs83
    @BrainSlugs83 3 ปีที่แล้ว

    The Unity port doesn't work. At least it didn't a few months ago when you did your last ImGui video. It's like for Unity 2017 or something and didn't function in 2019/2020. I filed a bug and forgot about it. Might be worth looking back into it now.

  • @Kitsune_Dev
    @Kitsune_Dev 8 วันที่ผ่านมา

    can you talk more about Lua and Luau and tools?
    i currently made my tools outside of Roblox for automating tasks using Lune but I can’t really find libraries that work with it as Lune is written in RUST and I need libraries for audio manipulation and GUI stuff

  • @earthlingsunite1405
    @earthlingsunite1405 3 ปีที่แล้ว +1

    1:55 UHOOOOOHH back to dark back to dark

  • @ChrisLeeW00
    @ChrisLeeW00 3 ปีที่แล้ว

    hmm, this might help make that retroarch core I've been thinking about...

  • @rootwayder77
    @rootwayder77 2 ปีที่แล้ว +1

    iam gonna use this in my game engine. this looks sooooo awsome i love it ❤️

  • @WeskerPower
    @WeskerPower 3 ปีที่แล้ว

    This is very old ma dude, i was wondering if you ever talk about it

  • @yolamontalvan9502
    @yolamontalvan9502 4 หลายเดือนก่อน

    But this video is two years old. Is it still good?

  • @cannahacker9637
    @cannahacker9637 3 ปีที่แล้ว

    very friendly project!

  • @tuatarian6591
    @tuatarian6591 3 ปีที่แล้ว

    Nim port of this (part of nimgl) is super good

  • @mnajim7538
    @mnajim7538 3 ปีที่แล้ว +5

    Can you make a tutorial about it?.

  • @9paradox
    @9paradox 3 ปีที่แล้ว

    Hmm 🤔 interesting. I was about to start with Kotlin compose for desktop.

  • @KoMaHu3aM
    @KoMaHu3aM 3 ปีที่แล้ว

    keeping those algorithms happy...

  • @drew230
    @drew230 3 ปีที่แล้ว

    This looks interesting

  • @Thewe34
    @Thewe34 5 หลายเดือนก่อน

    شكراً

  • @jimvonmoon
    @jimvonmoon 3 ปีที่แล้ว

    Any good retained-mode GUI alternatives?

  • @roxonogueira
    @roxonogueira 3 ปีที่แล้ว +6

    Hi Gui, I'm Pedro

  • @Murderface666
    @Murderface666 3 ปีที่แล้ว +2

    I remember the days when people would say "why reinvent the wheel? There's already Unreal and Unity!" Where are they now?

    • @cholushkin
      @cholushkin 3 ปีที่แล้ว

      it depends on particular purposes and requirements. You don't need imgui if you're creating simple unity game. But you may consider using it if you have a big team and custom engine with a complex gui. So answer to your question is they are right here now.

    • @Murderface666
      @Murderface666 3 ปีที่แล้ว +2

      @@cholushkin You are just trying to be contrary for the sake of being contrary. People been wanting to understand how to create their own engines + editors for years. The problem is, when such a question is asked, everyone is quick to shoot it down. Fast forward to today, there is no shortage of such examples and is steadily decoupling from the mainstream, meaning a handful of companies wont be able to retain a monopolizing strangle hold on the market. More engines + editors is a good thing. It means more money in the creator's (of a game) pocket by eliminating as many middlemen with their hands out as possible.

  • @GameUnion
    @GameUnion 3 ปีที่แล้ว

    Back to DARK! YEAH! 🌑

  • @wjrasmussen666
    @wjrasmussen666 ปีที่แล้ว

    Is there a github for the example at the start of this video with the examples

  • @itsME-dc4vm
    @itsME-dc4vm 3 ปีที่แล้ว +1

    Nice ;O

  • @morfy2581
    @morfy2581 3 ปีที่แล้ว +9

    Flashbang 1:52

    • @moe4b
      @moe4b 3 ปีที่แล้ว

      The real flash bang is at 2:09

  • @msec7188
    @msec7188 3 ปีที่แล้ว +1

    is this the same as dearpygui? because I love love love dearpygui!!

    • @Nexus-rt1bm
      @Nexus-rt1bm 3 ปีที่แล้ว

      I think dearpygui is just python bindings for dear ImGui

  • @adityachoubey935
    @adityachoubey935 3 ปีที่แล้ว +3

    I have been using Unity and Unreal to make games. I wanted to start working on a game engine that uses D3D 11 as a project. How and where should I start?

    • @gamefromscratch
      @gamefromscratch  3 ปีที่แล้ว +13

      Generally you start with a renderer, then a scene graph, then asset loaders, then tools and go from there.
      Every single game engine starts with a single triangle on screen.

    • @fabricebalan
      @fabricebalan 2 ปีที่แล้ว

      @@gamefromscratch what if i start with a square

    • @ilieschamkar6767
      @ilieschamkar6767 2 ปีที่แล้ว

      @@fabricebalan 2 triangles then!

    • @kubolor1234
      @kubolor1234 5 หลายเดือนก่อน

      ​@@gamefromscratchstarted with a pyramid, felt like Hideo Kojima 😎

  • @jaysistar2711
    @jaysistar2711 ปีที่แล้ว

    Please look at egui. It's like Dear IMGUI in that it's immediate mode, and it generates vertex buffers to be rendered by the engine API or low level API, but it's written in Rust, and easily works on native and the Web (it has prewritten backends for common platforms).

  • @kubolor1234
    @kubolor1234 5 หลายเดือนก่อน

    Saw imGui in the GTA 6 leak

  • @vaishnav_mallya
    @vaishnav_mallya 3 ปีที่แล้ว

    1:52 😂

  • @FPChris
    @FPChris 2 ปีที่แล้ว

    Does it work in straight C?

  • @stuartdriedger9989
    @stuartdriedger9989 3 ปีที่แล้ว

    which prescription drugs are you using?

  • @kanteranrhodan6032
    @kanteranrhodan6032 3 ปีที่แล้ว +2

    Please show the docking branch!

    • @bocktiful
      @bocktiful 3 ปีที่แล้ว +2

      I second this comment you should show the docking branch (merging/split window, extracting them out of the main viewport)
      Also, about your comment on "lacks certain features normally found in more high-level libraries": it does support drag and drop and clipboard, many more things :)

  • @watercat1248
    @watercat1248 3 ปีที่แล้ว +1

    Html is one of my fevorit Languages

  • @chickeninabox
    @chickeninabox 3 ปีที่แล้ว +2

    Are you an engineer?

    • @gamefromscratch
      @gamefromscratch  3 ปีที่แล้ว +2

      That is a word with a VERY defined meaning in Canada. I do not have an engineering degree. I have had titles with Engineer in them, but again, they probably shouldn't.

    • @chickeninabox
      @chickeninabox 3 ปีที่แล้ว +1

      @@gamefromscratch I said that because you were speaking words that you didn't speak before.

  • @sebastianbusch6905
    @sebastianbusch6905 2 ปีที่แล้ว +1

    So you basically read us github

  • @alperenince3157
    @alperenince3157 3 ปีที่แล้ว

    says "white theme, shield your eyes ugghhh"
    uses white theme github lol

  • @kasper7203
    @kasper7203 3 ปีที่แล้ว +4

    Lol I have no clue what this is.. Really starting to doubt I will ever make a game

    • @Bozemoto
      @Bozemoto 3 ปีที่แล้ว +3

      Figure out what your goal is, is it to make a AAA game then you're better off trying to get into the industry. There are hundreds of people working at big studios, can't really match it with just one person. If it's a hobby then just grab an engine, maybe even RPG maker and get going. Do what you enjoy. Happy to offer advice if you need it.

    • @MarcV_IndieGameDev
      @MarcV_IndieGameDev 3 ปีที่แล้ว

      I'm new myself dude, it's exciting and confusing, looking into things can be mind boggling or inspiring. Take it slowly, and just dabble with stuff. See what you enjoy and see where your strengths and weaknesses lie. But above all, enjoy yourself - have fun.

    • @kasper7203
      @kasper7203 3 ปีที่แล้ว +1

      @@Bozemoto thanks mate.. Currently messing around in Unreal 4. I will try.. I am just easily intimidated when I see how much I ought to know before releasing anything.

    • @kasper7203
      @kasper7203 3 ปีที่แล้ว

      @@MarcV_IndieGameDev thanks bud I will try. Maybe in the end what I make (if I ever finish it) will not be worthy of publishing but you are right, the process of trying is reward enough. At least if it is just me working on it then I can't dissapoint anyone lol.

    • @SeraphixD3
      @SeraphixD3 3 ปีที่แล้ว +2

      Instead of working with some complicated framework in ImGui you just call a function and maybe give it some pointer to your data. A bool when clicking a checkbox for instance. It generates some data that can be used in a shader to display the gui. Or you just use the example implementation for your graphics API and your window framework / library. I just did the later for a simpel OpenGL renderer. -- You don't really need to know all the low level details to get into game programming, if you don't want to; you could just use an engine. Unless you really want to go do low level programming. Like I said, ImGui is just a bunch of functions that are almost self-explanatory. If you want to do graphics programming, I recommend the OpenGL API + glfw for window creation and input handling, because it is the simplest possible way (that I know of) to do that.

  • @robotustra
    @robotustra 3 ปีที่แล้ว +3

    "ImGui has no third party dependency"... Except that your own project will have a dependency of ImGui itself...

  • @2002budokan
    @2002budokan 2 ปีที่แล้ว

    I recommend this speaker to read the book "Uncommon Sense Teaching", which also has a course on Coursera, or watch the course videos. Maybe then he'll stop talking like he's in a hurry and produce more useful videos. Ok, I can slow down the speed, but what's the point of explaining like a racehorse?

  • @LuizAntonio_Gameplay
    @LuizAntonio_Gameplay 3 ปีที่แล้ว

    Create a tutorial ImGui.Net thanks

  • @StiekemeHenk
    @StiekemeHenk 3 ปีที่แล้ว +3

    ImGUI, perfect for making hacks

    • @taddeustentakel8598
      @taddeustentakel8598 3 ปีที่แล้ว

      how u mean that ?

    • @StiekemeHenk
      @StiekemeHenk 3 ปีที่แล้ว +4

      @@taddeustentakel8598 Its common to use ImGUI when making cheats for games quickly.

    • @bls7879
      @bls7879 3 ปีที่แล้ว +1

      just came here to say that xD

    • @cazz
      @cazz 2 ปีที่แล้ว +1

      hahaha, yeah...

  • @sabriath
    @sabriath 3 ปีที่แล้ว +2

    Somewhat sad that they forced developers to keep calling all of the functions at every step...majority of gui can be rendered to a surface and then use callback functions if an area needs a redraw. I've done these things for years, it's much faster that way. Better still if you thread it and leave it completely automated, handling only through requests and callbacks.

    • @jocamar15
      @jocamar15 3 ปีที่แล้ว +2

      You're just describing retained mode UI frameworks. The idea of immediate mode frameworks is simplicity and ease of use, allowing programmers to make UI in a way more similar to how they would program other things.

    • @sabriath
      @sabriath 3 ปีที่แล้ว +3

      @@jocamar15 I am not seeing how it is "easier" to program each and every draw call and having to worry about depth, focus, input, etc., instead of simply "here's a window, manage it for me, if something happens let me know."
      Simplicity to me is:
      main = frame_new(-1, [10,10], [100,100]);
      button = button_new(main, [0,0], main.innersize, [clickme]);
      I guess I'm old school, just call me a boomer...but in my eyes, it is easier to separate out the code that is UI specific from the game code. In this way, technically, you could have all the UI loaded at the beginning and just ".hide" it until it is needed....rather than instance create/destroy and have a bunch of objects intertwined in the mess.
      To each their own, I just don't see the appeal.

    • @bocktiful
      @bocktiful 3 ปีที่แล้ว +3

      @@sabriath Why do you suggest you'd have to care about "depth, focus, inputs" in dear imgui?
      Your example in dear imgui would be
      ImGui::Begin("Main");
      if (ImGui::Button("mybutton")) clickme();
      ImGui::End();
      Which arguably is simpler already. And
      - You have a window which you can move, collapse, docking, even extract out of your primary viewport with the docking branch.
      - It works anywhere in your code EVEN in a deep call-stack for quick debugging.
      - The fact that it doesn't require storage of ui artifacts on your end means it also makes it much easier to use in dynamically recompiled/reloaded code.
      - Your example is completely omitting the MOST problematic aspect of retained ui is that when anything needs to be dynamic then suddenly you are in a world of pain. Synchronizing UI with live data is extra code as well as lots of bugs and those retained framework are not handling it efficiently. All those problems are going away with Dear ImGui.
      - Making DYNAMIC ui magnitude faster to create has a HUGE impact on development style. Everyone can suddenly create tools in a few minutes.
      Instead of calling yourself old school or a boomer and making claims about performance try to spend a day in Dear ImGui examples and make measurement.
      github.com/ocornut/imgui/wiki/Quotes

    • @rrnum7
      @rrnum7 ปีที่แล้ว

      Very late to the party, but I'd add something more. Immediate mode GUIs are nothing new; game developers have been implementing them for their in-house tools for ages, so the "I'guess I'm old school" just sounds ignorant.
      And yes, it would be much better to try to actually use it (and not just write toy examples, by the way) so that one can have an informed opinion.
      As Casey Muratori (the person who coined the term Immediate Mode GUI) wrote almost 20 years ago: "I think this has something to do with how simple the IMGUI concept is, as it leads people to think they understand it, and then they proceed to get into heated arguments as if they actually know what they’re talking about".

    • @sabriath
      @sabriath ปีที่แล้ว +2

      @@rrnum7 Yeah, you are a year off of my original comment, and I still believe in my concepts that I stated. You can call it or coin it or whatever way you want, but I've always programmed backend systems to be as much "hands off" as possible for frontend programming. I actually just created an animation suite for gms2 using time sources....you literally tell it to move an object from one location to another and give it an interpolation function (like a lambda) so that it steps at specific rates, everything is handled in the background from there. You can overlay the animations with other things as well, like rotations, scales, etc.....you tell it, it goes, all encapsulated.
      If I wasn't currently in the process of making a video game, I'd be happy to program a proper gui backend that literally would take care of everything. Yes, I'm old school; yes, it's arrogant attitude, but more so built from decades of experience with many languages (including some that I've designed myself). It's funny because I actually hate other people's libraries because they are built so bloated, but I build many libraries for others, lol. I'm an asshole like that, but I like the pride it gives me for completing such tasks, don't really care about making friends.

  • @user-cd4bx6uq1y
    @user-cd4bx6uq1y 3 ปีที่แล้ว +1

    35 minutes ago

  • @nogagoesbrrr1275
    @nogagoesbrrr1275 3 ปีที่แล้ว

    microsoft flight simulator uses this

  • @CodingWorm
    @CodingWorm 3 ปีที่แล้ว +1

    can i get a shoutout

  • @stewdean
    @stewdean 3 ปีที่แล้ว

    So many GUI toolkits look terrible. This is no exception.

    • @michaelbitzer7295
      @michaelbitzer7295 3 ปีที่แล้ว

      The looks can be changed however you want. It it just the default imgui style. Might take some time to have a nice style but once you do nobody will think it is imgui.