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

Ғылым және технология

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
    @gamefromscratch3 жыл бұрын

    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
    @PolygonHive3 жыл бұрын

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

  • @supremeleaderkimjongun

    @supremeleaderkimjongun

    2 жыл бұрын

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

  • @darkzeroprojects4245

    @darkzeroprojects4245

    2 жыл бұрын

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

  • @clintonreisig

    @clintonreisig

    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

    Жыл бұрын

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

  • @alexs2195

    @alexs2195

    24 күн бұрын

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

  • @mazimadu
    @mazimadu3 жыл бұрын

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

  • @apollolux
    @apollolux3 жыл бұрын

    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.

  • @seppukun208
    @seppukun2083 жыл бұрын

    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.

  • @joshmadscientist5338
    @joshmadscientist53383 жыл бұрын

    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 жыл бұрын

    but, that was still good experience for you.

  • @VertegrezNox
    @VertegrezNox3 жыл бұрын

    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

  • @michaelbitzer7295
    @michaelbitzer72953 жыл бұрын

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

  • @redox5373
    @redox53733 жыл бұрын

    Waited for a long time for this video

  • @darkaaaaaaa
    @darkaaaaaaa3 жыл бұрын

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

  • @legend4646
    @legend46463 жыл бұрын

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

  • @ucmRich
    @ucmRich3 жыл бұрын

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

  • @0tiii

    @0tiii

    3 жыл бұрын

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

  • @novaria

    @novaria

    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 жыл бұрын

    Yeah cherno is awesome

  • @MrDarkoiV

    @MrDarkoiV

    3 жыл бұрын

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

    24 күн бұрын

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

  • @softwave1662
    @softwave16623 жыл бұрын

    ImGui is wonderful.

  • @cykboy3254
    @cykboy32543 жыл бұрын

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

  • @UnidayStudio
    @UnidayStudio3 жыл бұрын

    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

  • @MichaelProstka
    @MichaelProstka3 жыл бұрын

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

  • @akshayazariah
    @akshayazariah3 жыл бұрын

    Dear ImGUI is a Godsend.

  • @yadav-r
    @yadav-r2 жыл бұрын

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

  • @earthlingsunite1405
    @earthlingsunite14053 жыл бұрын

    1:55 UHOOOOOHH back to dark back to dark

  • @IElial
    @IElial3 жыл бұрын

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

  • @NavyaVedachala
    @NavyaVedachala2 жыл бұрын

    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!

  • @sharkinahat
    @sharkinahat3 жыл бұрын

    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.

  • @Kitsune_Dev
    @Kitsune_Dev26 күн бұрын

    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

  • @tomtawadros
    @tomtawadros3 жыл бұрын

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

  • @HereIsZane

    @HereIsZane

    3 жыл бұрын

    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.

  • @SianaGearz
    @SianaGearz3 жыл бұрын

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

  • @mohamedamine-vx6mb
    @mohamedamine-vx6mb3 жыл бұрын

    Good work

  • @morfy2581
    @morfy25813 жыл бұрын

    Flashbang 1:52

  • @moe4b

    @moe4b

    3 жыл бұрын

    The real flash bang is at 2:09

  • @MastermindAtWork
    @MastermindAtWork3 жыл бұрын

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

  • @herrdingenz6295
    @herrdingenz62953 жыл бұрын

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

  • @rootwayder77
    @rootwayder772 жыл бұрын

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

  • @jimvonmoon
    @jimvonmoon3 жыл бұрын

    Any good retained-mode GUI alternatives?

  • @yolamontalvan9502
    @yolamontalvan95025 ай бұрын

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

  • @mnajim7538
    @mnajim75383 жыл бұрын

    Can you make a tutorial about it?.

  • @drew230
    @drew2303 жыл бұрын

    This looks interesting

  • @tuatarian6591
    @tuatarian65913 жыл бұрын

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

  • @cannahacker9637
    @cannahacker96373 жыл бұрын

    very friendly project!

  • @adityachoubey935
    @adityachoubey9353 жыл бұрын

    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 жыл бұрын

    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

    6 ай бұрын

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

  • @wjrasmussen666
    @wjrasmussen666 Жыл бұрын

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

  • @KoMaHu3aM
    @KoMaHu3aM3 жыл бұрын

    keeping those algorithms happy...

  • @ChrisLeeW00
    @ChrisLeeW003 жыл бұрын

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

  • @Murderface666
    @Murderface6663 жыл бұрын

    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 жыл бұрын

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

  • @roxonogueira
    @roxonogueira3 жыл бұрын

    Hi Gui, I'm Pedro

  • @BrainSlugs83
    @BrainSlugs833 жыл бұрын

    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.

  • @itsME-dc4vm
    @itsME-dc4vm3 жыл бұрын

    Nice ;O

  • @FPChris
    @FPChris2 жыл бұрын

    Does it work in straight C?

  • @GameUnion
    @GameUnion3 жыл бұрын

    Back to DARK! YEAH! 🌑

  • @WeskerPower
    @WeskerPower3 жыл бұрын

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

  • @9paradox
    @9paradox3 жыл бұрын

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

  • @stuartdriedger9989
    @stuartdriedger99893 жыл бұрын

    which prescription drugs are you using?

  • @Awwe12675
    @Awwe126755 ай бұрын

    شكراً

  • @kubolor1234
    @kubolor12346 ай бұрын

    Saw imGui in the GTA 6 leak

  • @kanteranrhodan6032
    @kanteranrhodan60323 жыл бұрын

    Please show the docking branch!

  • @bocktiful

    @bocktiful

    3 жыл бұрын

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

  • @msec7188
    @msec71883 жыл бұрын

    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

  • @vaishnav_mallya
    @vaishnav_mallya3 жыл бұрын

    1:52 😂

  • @watercat1248
    @watercat12483 жыл бұрын

    Html is one of my fevorit Languages

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

  • @chickeninabox
    @chickeninabox3 жыл бұрын

    Are you an engineer?

  • @gamefromscratch

    @gamefromscratch

    3 жыл бұрын

    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 жыл бұрын

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

  • @robotustra
    @robotustra3 жыл бұрын

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

  • @kasper7203
    @kasper72033 жыл бұрын

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

  • @Bozemoto

    @Bozemoto

    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 жыл бұрын

    @@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 жыл бұрын

    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.

  • @sebastianbusch6905
    @sebastianbusch69052 жыл бұрын

    So you basically read us github

  • @alperenince3157
    @alperenince31573 жыл бұрын

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

  • @StiekemeHenk
    @StiekemeHenk3 жыл бұрын

    ImGUI, perfect for making hacks

  • @taddeustentakel8598

    @taddeustentakel8598

    3 жыл бұрын

    how u mean that ?

  • @StiekemeHenk

    @StiekemeHenk

    3 жыл бұрын

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

  • @bls7879

    @bls7879

    3 жыл бұрын

    just came here to say that xD

  • @cazz

    @cazz

    2 жыл бұрын

    hahaha, yeah...

  • @2002budokan
    @2002budokan2 жыл бұрын

    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?

  • @sabriath
    @sabriath3 жыл бұрын

    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 жыл бұрын

    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 жыл бұрын

    @@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 жыл бұрын

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

    Жыл бұрын

    @@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-cd4bx6uq1y3 жыл бұрын

    35 minutes ago

  • @LuizAntonio_Gameplay
    @LuizAntonio_Gameplay3 жыл бұрын

    Create a tutorial ImGui.Net thanks

  • @nogagoesbrrr1275
    @nogagoesbrrr12753 жыл бұрын

    microsoft flight simulator uses this

  • @CodingWorm
    @CodingWorm3 жыл бұрын

    can i get a shoutout

  • @stewdean
    @stewdean3 жыл бұрын

    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.

Келесі