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

Поделиться
HTML-код
  • Опубликовано: 26 авг 2024
  • 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:
    gamefromscratc...
    -----------------------------------------------------------------------------------------------------------
    GameDev News : gamefromscratc...
    GameDev Tutorials : devga.me
    Support : / gamefromscratch
    Discord : / discord
    Twitter : / gamefromscratch
    -----------------------------------------------------------------------------------------------------------

Комментарии • 123

  • @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 года назад +126

    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 2 года назад +1

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

    • @alexs2195
      @alexs2195 3 месяца назад

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

  • @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.

  • @joshmadscientist5338
    @joshmadscientist5338 3 года назад +14

    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 3 года назад +5

      but, that was still good experience for you.

  • @seppukun208
    @seppukun208 3 года назад +11

    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.

  • @ucmRich
    @ucmRich 3 года назад +42

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

    • @0tiii
      @0tiii 3 года назад +11

      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 3 месяца назад

      @@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.

  • @mazimadu
    @mazimadu 3 года назад +86

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

  • @darkaaaaaaa
    @darkaaaaaaa 3 года назад +24

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

  • @earthlingsunite1405
    @earthlingsunite1405 3 года назад +3

    1:55 UHOOOOOHH back to dark back to dark

  • @MichaelProstka
    @MichaelProstka 3 года назад +10

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

  • @UnidayStudio
    @UnidayStudio 3 года назад +14

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

    • @mihajlosreckovic8404
      @mihajlosreckovic8404 3 года назад

      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 3 года назад

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

  • @legend4646
    @legend4646 3 года назад +8

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

  • @softwave1662
    @softwave1662 3 года назад +13

    ImGui is wonderful.

  • @akshayazariah
    @akshayazariah 3 года назад +4

    Dear ImGUI is a Godsend.

  • @HalfAsleepSam
    @HalfAsleepSam Месяц назад

    Light theme genuinely fucking hurt, and then the second lighttheme jumpscare of github also hurt

  • @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.

  • @michaelbitzer7295
    @michaelbitzer7295 3 года назад +2

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

  • @redox5373
    @redox5373 3 года назад +1

    Waited for a long time for this video

  • @cykboy3254
    @cykboy3254 3 года назад +15

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

  • @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

  • @MastermindAtWork
    @MastermindAtWork 3 года назад +2

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

  • @roxonogueira
    @roxonogueira 3 года назад +6

    Hi Gui, I'm Pedro

  • @mnajim7538
    @mnajim7538 3 года назад +5

    Can you make a tutorial about it?.

  • @morfy2581
    @morfy2581 3 года назад +9

    Flashbang 1:52

    • @moe4b
      @moe4b 3 года назад

      The real flash bang is at 2:09

  • @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, ...)

  • @herrdingenz6295
    @herrdingenz6295 3 года назад +1

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

  • @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.

  • @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.

  • @Kitsune_Dev
    @Kitsune_Dev 3 месяца назад

    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

  • @yolamontalvan9502
    @yolamontalvan9502 8 месяцев назад

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

  • @KoMaHu3aM
    @KoMaHu3aM 3 года назад

    keeping those algorithms happy...

  • @yadav-r
    @yadav-r 2 года назад

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

  • @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 года назад +14

      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 3 года назад

      @@gamefromscratch what if i start with a square

    • @ilieschamkar6767
      @ilieschamkar6767 2 года назад

      @@fabricebalan 2 triangles then!

    • @kubolor1234
      @kubolor1234 9 месяцев назад

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

  • @SianaGearz
    @SianaGearz 3 года назад

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

  • @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 :)

  • @kubolor1234
    @kubolor1234 9 месяцев назад

    Saw imGui in the GTA 6 leak

  • @GameUnion
    @GameUnion 3 года назад

    Back to DARK! YEAH! 🌑

  • @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.

  • @rootwayder77
    @rootwayder77 3 года назад +1

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

  • @mohamedamine-vx6mb
    @mohamedamine-vx6mb 3 года назад

    Good work

  • @wjrasmussen666
    @wjrasmussen666 Год назад

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

  • @tuatarian6591
    @tuatarian6591 3 года назад

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

  • @ChrisLeeW00
    @ChrisLeeW00 3 года назад

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

  • @NavyaVedachala
    @NavyaVedachala 3 года назад

    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!

  • @WeskerPower
    @WeskerPower 3 года назад

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

  • @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

  • @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.

  • @FPChris
    @FPChris 2 года назад

    Does it work in straight C?

  • @stuartdriedger9989
    @stuartdriedger9989 3 года назад

    which prescription drugs are you using?

  • @Awwe12675
    @Awwe12675 8 месяцев назад

    شكراً

  • @itsME-dc4vm
    @itsME-dc4vm 3 года назад +1

    Nice ;O

  • @drew230
    @drew230 3 года назад

    This looks interesting

  • @9paradox
    @9paradox 3 года назад

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

  • @cannahacker9637
    @cannahacker9637 3 года назад

    very friendly project!

  • @ChronoWrinkle
    @ChronoWrinkle 25 дней назад

    i wonder, why do you not scream at white github page..

  • @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).

  • @sebastianbusch6905
    @sebastianbusch6905 2 года назад +1

    So you basically read us github

  • @watercat1248
    @watercat1248 3 года назад +1

    Html is one of my fevorit Languages

  • @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.

  • @vaishnav_mallya
    @vaishnav_mallya 3 года назад

    1:52 😂

  • @robotustra
    @robotustra 3 года назад +3

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

  • @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 2 года назад

      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 года назад +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.

  • @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...

  • @LuizAntonio_Gameplay
    @LuizAntonio_Gameplay 3 года назад

    Create a tutorial ImGui.Net thanks

  • @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?

  • @alperenince3157
    @alperenince3157 3 года назад

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

  • @user-cd4bx6uq1y
    @user-cd4bx6uq1y 3 года назад +1

    35 minutes ago

  • @CodingWorm
    @CodingWorm 3 года назад +1

    can i get a shoutout

  • @nogagoesbrrr1275
    @nogagoesbrrr1275 3 года назад

    microsoft flight simulator uses this

  • @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.