Пікірлер
@sebastianavena
@sebastianavena Сағат бұрын
Your videos came as an angel for me after YEARS of struggling with UMG... I was always solving UI as fast as possible to continue with other areas more gameplay related... Thank you so much for sharing the files, you earned a sub and you will be the first person I do Patreon!
@karlbovski1656
@karlbovski1656 6 сағат бұрын
Hey, thank you for the video!! Since the docs about UMG Viewmodel explain the concepts (which are simple to understand), the implementation can be tricky. Your video gave me a lot of information but also a lot of questions (for example how to handle Data Assets widgets). Would you be so kind as to make a short video with a step-by-step tutorial on implementation? Thanks again✌
@JumpCatStudio102
@JumpCatStudio102 6 күн бұрын
what is the tool to take note at 11:46 ?
@combycat
@combycat 7 күн бұрын
In this system would it be possible to make a thing such as an inventory system that has little item slots that could be dragged into other things?
@AmrMakesGames
@AmrMakesGames 6 күн бұрын
Yes, you can do draggable widgets like you'd do in other systems. But this is not included in the system out of the box currently
@codymccarty9327
@codymccarty9327 17 күн бұрын
at 17:25 there are some stats on the screen. How did you do that? I tried a few stat commands like stat UI, stat Slate, RHI, SceneRendering, GPU, but they don't look like that. I also tried googling, but couldn't find anything. Any help? Thanks!!
@AmrMakesGames
@AmrMakesGames 17 күн бұрын
Sorry, I should've pointed that out. It's stat DrawCount
@nreenvoice5448
@nreenvoice5448 19 күн бұрын
Very useful!
@sherifhany386
@sherifhany386 21 күн бұрын
What a great tool
@LearnAWSCloud
@LearnAWSCloud 22 күн бұрын
Hi, how does this system do the ordering of the layers? You mention a pop-up can hide the other layers from the viewport, how did that happen? I suppose you could take the Tops of the other layers and hide them.
@AmrMakesGames
@AmrMakesGames 21 күн бұрын
hi there and good question, The primary layout widget handles that, it is simply an overlay and the layers are ordered inside it. And you're correct, that's one way to hide other layers, we can either hide the top of the layer, or hide the layer itself. The system in the video is simple, and needs more utility functions like hiding other layers, handling fading in and out, etc., but it's a good starting point to build upon.
@LearnAWSCloud
@LearnAWSCloud 20 күн бұрын
@@AmrMakesGames Got it, okay thanks
@sherifhany386
@sherifhany386 22 күн бұрын
Greetings from Egypt
@AmrMakesGames
@AmrMakesGames 22 күн бұрын
يا مرحب بابن بلدي يا مرحب
@sherifhany386
@sherifhany386 22 күн бұрын
Just as i discover your channel you post, this is a good day, I love your content and I'm looking forward to watch more of your high quality content <3
@AmrMakesGames
@AmrMakesGames 22 күн бұрын
Welcome abroad, Sherif, and I'm glad you love my content!
@biiggtr
@biiggtr 22 күн бұрын
جامد جدا وسلاسة الشرح جميلة جدا
@AmrMakesGames
@AmrMakesGames 22 күн бұрын
طالما سلاسة الشرح جميلة يبقى انا اتعلمت من الفرجة على فيديوهاتك الجميلة يا زياد 🙏
@biiggtr
@biiggtr 22 күн бұрын
@@AmrMakesGames يعم متقولش كدة دة احنا نتعلم منك يا استاذ عمرو
@txu2011
@txu2011 25 күн бұрын
Is there a difference between a Viewmodel and a singleton? The reason why I ask is because the core idea of they can only have one sounds similar
@AmrMakesGames
@AmrMakesGames 22 күн бұрын
Sorry for the confusion, a viewmodel can be created in multiple instances and doesn’t need to be one only. The example we discussed at 06:00 is just for consistency and performance because they all read the same source of data. On the other hand, a singleton would be something like the MVVM subsystem, which is a single global instance.
@txu2011
@txu2011 22 күн бұрын
@@AmrMakesGames Do all instance still refer to the same variable?
@AmrMakesGames
@AmrMakesGames 21 күн бұрын
In that example, yes
@MystMagie
@MystMagie 25 күн бұрын
Amazing system! Managed to implement it in my projec. However, I can't figure out how to plug an item pickup widget with this system. The item pickup notification widget is a modal, but it gets added to the gamescreen widget, inside a vertical box, via a function that also passes the item data (name, quantity etc). How to use your system in that scenario?
@AmrMakesGames
@AmrMakesGames 21 күн бұрын
One thing you could do since only one widget can be visible in a layer at a time, is to push the item pickup modal to the Modal layer, since it is a modal. Then, in your game screen where you have a vertical box of items or the inventory, your pick up modal will communicate with inventory widget to add an entry, and then you pop it from its Modal layer. please let me know if something is not clear
@txu2011
@txu2011 27 күн бұрын
What was your intent to have both C++ VM_health and a VM_health blue print? Are they connected? Or are you just showing how to do both?
@txu2011
@txu2011 27 күн бұрын
In general, I think there is a gap between the project and some understanding how this works. I might look up more viewmodel examples to help understand this.
@AmrMakesGames
@AmrMakesGames 26 күн бұрын
Yes, mainly showing both ways, and looking into how MVVM works in general can help you understand it even better. But if you've any questions, please don't hesitate to ask.
@LearnAWSCloud
@LearnAWSCloud Ай бұрын
thanks
@codymccarty9327
@codymccarty9327 Ай бұрын
This is top-notch quality stuff. Keep it up! 5:16 stack trace on warning. and break on exception right after 8:05 rename exec functions Something I've found useful is FAutoConsoleCommand. exec functions can't be called from any class, but cvar callbacks can. Here's two examples in an Actor Component that goes on a player controller: static FAutoConsoleCommandWithWorld DebugSandActorComp(TEXT("Sand.Debug.ActorComp"), TEXT("Debugs the clicked Actor's SandActorComp"), FConsoleCommandWithWorldDelegate::CreateStatic(&USand_PControllerComp::RunDebugSandActorComp)); static FAutoConsoleCommandWithWorld DebugSandJoinPlayerFaction(TEXT("Sand.Debug.JoinPlayerFaction"), TEXT("The clicked Pawn will join the Player's Faction"), FConsoleCommandWithWorldDelegate::CreateStatic(&USand_PControllerComp::RunDebugSandJoinPlayerFaction), ECVF_Cheat);
@drumandbassob0007
@drumandbassob0007 Ай бұрын
great talk , this should help me convert lyra to first person i dont know why epic made this very big deep sample but made it really hard to add first person
@AmrMakesGames
@AmrMakesGames Ай бұрын
Yes, it is complex to a high degree, but if we compose down to its components and explore the different llugins and features it uses individually, you'll find how flexible it is. For first person, if you haven't figured it out already, simply understanding how camera modes work in Lyra should make it a little simple for you
@drumandbassob0007
@drumandbassob0007 Ай бұрын
@@AmrMakesGames yer its a complex system i have first person working now with arms and hidden TP mesh but think i might have to make my own weapon system as lyra has hard refs to all the weapons instead of soft refs and also every time you change weapon it destroys it and respawns it which is a really bad way to do it , it might be alright for single player but for multiplayer its not very good
@txu2011
@txu2011 Ай бұрын
I checked out your project and I see that the health amount is data binded to the viewmodel. Is it optimized because the view model won’t fire every frame but only when the view model is called?
@AmrMakesGames
@AmrMakesGames Ай бұрын
Exaclty. It is similar to using event dispatchers, but with an extra advantage that UI won't be coupled to the source of the data, and only to the view model.
@disowneddog7890
@disowneddog7890 Ай бұрын
TYSM! The frontend in Unreal is really killing me!
@txu2011
@txu2011 Ай бұрын
Another question, when I try to implement the same system with pause screen to my game, I use the same setup but the pause screen won't allow me to have keyboard inputs anymore, why is that?
@txu2011
@txu2011 Ай бұрын
ahhh, I just found out to make a key actionable during pause, I need to enable "Trigger When Paused" on the action. Mind blown
@fahimjaowad8717
@fahimjaowad8717 Ай бұрын
Thank you so much Amar. I had a question, what if I wanted to have two widgets of the same tag in a layer. Is it possible via your system?
@AmrMakesGames
@AmrMakesGames Ай бұрын
You're welcome Fahim. Possible yes, but may I know what you're trying to do so I can give you a more detailed answer? Currently each layer has a unique tag, this is the idea of using gameplay tags. And each layer can have one Widget active a time, since a layer is a stack of widgets. You can add more layers with more tags, and these layers are all shown simultaneously, but it's rare that you would need many of those. If you need two widgets to show in the same layer, then simply one widget should contain both of them and be pushed to the layer's stack.
@fahimjaowad8717
@fahimjaowad8717 Ай бұрын
@@AmrMakesGames thanks! Makes sense. Just like you merged the weapons and health UI.
@txu2011
@txu2011 Ай бұрын
Hi, what does "FocusGame" and "FocusModal" do on your main player controller? They look important however I don't understand the intent of them. Anything I should read more about to understand them better? Thanks
@AmrMakesGames
@AmrMakesGames Ай бұрын
Hi there, they're a very simple handling for UI Input focus. Focus Modal makes UI consume input and blocks it from passing to the Game. So, if you have a pause menu open for example, pressing WASD would move through the menu instead of moving the player. Focus Game does the opposite and allows input to pass to the game. This is a very simple implementation though; some work is required by widgets to specify what element should get focus. I recommend you take a look at How Slate handles input routing.
@txu2011
@txu2011 Ай бұрын
Will do!
@txu2011
@txu2011 Ай бұрын
⁠@@AmrMakesGamesI see that you use common user widget in the example project, would you switch to common activiatable objects instead to achieve what you said?
@AmrMakesGames
@AmrMakesGames Ай бұрын
@@txu2011 definitely would do, along with other common ui features. This example was meant to be simple and avoid the overhead of common ui.
@RobertBrown-u2x
@RobertBrown-u2x Ай бұрын
9519 Meagan Locks
@fahimjaowad8717
@fahimjaowad8717 Ай бұрын
A video on the subsystems workflow you mentioned here would be a godsend. Please do one if you have time.
@AmrMakesGames
@AmrMakesGames Ай бұрын
Will plan a more thorough video with a more sophisticated system that manage pop-up requests and UI input soon hopefully!
@ZakariaAlMoktar
@ZakariaAlMoktar Ай бұрын
فيديو اسطووووووووووووووووووري شكرا مليار مرة 👑👑
@AmrMakesGames
@AmrMakesGames Ай бұрын
عفوا تسلملي 🙏
@biiggtr
@biiggtr 2 ай бұрын
جامد جدا يا معلم
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
تسلم يا غالي بنتعلم منك
@GoodguyGastly
@GoodguyGastly 2 ай бұрын
I hate that im just finding this now in my search for ui tuts in UE. But im thankful im here now 😢
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
Hope it was useful, and take your time in grasping each point
@gatOlegat
@gatOlegat 2 ай бұрын
Can you share the tool you used for debugging ui invalidation? 10:35
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
It was slate console variables, I guess I used: SlateDebugger.Invalidate.Enabled 1 SlateDebugger.Invalidate.Start
@gatOlegat
@gatOlegat 2 ай бұрын
@@AmrMakesGames perfect, thank a lot
@KINGDOMSONSTV
@KINGDOMSONSTV 2 ай бұрын
Very good vid. Thanks for sharing.
@TheGabmeisterX
@TheGabmeisterX 2 ай бұрын
One of the best videos that tackle this topic.
@ryanjdevlin87
@ryanjdevlin87 2 ай бұрын
Amazing video man such a great topic ! Please keep making UI videos also man I love ur panel manager is the core of my UMG based UI
@m7amdosama739
@m7amdosama739 2 ай бұрын
♥♥♥♥♥
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
حبيبي ❤️🙏
@revraitah
@revraitah 2 ай бұрын
Heya, may I have the discord link for Lyra Dev Net? Thanks!
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
Here you go: discord.com/invite/bxNVFxhV
@revraitah
@revraitah 2 ай бұрын
@@AmrMakesGames Thanks!!!
@Deculayn
@Deculayn 2 ай бұрын
@arrowsdev
@arrowsdev 2 ай бұрын
yes i would love to see your take on extending the reference viewer tool in unreal engine
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
Definitely, the upcoming video will touch it briefly, and I'll plan a more detailed one regarding it and dependencies in general soon!
@arrowsdev
@arrowsdev 2 ай бұрын
great topic and great video as usual
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
Thankful for your support as always bro!
@deogelacio3301
@deogelacio3301 2 ай бұрын
Sir, i am an author of a literal, educational and compitative game that I intend to ask a game developer to develop this into a mobile game. Pls contact me. Thanks. [email protected]
@9thCrusade
@9thCrusade 2 ай бұрын
is performance between interface abstract component contextsensitive ? i read somewhere that inhereting/interfaces is usually better for performance than component based systems
@AmrMakesGames
@AmrMakesGames 2 ай бұрын
Good question, yes they're very context sensitive as with anything related to performance. Inheritance can lead to larger object sizes since derived classes inherit all the properties and methods of their parent classes. Interfaces introduce a slight overhead due to the need for method lookup at runtime (similar to virtual function calls in inheritance). However, this overhead is generally minimal. Components add to the memory footprint since each component is typically an object attached to the main entity. However, this overhead can be minimized by designing lightweight components. But we can't say something is more performant than the other without the full context. For example, depending on how components are managed (e.g., using contiguous memory storage), they can be very cache-efficient, leading to better runtime performance, especially in entity-component-system (ECS) architectures.
@ryanjdevlin87
@ryanjdevlin87 2 ай бұрын
To add controller support is extremely easy thanks to the way you set this up ! Amazing job man ! This will be the base for my UI for sure ! This is so much easier to understand and honestly this 10 minute video explains the entire system better than the info out there for common UI lol. Thank you for this once again !
@ryanjdevlin87
@ryanjdevlin87 2 ай бұрын
Another thing I did to the system was add a always available widget array to the HUD and corresponding layer. This is for widgets like the settings menu and inventory screen we only want to collapse and show. Very well written and much respect for this man your a great programmer ! I would love to do a consulting session sometime about architecture etc. Have a great day man !
@lolaswift111
@lolaswift111 3 ай бұрын
hi does the project file contain a functional animal behavior demo project as shown in your video? Seems to be a horse or something. thanks.
@AmrMakesGames
@AmrMakesGames 3 ай бұрын
Hi, no, it is not functional, unfortunately, just for demonstration.
@thenetimp
@thenetimp 3 ай бұрын
Personally I'd put all the color values in a data asset, and then link the data asset to your custom UI widgets, and link the color values in the DataAsset to the UI widgets, this gives you some flexibility to swap out colors quickly and easily to see the contrast between them just by creating a new data asset. Also, your reference to Unity Scriptable Objects. Which is basically a Unreal Engine DataAssets I am not familiar with UMG, so I can't speak as to how DAs could work with them as well.
@AmrMakesGames
@AmrMakesGames 3 ай бұрын
Definitely, DAs are a great option for styling and theming. This is kinda similar to common UI's style objects like UCommonButtonStyle.
@FPChris
@FPChris 3 ай бұрын
Bug. The lock icon does not lock the canvas
@ryandavis7506
@ryandavis7506 3 ай бұрын
Awesome video - just starting out and this video is exactly what I was looking for. Thank you for sharing!
@Carkoon
@Carkoon 3 ай бұрын
Do you know if there's a way to also have this functionality in the Rig Graph? I activated the option but it's not available there.
@AmrMakesGames
@AmrMakesGames 3 ай бұрын
Thank you for pointing it out, I wasn't aware of that, and I believe you can send an issue to Epic. Meanwhile, the only way I know of is to dig into how this context menu button is implemented in the engine code and modify it that it shows on the rig graph.
@Carkoon
@Carkoon 3 ай бұрын
@@AmrMakesGames I'l look into reporting it to Epic (I'm not knowledgable enough with C++ and the Unreal source code to do any real investigating^^).
@Horizontff
@Horizontff 3 ай бұрын
Puedes hacer una guía sobre optimizar menús,interfaces???
@AmrMakesGames
@AmrMakesGames 3 ай бұрын
Hopefully, will make more UI guides soon
@Ayon-5571
@Ayon-5571 3 ай бұрын
Thanks bro
@عععع-د3ب
@عععع-د3ب 3 ай бұрын
I hope you make a lesson on the subject of the currency system. I'm working on a game like Subway, but the money that the player collects must be used to buy things. The problem is that I searched KZbin and didn't find a lesson on this subject, nor a project that was stopped because of this. I mean, if the player collects a coin, he must buy something like characters or something else, but there is no explanation...❤❤😢😢
@AmrMakesGames
@AmrMakesGames 3 ай бұрын
Will consider this one, but in the meantime, and since I'm not experienced with such a system, I believe you'll find many answers if you post on Unreal's dev community or discord servers.
@عععع-د3ب
@عععع-د3ب 3 ай бұрын
@@AmrMakesGames Thanks
@fluffbunn4175
@fluffbunn4175 3 ай бұрын
This is exactly what I needed, thank you !
@Bloodyteo
@Bloodyteo 3 ай бұрын
Moises is that you?
@TorQueMoD
@TorQueMoD 3 ай бұрын
This is a great video. Very simple approach to figuring out what sort of system to use.