Hope you guys enjoyed the video! Check out Walnut here ► github.com/StudioCherno/Walnut See NordPass Business in action now with a 3-month free trial here (use code thecherno) ► nordpass.com/thecherno
NC prefix stands for something like "Non-Client". Some messages have a client and non-client version to differentiate between something happening in the client portion of the window (the app) and the non-client portion (titlebar, resize handles, etc.)
@@scififan698 The epic game store is one of the most godawful user experiences in recent memory. Unbelievably slow and just doesn't load things half the time. Now it all makes sense
23:59 The C23 standard now has a new #embed preprocessor directive to do this directly within the language so that you won't need a script to pre-compute that anymore. The compiler will do this for you :)
@@v01d_r34l1ty I guess it will be added into C++'s standards as well. Even tho C++ natively supports C's standard, so you will be able to use it once it's added to C anyway
Instead of something like this we now get big corporations abusing JavaScript and creating bloatware that devours your ram and performs like S* just because they refuse to hire dedicated teams for cross-platform desktop. Great video as always.
it has some pretty big advantages thou .. but I wish JS were cleaner and browser would be super-lean and super-fast modular technology 😢 I need Thanos glove for make it happen xD
It's called caption cause in the win 9x days (especially 95 since there was absolutely zero "decoration" while 98 got a gradient woohoo) the caption was the titlebar text. There was no other container than this as the controlbox was drawn on top of the "titlebar". So caption was essentially "the titlebar".
My god this bring back memories, my first public github repo was a little wrapper for WPF bundling a theme I liked and adding primary colour variants and a custom window element using it. Bring me a lot of nostalgia!
This is awesome. As a control/system engineer i know my C/C++, but i was never happy with the effort/reward of desktop app tools in C/C++. Walnut might be the tool to let me do my engineer stuff without focusing too much on the application stuff. If you want to beef up your example with some sort of file format, save & load, do something, plot something that would be highly appreciated. Maybe a small tooling software that helps you with your game engine or fits nicely along side the engine.
I'd love a video on how the compiler and other components work to actually package and ship the game itself. How is the exe built? How are the assets "cooked and packaged"?
Something which made me steer away from imgui despite being initially excited is its handling of pop out windows and I am kind of surprised it's not been a problem for hazel/walnut. If you do any game development 2 monitors or preferably 3 are essential, seems like an extremely important feature to have correctly working pop out windows that behave correctly so that you can drag out windows and expand them to fit on second/third monitors.
@@user-sl6gn1ss8p I was using the docking branch, but as far as I could see there was no full screen/minimize/dock to windows desktop type functionality. I suppose it could be added with custom code though. While you can drag the window outside by default it seems to behave like a sort of floating window detached from its parent. I get that it probably behaves like that for cross compatibility reasons, but surely in the case of full screen and minimize that is fairly standard across OS's?
Looks like a helpful toolkit. Often, when an app does not use a standard title bar, they lose some edge cases like keyboard control for accessibility. Does this toolkit have most/all of the standard features? If so, are they redirecting to the OS's window management or implementing the same functionality? Thank you!
Is there "borderless window" mode for wallnut? Because I frequently see this in games (and use it) instead of fullscreen mode. Wouldn't it cause problems with resizing, when implementing custom resizing code? (17:20) I reckon it's not "maximized" (18:21), is it?
The term caption is used to describe the text that explains or describes some graphical element in the early UI world (its used by Win, Qt, Swing and Delphi for example..). Title or label only really came later. Thus, the "title" or "label" of a window is its caption. In use is also the term "window header" that directly comes from physical mail letters. This last one is kind of odd because "headers" are used for other messaging constructs and thus make little sense to describe a window. Caption also no longer makes a lot of sense as its very imprecise (html uses it to describe/explain an image, instead of title it), just search for its synonyms
I'm pretty interested in using Walnut to develop some desktop apps in the future. Please make some tutorials for it! :D Please support Linux soon, too. And will you support web/mobile platforms as well? Maybe with emscripten for the web?
God bless you, but I gave it (ImGui) a try this year and having to calculate rectangles just to be able to right-align a label to a textbox is not something I'm young enough to do anymore. Great videos, tho. Thanks for all your educational work.
We're making a cross-platform game that runs on Windows, macOS, Android and will run on iOS in the future. I decided not to use 3rd party framework for GUI but to create it by myselft since we did the same in my company. Right now I create everything in the code but later it will be written in external files on some markup language.
Working on creating an app atm and I have delved a bit into SFML language. Using VS 2022 x64. But... For as much C++ coding I think that I've learned and I know the more I realize... I am just at the beginning of what there is to learn and to know. Thank you for the great video, Sir Cherno !!
If the click and drag caption works as if it was the native caption bar, as a negative side effect it blocks incoming messages until you release the caption bar, easier to see the effect if you have something rendering in the client rect, down the road that can become a problem if its not addressed.
It sucks that with Dear ImGui accessibility kinda sucks, which I partially understand, since it's not meant to be used as a general purpose UI framework (and it's not an issue many programmers care about *sigh*). It's one of the reasons why I'm not using it in "normal" GUI programs outside of internal game engine tools.
Indeed, your best bet will always be to use established, open toolkits like Qt that won't hamper cross compatibility and accessibility. Using a small and light, niche toolkit may seem nice at first, but it will backfire in the long run if you are serious about your project. Don't start off your project with that kind of technical debt.
@@saeedbarari2207 That's complete bullshit. I've used Win98 and it didn't have that behavior, and CDE has existed since 1993 and gave a better desktop experience than Window, even compared to now.
Things like Im UI, and stuff that derives from it has one humongous flaw: accessibility. And I’m not talking about how widespread it is or how many systems it runs on. I’m talking accessibility in the disabilities sense of the word. There is no accessibility API’s for these libraries, which makes it impossible, if not extraordinarily difficult for developers to make their applications made in those framework accessible to anybody with disabilities
Additionally, some platforms, like iOS/macOS only seem to allow accessibility labels (for screen readers or other things) static, so I don't think it is easy to set the alt-labels at run time - meaning that just getting a mouse event and setting the label appropriately doesn't work.
With what technologies? Because if you use apples, native frameworks for iOS and macOS development, that simply doesn’t hold true. I know this because I work with them every day. They make making your apps accessible on Apple platforms extremely easy. And they give you much more stuff to work with than just accessibility labels.
"Imagine having a 3D game engine powering your little launcher"... Sounds familiar. Oh wait, thats what Epic Games did with their launcher... It's based on Unreal Engines UI...
@@topg3067Unfortunately this is not how it works. It is a cross platform library, but he edits a win32 backend of that library to achieve the result. Linux for example uses x11 or wayland backend.
Nice video! Have you considered using SDL2 instead of GLFW for the windowing? It has support for Vulkan and disabling decorations, and it's very cross platform, supporting almost anything. It also has a built in 2D renderer that is incredibly fast. If you want WebAssembly support, you could add an alternative backend that uses SDL2's renderer. SDL2 also has a font loader that can draw text into a texture.
you basically figured out how is built slate (the ui framework) that unreal engine uses to render its own custom controls and 'look and feel' implementing this using C# and WPF is kinda simplier because it already provides classes to custom the window and the controls but of course is limited only to windows with C++ it is needed to build an own renderer that overrides the default used in every OS
I totally want a simple desktop application to be developed using a game engine. it's not that a Webbrowser would be enough. I would've just used Qt because I don't need control over each pixel.
you're the best!!! with your videos im keep motivating myself to improve my programming skills in cpp and god it's so hard bad interesting, i want to make games with opengl and i'm watching your series about cpp and opengl, you're a great teacher!!!!
Hi Cherno, wanted to checkout your Walnut (no pun), but it seems your master branch is not, what I see in this video. Specifically, I was looking for the CustomTitleBar, but it's not implemented. Do you still maintain this (even locally)?
It is amazing how Flash was beyond it's years! I made a ton of animated text bar/windows with it. It only take feel seconds to create one vs days with C++ or any other language. Even today, I may use Flash to create the UI. Another benefit using Flash to create Custom Windows is that it load in 1 milliseconds. Nothing out there today can beat the speed of flash application. But Adobe kill flash because of greedy. My question is! Can Walnut help create animated Windows at any shape and form like Flash does?
I was thinking about making a UI with web tech like electron js and stuff but the problem is to render vulkan through it...without using web graphics API. I think cpp gets just harder for tasks that are much easier with higher level techs
I've done the same with a GLFW OpenGL window embedded in a transparent electron window. Not very efficient but an easy way to get native OpenGL with a web UI. I then use named pipes for IPC between the 2 processes. Another option would be to utilise CEF OSR with shared textures - probably less janky
@@CalebFaith that solution can be clever...until it comes to the Input requirements, i.e making the buttons in the main process of the electron app interact with the render behavior...i wonder node.js can allow these, but i don't know how
3D game engine powering a launcher or UI is way more efficient than an entire web browser powering a launcher or UI like we tend to get, sucking up like 8 cpu cores just sitting there idle (or in the background inside a game's engine, looking at you DotA2) until they fix "bugs" then it happens again inevitably xD
"omg we accidentally constantly open connections from our webapp and transfer data constantly, ooops~ totally unintended, we're definitely not snooping around your system and dumping that data to sell... Noooo.. it's just a bug, ooosie"
For almost all of my CS education all my programs were just CLI based and I never really understood what the purpose was if you didn't know any actual commands. So seeing this now is really cool
did you use c/c++ or was your class more java oriented? i know my first semester java class was entirely cli based but my second semester java class was entirely graphics based.
Does Walnut support per window dpi awareness? So for example a monitor with 100% dpi, and another with 250%, and the controls/text look the same size when you drag windows across monitors?
Oh my god.. I did used to have my launcher powered by my engine at one point. I also had the editor included or the entity and component list atleast and I was spamming it with objects for fun.
Hmm... I guess its like the complicated scaffolding is done already so that you can do the designing part. I'll try to implement some changes to use it on Linux as it seems interesting, partially because i really like imGUI
Remembering when I wrote custom title bar for my engine, It was completely nightmare, especially with Win32 NonClient area, and custom hit situation, to move and resize window, in your custom non client area.
I really like your comment about the possibility of your system. Everything is possible with most platforms, i am not an engineer or a programmer, i am also getting annoyed when someone (my developers) tell me something is not possible. Last time i did the part of the project that everyone was saying is not possible. Fortunately my best programmer pick up the project before i end up destroying our program with bad code (but my face recognition program was 100% working, but with badly structured code) I hope you become a billionaire or a least multimillionaire, because being a billionaire is a lot of troubles.
@@buddybrax You would be better off using GTK for the GUI. Then you could cross compile it for other operating systems rather than coding it directly for Windows.
@@anikethjana You can create a GUI in practically all programming languages. If you use a library like GTK, it can simply the process as well as make it easy to port the application to different operating systems.
@@dennisanderson8663 your comment is really useful , can you please guide me should i really learn software development using c ? I converted a code from python to C using AI, and it was lengthy enough for AI to give up. Please guide me with respect to current market , what should i do . My english is bad sorry for that
Haha, I'm crying 😂 I just love your content ❤ and it actually saved me with my work C++ project. I also watched your old imgui videos, and liked it, but unfortunately decided to go for qt (which I also dislike, but still seemed best choice für my demands)... And now you drop a new imgui video 😅
What's wrong with Qt? I actually like it very much :) Hard to learn and master but once you get used to it, it is worth it. It's fast and cross-platform for Desktop Apps.
Well I'll be damned, I just commented on a previous video about asking for this! :D Also the client area being "too big" is false, that's just Windows 11's fault.
0:43 Realm of the Mad God Exalt by Deca Games GmbH... They are using the Unity Engine to power their launcher that only works when the window is focused.
Is there a GUI editor for Tk (Similar to Python + Visual TK), that can generate a design file, that can then be referenced from C++? Qt Designer generates a UML file I tried GTK + Glade / Cambalache , but had difficulty installing GTK and building in Windows Visual Code. Would love to see a video on setting up and building a gui using Imgui, nanogui, or NAppGUI!
How do you get rid of the console window? I changed the system type in linker settings to windows but it throws a couple of errors about WinMain. You have a check for the pre-processor directive but i'm not sure that's all that's needed.
Does an app made with walnut runs on Windows server? Like regular VM with no graphics card? I have and serverside app that uses GDI, its a pain to work with for someone not very experienced like me.
If your server has a graphical user interface, it should have graphics drivers. Just make sure your graphics drivers support either the correct version of OpenGL or Vulkan (whichever Walnut uses) and you should be fine.
Ive learned basics of c++, looking to move forward with some ui. But i am losing my mind trying to find what to use and where to learn it from, qnd that doesnt cost me money.
Would you mind showing how imgui can be used with threads to not hang the UI on heavy tasks? Lets say i want to download multiple images and display them as they come in. I am working on embedded systems with custom toolchains and the threading library wants me to specifically close the thread from the main thread and hangs until it is actually closed. I have no clue what the hell i am doing, how to share data and close them without having a slideshow app
Hope you guys enjoyed the video! Check out Walnut here ► github.com/StudioCherno/Walnut
See NordPass Business in action now with a 3-month free trial here (use code thecherno) ► nordpass.com/thecherno
I am gooey😁
Why is the default title bar always white even when I am using the dark mode theme?
I use clion 99% of the time.. Wish you could also use it in some tutorials :)
Make a video on IMO gerrdy. Gerrdy in Many gimmes please make a video on this 😢😢😢
Thanks for sharing the code especially the custom titlebar part. A separate video about it is also welcomed :)
Definite yes to a whole video just cleaning up the main application file! Would love to see your thought process regarding that.
"Imagine having your game engine powering your launcher." - Meanwhile Epic Games Launcher running as a full Unreal Engine game
Wait, really?
@@CoolModderJaydonX yes it's a full engine build including DirectX, Crash Reporter etc. just for rendering a web view.
Wow that's why it is very slow on my laptop
@@Frame4245 Epic Games, was that necessary? I would have just used an app framework for C++ or C#.
the worst launcher in the world
NC prefix stands for something like "Non-Client". Some messages have a client and non-client version to differentiate between something happening in the client portion of the window (the app) and the non-client portion (titlebar, resize handles, etc.)
"Imagine having your game engine powering your launcher." - Godot be like 👀
unreal -> epic games store does that as well lmao
@@ZiplawDev the funniest part about that is that it's a custom build of ue4 that *only* renders a webview and nothing else.
I’ve been trying to figure out if this is something I should pursue. Godot for front end, Python for for backend. I don’t see why not.
@@Bobbyhiddnif you want a heavy dependency for the front-end and a slow back-end, sure, excellent choice.
@@scififan698 The epic game store is one of the most godawful user experiences in recent memory. Unbelievably slow and just doesn't load things half the time. Now it all makes sense
Can't do enough Walnut videos. Really helpful and useful.
23:59 The C23 standard now has a new #embed preprocessor directive to do this directly within the language so that you won't need a script to pre-compute that anymore. The compiler will do this for you :)
i havent seen it implemented anywhere, however. It's still C2x sadly.
So will this not be available in C++?
@@v01d_r34l1tyYes it will be available in C++ when C++23 standard come out
@@v01d_r34l1ty I guess it will be added into C++'s standards as well.
Even tho C++ natively supports C's standard, so you will be able to use it once it's added to C anyway
I can hardly wait. I still use mostly C for everything.
You are explaining the lessons like a real professor/teacher not like a programmer.
Thanks and I am self learning a lot from your contents ❤️
Instead of something like this we now get big corporations abusing JavaScript and creating bloatware that devours your ram and performs like S* just because they refuse to hire dedicated teams for cross-platform desktop. Great video as always.
fr man modern app guis get %15 idle on my cpu
getting a good looking UI in native C++ is an absolute nightmare, i don't blame them
@@Parritz it doesn't even need to be C++ (although in this case it mainly depends on the C++ Toolkit/Framework)
even JavaFX is considerably better
it has some pretty big advantages thou .. but I wish JS were cleaner and browser would be super-lean and super-fast modular technology 😢
I need Thanos glove for make it happen xD
@@jsonkody can you explain why javascript isnt cleaner?? whats extra!!
It's called caption cause in the win 9x days (especially 95 since there was absolutely zero "decoration" while 98 got a gradient woohoo) the caption was the titlebar text. There was no other container than this as the controlbox was drawn on top of the "titlebar". So caption was essentially "the titlebar".
My god this bring back memories, my first public github repo was a little wrapper for WPF bundling a theme I liked and adding primary colour variants and a custom window element using it. Bring me a lot of nostalgia!
yesss
😍
I love these kinds of videos and hope you will keep making more!
This is awesome. As a control/system engineer i know my C/C++, but i was never happy with the effort/reward of desktop app tools in C/C++. Walnut might be the tool to let me do my engineer stuff without focusing too much on the application stuff.
If you want to beef up your example with some sort of file format, save & load, do something, plot something that would be highly appreciated. Maybe a small tooling software that helps you with your game engine or fits nicely along side the engine.
I'd love a video on how the compiler and other components work to actually package and ship the game itself. How is the exe built? How are the assets "cooked and packaged"?
Glad to see that linux support is on the table. Would love to see this go cross platform
Dear friend.
Visit youtube channel "Solve My Programming Task".
They create simple programs for free. I used it. I am a student.
linux users will eat him for those windows
that image decoding stuff looks interesting looking forward to that vid
I love how every application decides that their titlebar is the best and I'm the one who ends up with an inconsistent ui 🙄
yeah, I'm not a fan of this. back before we had ui standards, every app had a different l&f. I despise that and do not want a return to it.
Something which made me steer away from imgui despite being initially excited is its handling of pop out windows and I am kind of surprised it's not been a problem for hazel/walnut. If you do any game development 2 monitors or preferably 3 are essential, seems like an extremely important feature to have correctly working pop out windows that behave correctly so that you can drag out windows and expand them to fit on second/third monitors.
I've started using imGui recently - could you elaborate on where you're having problems? And are you using the docking branch?
@@user-sl6gn1ss8p I was using the docking branch, but as far as I could see there was no full screen/minimize/dock to windows desktop type functionality. I suppose it could be added with custom code though. While you can drag the window outside by default it seems to behave like a sort of floating window detached from its parent. I get that it probably behaves like that for cross compatibility reasons, but surely in the case of full screen and minimize that is fairly standard across OS's?
Looks like a helpful toolkit. Often, when an app does not use a standard title bar, they lose some edge cases like keyboard control for accessibility. Does this toolkit have most/all of the standard features? If so, are they redirecting to the OS's window management or implementing the same functionality? Thank you!
I’m always being struggling with organising my application so started with building an application to organise my applications😂😅
Hazel AND Walnut! This guy's nuts.
I bet something called Peanut is in the making :D
@@showmeyourcritz321 Has Cache-w been taken?
Is there "borderless window" mode for wallnut? Because I frequently see this in games (and use it) instead of fullscreen mode.
Wouldn't it cause problems with resizing, when implementing custom resizing code? (17:20)
I reckon it's not "maximized" (18:21), is it?
The term caption is used to describe the text that explains or describes some graphical element in the early UI world (its used by Win, Qt, Swing and Delphi for example..). Title or label only really came later. Thus, the "title" or "label" of a window is its caption. In use is also the term "window header" that directly comes from physical mail letters. This last one is kind of odd because "headers" are used for other messaging constructs and thus make little sense to describe a window. Caption also no longer makes a lot of sense as its very imprecise (html uses it to describe/explain an image, instead of title it), just search for its synonyms
I'm pretty interested in using Walnut to develop some desktop apps in the future. Please make some tutorials for it! :D
Please support Linux soon, too.
And will you support web/mobile platforms as well? Maybe with emscripten for the web?
I would appreciate Linux support as well!
0:43 looking at you, Epic 👀
please just use native window title bars... apps that don't just look off with the rest of the desktop and they also are often just weird on linux.
And they don't respect any of the titlebar settings you have going on, which just sucks.
God bless you, but I gave it (ImGui) a try this year and having to calculate rectangles just to be able to right-align a label to a textbox is not something I'm young enough to do anymore. Great videos, tho. Thanks for all your educational work.
Now i'm wondering how you put the native titlebar buttons in there like firefox does
Nice it looks promising ! Can we create transparent topmost and click through app to create an overlay over fullscreen games ?
"Imagine having your gaming engine powering your launcher."
I've seen a lot more deranged people powering their apps with web browsers.
that would be shocking
@@a_soulsparkHaha! Because it’s Electron ⚡️🥴
Thank you for this generosity sharing the code! 😍
We're making a cross-platform game that runs on Windows, macOS, Android and will run on iOS in the future. I decided not to use 3rd party framework for GUI but to create it by myselft since we did the same in my company. Right now I create everything in the code but later it will be written in external files on some markup language.
Working on creating an app atm and I have delved a bit into SFML language. Using VS 2022 x64. But...
For as much C++ coding I think that I've learned and I know the more I realize... I am just at the beginning of what there is to learn and to know.
Thank you for the great video, Sir Cherno !!
If the click and drag caption works as if it was the native caption bar, as a negative side effect it blocks incoming messages until you release the caption bar, easier to see the effect if you have something rendering in the client rect, down the road that can become a problem if its not addressed.
It sucks that with Dear ImGui accessibility kinda sucks, which I partially understand, since it's not meant to be used as a general purpose UI framework (and it's not an issue many programmers care about *sigh*). It's one of the reasons why I'm not using it in "normal" GUI programs outside of internal game engine tools.
Indeed, your best bet will always be to use established, open toolkits like Qt that won't hamper cross compatibility and accessibility. Using a small and light, niche toolkit may seem nice at first, but it will backfire in the long run if you are serious about your project. Don't start off your project with that kind of technical debt.
Excellent work! I would love to see it on Linux!
Cherno in every video : We'll probably make another video on this or that😂
you can use windows' built-in magnifier (win/+ & win/-) to zoom in and out
Does Windows finally have that behavior? I've had it on Linux for decades.
@@anon_y_mousse it was there from 1995. when Linux didn't even have proper desktop support
@@saeedbarari2207 That's complete bullshit. I've used Win98 and it didn't have that behavior, and CDE has existed since 1993 and gave a better desktop experience than Window, even compared to now.
Thank for thinking on the Linux support. This week my younger brother was asking for tips on creating GUI apps wit C++ on Linux
Im weeks new to C++ so a Walnut tutorial series would be highly appreciated!
wait a sec why does my c++ projects look like terminal window whereas this dude's looks like an actual application??
Things like Im UI, and stuff that derives from it has one humongous flaw: accessibility. And I’m not talking about how widespread it is or how many systems it runs on. I’m talking accessibility in the disabilities sense of the word. There is no accessibility API’s for these libraries, which makes it impossible, if not extraordinarily difficult for developers to make their applications made in those framework accessible to anybody with disabilities
Additionally, some platforms, like iOS/macOS only seem to allow accessibility labels (for screen readers or other things) static, so I don't think it is easy to set the alt-labels at run time - meaning that just getting a mouse event and setting the label appropriately doesn't work.
Oh - and there are laws requiring accessibility. So if making a real application, in the US for example, there are rules in ADA.
With what technologies? Because if you use apples, native frameworks for iOS and macOS development, that simply doesn’t hold true. I know this because I work with them every day. They make making your apps accessible on Apple platforms extremely easy. And they give you much more stuff to work with than just accessibility labels.
@@JRDev4All I'm agreeing with what you said.
Sounds like a good project, if any young open source developer is willing to take on the task of making a accessibility library for im gui...
I would like to see more and more about Walnut, whole series how to make nice looking application be even better.. :)
Did you make the headless Wallnut video?
Love to see more about the Python PNG file to array thing
"Imagine having a 3D game engine powering your little launcher"... Sounds familiar. Oh wait, thats what Epic Games did with their launcher... It's based on Unreal Engines UI...
This is nice, but this is Win32 only, what about other OS?
He uses glwf, which is cross platform.
@@topg3067Unfortunately this is not how it works. It is a cross platform library, but he edits a win32 backend of that library to achieve the result. Linux for example uses x11 or wayland backend.
Nice video! Have you considered using SDL2 instead of GLFW for the windowing? It has support for Vulkan and disabling decorations, and it's very cross platform, supporting almost anything. It also has a built in 2D renderer that is incredibly fast. If you want WebAssembly support, you could add an alternative backend that uses SDL2's renderer. SDL2 also has a font loader that can draw text into a texture.
its dummy thick though[
I am a Microsoft NAV/BC developer but its still mesmerizing watching you talk about anything programming related *glaze*
you basically figured out how is built slate (the ui framework) that unreal engine uses to render its own custom controls and 'look and feel'
implementing this using C# and WPF is kinda simplier because it already provides classes to custom the window and the controls but of course is limited only to windows
with C++ it is needed to build an own renderer that overrides the default used in every OS
Walnut looks so much better than the stuff Windows provides. I really like the dark theme.
I totally want a simple desktop application to be developed using a game engine.
it's not that a Webbrowser would be enough.
I would've just used Qt because I don't need control over each pixel.
you're the best!!! with your videos im keep motivating myself to improve my programming skills in cpp and god it's so hard bad interesting, i want to make games with opengl and i'm watching your series about cpp and opengl, you're a great teacher!!!!
our boy is getting CHUNKY
Lower level win32/64 programming will do that to you
Hi Cherno, wanted to checkout your Walnut (no pun), but it seems your master branch is not, what I see in this video. Specifically, I was looking for the CustomTitleBar, but it's not implemented. Do you still maintain this (even locally)?
It is amazing how Flash was beyond it's years! I made a ton of animated text bar/windows with it. It only take feel seconds to create one vs days with C++ or any other language. Even today, I may use Flash to create the UI. Another benefit using Flash to create Custom Windows is that it load in 1 milliseconds. Nothing out there today can beat the speed of flash application. But Adobe kill flash because of greedy. My question is! Can Walnut help create animated Windows at any shape and form like Flash does?
This takes me back to the WinAmp days which uses C++ and draws a bitmap theme in the NC area callbacks. That was being down i the late 90s
I was thinking about making a UI with web tech like electron js and stuff but the problem is to render vulkan through it...without using web graphics API. I think cpp gets just harder for tasks that are much easier with higher level techs
I've done the same with a GLFW OpenGL window embedded in a transparent electron window. Not very efficient but an easy way to get native OpenGL with a web UI. I then use named pipes for IPC between the 2 processes.
Another option would be to utilise CEF OSR with shared textures - probably less janky
@@CalebFaith that solution can be clever...until it comes to the Input requirements, i.e making the buttons in the main process of the electron app interact with the render behavior...i wonder node.js can allow these, but i don't know how
@@ChrisKoyo yes, I have had to send keystrokes etc. to the GL window via IPC
@@CalebFaith oh okay. So you just used named pipes or others methods too? I wonder if signals could fit too
3D game engine powering a launcher or UI is way more efficient than an entire web browser powering a launcher or UI like we tend to get, sucking up like 8 cpu cores just sitting there idle (or in the background inside a game's engine, looking at you DotA2) until they fix "bugs" then it happens again inevitably xD
"omg we accidentally constantly open connections from our webapp and transfer data constantly, ooops~ totally unintended, we're definitely not snooping around your system and dumping that data to sell... Noooo.. it's just a bug, ooosie"
For almost all of my CS education all my programs were just CLI based and I never really understood what the purpose was if you didn't know any actual commands. So seeing this now is really cool
did you use c/c++ or was your class more java oriented? i know my first semester java class was entirely cli based but my second semester java class was entirely graphics based.
@@v01d_r34l1ty I used C++
Usually you can type in the Help command or man pages to find out the commands and how to use them. They should be documented somewhere
This is amazing!
On the same topic, what are your thoughts on frameworks like Qt?
How often is the screen refreshed in walnut?
Does Walnut support per window dpi awareness? So for example a monitor with 100% dpi, and another with 250%, and the controls/text look the same size when you drag windows across monitors?
Oh my god.. I did used to have my launcher powered by my engine at one point. I also had the editor included or the entity and component list atleast and I was spamming it with objects for fun.
"Super Graphicssy Compatible" -Cherno, 2023
😂
Very cool, i'll have to poke around with it!
Electron and Tauri I think they are cool too and equivalent right ?
Hmm... I guess its like the complicated scaffolding is done already so that you can do the designing part.
I'll try to implement some changes to use it on Linux as it seems interesting, partially because i really like imGUI
Remembering when I wrote custom title bar for my engine, It was completely nightmare, especially with Win32 NonClient area, and custom hit situation, to move and resize window, in your custom non client area.
Great job! I would like to see cross platform version of Walnut.
That’s why I like flutter! Every pixel ❤️🎨
I really like your comment about the possibility of your system. Everything is possible with most platforms, i am not an engineer or a programmer, i am also getting annoyed when someone (my developers) tell me something is not possible. Last time i did the part of the project that everyone was saying is not possible. Fortunately my best programmer pick up the project before i end up destroying our program with bad code (but my face recognition program was 100% working, but with badly structured code) I hope you become a billionaire or a least multimillionaire, because being a billionaire is a lot of troubles.
how do you design your own buttons and interactivity (animated elements)? is that using illustrator or SVG code? Or do you write it all in C++?
i wonder it too😊
The amount of work needed to make a Windows app in C++ is insanity.
Welcome to unmanaged.
Decompile some C# forms to see the native code
Can we create application using C ? Just a beginner here 😅
@@buddybrax You would be better off using GTK for the GUI. Then you could cross compile it for other operating systems rather than coding it directly for Windows.
@@anikethjana You can create a GUI in practically all programming languages. If you use a library like GTK, it can simply the process as well as make it easy to port the application to different operating systems.
@@dennisanderson8663 your comment is really useful , can you please guide me should i really learn software development using c ? I converted a code from python to C using AI, and it was lengthy enough for AI to give up. Please guide me with respect to current market , what should i do .
My english is bad sorry for that
Haha, I'm crying 😂 I just love your content ❤ and it actually saved me with my work C++ project.
I also watched your old imgui videos, and liked it, but unfortunately decided to go for qt (which I also dislike, but still seemed best choice für my demands)... And now you drop a new imgui video 😅
What's wrong with Qt? I actually like it very much :)
Hard to learn and master but once you get used to it, it is worth it. It's fast and cross-platform for Desktop Apps.
Its looking good. Keep up the good work.
Yes more Walnut please 🙏🙏
Great video and a great project hope to see more of it
Wow, all of that was so cool.
the links you "add" in the corners don't show up -- I wonder if it's related to ad blockers...?
Nice tips for programming
Man you make my way easy thx 😊
Well I'll be damned, I just commented on a previous video about asking for this! :D
Also the client area being "too big" is false, that's just Windows 11's fault.
What about QT ? Why you never talk about it ?
Perhaps because it is horrible on Windows? It's a nightmare to use and gui's look non standard. They just don't look right.
@@toby9999 I'm using it daily and that's definitly not true
love your videos man!!! can you show us how to made your icon in to the embed please
Btw, ask one of those openai apps to generate a nice logo for your framework.
Who is this Jay, and where I can follow his work ?
I think you can inspire a solution from this
in WPF to remove that white border
set Glassframethickness CornerRadius and CaptionHeight to 0
Hi Cherno, you are amazing 🤍🤍
I want to study OpenGL, but I'm on Linux and I can't find references for this. What are your recommendations for me?
On Linux you'll have to start with Xlib if you want to go low level and draw on the non-client areas
Awesome rundown of Walnut, hope linux comes soon!
But again, its immediate mode, why not retained mode?
0:43 Realm of the Mad God Exalt by Deca Games GmbH... They are using the Unity Engine to power their launcher that only works when the window is focused.
Is there a GUI editor for Tk (Similar to Python + Visual TK), that can generate a design file, that can then be referenced from C++? Qt Designer generates a UML file
I tried GTK + Glade / Cambalache , but had difficulty installing GTK and building in Windows Visual Code.
Would love to see a video on setting up and building a gui using Imgui, nanogui, or NAppGUI!
Obviously not :(
Him:
"Normal application stuff, how exciting 😐"
Me after seeing that we can take windows outside the main app window:
"YO HEY, WHAT???"
How do you get rid of the console window? I changed the system type in linker settings to windows but it throws a couple of errors about WinMain. You have a check for the pre-processor directive but i'm not sure that's all that's needed.
I figured it out. You have to also be on Dist build
is it possible to use libVLC c++ with walnut?
Does an app made with walnut runs on Windows server? Like regular VM with no graphics card? I have and serverside app that uses GDI, its a pain to work with for someone not very experienced like me.
If your server has a graphical user interface, it should have graphics drivers. Just make sure your graphics drivers support either the correct version of OpenGL or Vulkan (whichever Walnut uses) and you should be fine.
Ive learned basics of c++, looking to move forward with some ui. But i am losing my mind trying to find what to use and where to learn it from, qnd that doesnt cost me money.
Would you mind showing how imgui can be used with threads to not hang the UI on heavy tasks? Lets say i want to download multiple images and display them as they come in.
I am working on embedded systems with custom toolchains and the threading library wants me to specifically close the thread from the main thread and hangs until it is actually closed. I have no clue what the hell i am doing, how to share data and close them without having a slideshow app
just create new thread
@@GameskoTV you are so funny. at least read more than the first sentence
i am getting an error that i couldn't get the clone for error Failed to clone 'vendor/imgui'. Retry scheduled please u need a reply