3:50 Why would you like to add a Component and a Interface to one and the same Class? It's actually possible to adress a Component's function of a Class using "get Component". Why do you add an Interface as a middlemann in between the communication between a Component and a Entity/Parent Class?
@petar46216 күн бұрын
The interface is an extra step if you want to avoid coupling and it can be a bit easier to call a function, since you only need get_game_mode. There is also an argument about exposing only necessary functions this way. This was an example of a very specific way to create singleton, but most of the small/medium games do not require abstractions like this. In my videos I like to show random and interesting ways that you can do something, so I wouldn't use any particular example as a gospel or THE way to do something, more like just another way.
@user-rg7ux5hn5t6 күн бұрын
@@petar4621 Could u check the following use-case please? Actor A is my Player Controller Actor B is a Sword [Interact -> Take] Actor C is a Pen [Interact -> Take] Actor D is a Door [Interact -> Open/Close] You would use a Interact_Pickable Component for B and C, but not D. While Implementing Intractable Interface to B C and D. In Case of B and C you would call the Component functions from the Interface-Implementation. While on D you would call the Actors Native Implementation from the Interface-Implementation. This is actually the one and only way I could now image an use of both abstractions. Though, using Abstract Classes would be more preferable from my side of view - especially for this case.
@petar46216 күн бұрын
@@user-rg7ux5hn5t There are many ways to set up interactions, but in this case it seems like an interactable component is an overkill. Why not just have interface and interact function? Another way might be to use some sort of inheritance if that is something you prefer, like a interactable base class. You can also have just one class for all interactable items that stores data about the item and a component in player controller(eg. interact component) that gets the data when interacted with and figures out what type of interaction it is. Usually you would have limited types of interactions in a game(pickup, play animation like opening doors, interact with NPC,...) The main reason for the interface and component in the video was just convenience and decoupling if needed, but in this case it seems like it would just overcomplicate it.
@user-rg7ux5hn5t6 күн бұрын
@@petar4621 What would you tell me to the following configuration: It's very interesting, as I am searching for a way to shrink the amount of code I have to write. I do have about 10 Items, those all inherit from actors, that are not intractable. All 10 Items do not relate to each other. I also do have an Interaction Component, that has toggle-able availability of interactions (Pickup, Rotate, Scale, Colorize, Default Interaction etc.) So not all interactions are available to all items, but some might be. I do have all the common interactions implemented in the component, and everything that is not commonly used, is triggered by delegates on the items individually. I guess, if I use one Intractable Interface, I would be forced to implement every kind of interaction, that has to be available for each item individually, what would result in a copy-paste, or a library as a dependency. ' That library dependency would break the whole decoupling, in the same way components do it already now - wouldn't it?
@metedev14 күн бұрын
Pretty good content bud, cheers!
@Felik1814 күн бұрын
so does that mean that I should always explicitly specify that it's passed by-ref for meaty struts (such as FHitResult)?
@polysiens14 күн бұрын
I haven't tested the performance impact of duplicating variables, but usually you want pass by ref. Just keep in mind that changing that reference is changing the original variable.
@MaTTGameShow16 күн бұрын
Finally someone that knows what hes talking about!
@everything-bagel18 күн бұрын
Have you worked more with Mover in recent months, if so any thoughts?
@polysiens18 күн бұрын
I have and its good, I am just waiting for it to become more user friendly and to be fully exposed to blueprints. It is more versetile than CMC and has better replication, but it is also way harder to use, since right now you have to create every movement mode from scratch(you have to do all of the input offsets, physics, solve issues like wall sliding, step up,...).
@everything-bagel18 күн бұрын
@ ey I didn’t realize it was that raw still where you have to solve physics and sliding issues. I’m developing an arena shooter like Quake but more intense movement. Do you think I should go the route of customizing the CMC, try Mover, or maybe spend on the GMCv2 plugin? I made basic gameplay with GAS but am not sure if I should pivot to something else for advanced movement features 🤔
@petar462118 күн бұрын
@@everything-bagel For quake type game, CMC is probably fine. CMC mainly starts breaking when you need more physics based character, or when you have to add a lot of custom solutions on top of it. Mover is great in concept, and they are providing some functions to help with different components of how a character works, but it is more like legos, where you have all of these small pieces and you need to slot them together. CMC is more monolithic, but solves a lot of those smaller things by default, but extension or modification of CMC can give you issues. Not sure for GMCv2 though, never tried it.
@everything-bagel18 күн бұрын
@@petar4621 Thanks for the response. The game isn't planned to be physics based, however I do want several movement abilities that are outside the default CMC: air dashing, wall running/jumping, flying (like in the game Spellbreak), drop-stomping out of the air (like in Ultrakill), sliding. It is the issues with modifying the CMC that you described that is giving me pause at the moment. I'm a software engineer but I can imagine it can be a large task to implement custom movement if I have to account for a lot extraneous networking issues. I was hoping Mover might make things easier but it sound like it is not there yet? Perhaps I just need to work deeper on CMC and see my own limitations in developing what I want.
@petar462118 күн бұрын
@@everything-bagel Mover is in early stages, so its probably a good idea to wait for 5.6 and see if it is viable then 👍
@JoeHendersonOfficial23 күн бұрын
I’ve been coding blueprints for about 3 years now and I didn’t know most things you taught in this video. Awesome and clear!
@Ethan-gu9hmАй бұрын
I think you mixed up the part about Local exposure. What it looked like to me there is improvement to Lumen indirect lighting.
@robertcrawford52Ай бұрын
Thank you for this video! :) You covered a lot of useful information in a clear manner. Greatly appreciated!
@adamgheringАй бұрын
A full tutorial for more beginners would be great! the github link is awesome but its not directed to a specific thing to grab and its a lot of stuff. is there a specific name of something to download? also Im pretty new to this stuff so while the video is amazing it is definitely more for people who already know how to navigate the software...I have no idea where or how you are creating the blueprint at 1:04
@andreww4751Ай бұрын
Great vid
@avakodevАй бұрын
thx! very useful knowledge! 💖
@tommydell9191Ай бұрын
I was expecting a lot of stuff I already knew, but no this is all brand new info to me. Very informative and good pacing! You have earned a sub
@polysiensАй бұрын
Thanks, I am not a fan of generic videos, so when I make these I usually put more niche stuff or something that is actually interesting to me.
@tommydell9191Ай бұрын
@polysiens UE desperately needs more niche and advanced tutorials. Every other UE youtuber repeats the basics 20 times for each advanced topic they cover. Hopefully you get a bigger audience this way since if you did beginner topics, you would have to compete with thousands other youtubers and now you have next to no competition
@polysiensАй бұрын
@@tommydell9191 Yes, there is plethora of beginner content and not enough intermediate/advanced. To be fair the pool of beginner devs will always be way bigger than other categories, so I see why the youtube is saturated with basic or beginner videos.
@mrxcsАй бұрын
When 5.5 will leave preview state?
@polysiensАй бұрын
Should be pretty soon. I think they said at the end of october.
@laurenttelmosse3375Ай бұрын
wasnt expecting some good stuff thx!
@CP-MohammedАй бұрын
I subscribed!
@CP-MohammedАй бұрын
Really nice video!
@Kek9zАй бұрын
great tips!
@davinciresolve18bugs80Ай бұрын
Ку, у тебя есть такой же канал, но с нашей озвучкой?
@polysiensАй бұрын
Hi, I don't speak russian, only serbian and english.
@davinciresolve18bugs80Ай бұрын
@@polysiens I get it. You just sound like a russian speaking English)
@Krida-Developer-i6w2 ай бұрын
Great video, you deserve more views, I am looking forward to your Mover 2.0 tutorials.
@neilbennett72502 ай бұрын
Love the videos. Would be great if you could do a similar video on skeletal mesh optimisations as well
@elganzandere2 ай бұрын
i have found a lot of value in your content. would you please consider making a series for Large Open World optimization? Landscape HLODs / multiple Landscape Actors / Landscape Materials / foliage, et cetera.
@Kek9z2 ай бұрын
I also would like to see that :D
@RewForDev2 ай бұрын
how can i aces to the video
@Krida-Developer-i6w2 ай бұрын
plz keep us updated with mover.
@austinanderson88152 ай бұрын
When I get the game framework component manager, it returns null. Anything I have found online to fix this is just nonsense. Do I have to enable it somewhere first or something?
@austinanderson88152 ай бұрын
The issue is with creating my own game instance. I just reset it to the default game instance and it works, will have to figure out how to do the rest outside the game instance, or create the game framework component manager within the game instance maybe.
@koldx1112 ай бұрын
You're casting to game mode and retrieving the dispatcher. That's not useful because you could just use a custom event instead, if casting. Show a better example for a use-case of event dispatchers. Make the listener independent without casting.
@polysiens2 ай бұрын
You always have to cast directly to the object that has the dispatch event, otherwise you can't bind events. Towards the end I even mention that casting is necessary for binding and that it is one of the downsides.
@koldx1112 ай бұрын
@@polysiens no, you can use actor components to call dispatchers without casting directly to the actor. Sorry friend, but I believe you need a tad more experience on this matter. Tutorials like this will only teach bad practice.
@polysiens2 ай бұрын
@@koldx111 If you have an actor component attached to the actor, that means that actor has direct reference to that component. If you want to reference actor component that is on another actor, you have to reference directly that actor to get access to its components(Or use get component of class, which does not reference actor directly, but it does reference the component directly). This is the reason people try to get around this direct reference issue by creating Event components, so everyone directly references the Event component, but not each other. It still needs direct reference though, but at least that event component is lighter than the actors that are referencing it. I am not a fan of it because it exponentially increases complexity and adds a layer of misdirection.
@easternunit2009Ай бұрын
If you are telling someone that a code is wrong just because simply it is not favorable to you, then that's literally what programming is. There are multiple ways to get the same results.
@polysiensАй бұрын
@@easternunit2009 I agree, that is why I gave pros and cons for event dispatchers and where they are useful. This was a video about event dispatchers specifically, so even though you can create different configurations, the video was focused on basic way to use event dispatchers for people that are not familiar with them.
@BarakXYZ3 ай бұрын
Thanks a lot! Super useful stuff <3
@nudtanunwarnnissorn3 ай бұрын
thanks bro, really what i want but for arm (i dont want to set up the blend space animation stuffs)
@j05hau3 ай бұрын
I just came across this feature now and wanted to know more about it, your video really helped understand the basics in a very simplified and straightforward manner. Thanks for your top explanation! This feature is a game changer!
@thebigrickman3 ай бұрын
I don't suppose you have a link for the asset? it was free on Marketplace but seems to be discontinued. I'd love to study it! there isn't enough information on K2Nodes
@Liquidkapu3 ай бұрын
Very cool! Im programming my game in quite a loop-oriented manner, and the difference between loops in-editor and packaged (and in c++) is indeed very noticeable!
@lz40903 ай бұрын
Nice. Do you think you can make more videos on interfaces and soft references, especially when you need an actor specifically as a reference but it holds a lot of variables. Thanks
@polysiens3 ай бұрын
Can you expand on that? Not sure what exactly you mean.
@Zizimaza3 ай бұрын
Awesome video. Thank you! The spawning actors and save/load is very interesting. Thank you for making the moderate actor test and having the SaveGame have a handful of variables.
@polysiens3 ай бұрын
No problem, thanks for watching 👍
@Pawlkoko4 ай бұрын
Love those explanations, one of the best on yt, thanks!
@annyantuv90684 ай бұрын
This is cool 🔥
@warren014 ай бұрын
Super Cool to see actual impacts
@MinhNguyen-vl7jj4 ай бұрын
How to remove them with EUW?
@christopherfrancique99124 ай бұрын
very insightful great work
@warren014 ай бұрын
Really like how you always show the comparison with actual examples of the performance difference.
@polysiens4 ай бұрын
Thanks, I generally don't like to just talk conceptually and try to ground it with examples. It does make my a bit longer than I would like, but hopefully tradeoff is worth it :D
@warren014 ай бұрын
@polysiens a helpful suggestion to help grow your audience. Make youtube shorts of the key stuff and quick did you know, tips, i.e snippets of your main long videos. As well as other short just 6 to 8min quick tips..those get quite good viewership via algorithm. That way you can capture a vast majority of your unreal user audience as well as new unity engine users transitioning over. Hopefully other users are sending you suggestions too which could really help with direction viewership and elevate your channel. All the best 👍 yes totally worth it
@polysiens4 ай бұрын
@@warren01 Yea I was thinking about shorts(maybe less than 6-8, that sounds more like a short video), but for me issue is time to make and video type. Since most of my commentary is made for long form with a lot of context that you need around it, I would probably have to record separately for shorts to make it coherent, which takes time. Maybe at some point I will hire an editor or something. I have a general idea on how to grow more, which is make more generic, shorter videos that appeal more to beginners. When I look at my analytics, most of the best performing videos will be a tutorial of a basic X feature in Unreal. The issue with that is that I don't find it fun to make those type of videos, but appealing to more advanced users is basically me targeting 10-20% of the Unreal community and cutting out the rest, which could still work, but is way harder to appeal to and get.
@roja4 ай бұрын
Fantastic
@eligijuspranskunas35094 ай бұрын
are you from "its me bro" channel?😅
@warren014 ай бұрын
Always useful amazing content :) 😎Thanks dude.
@Zizimaza4 ай бұрын
8:20 Thanks for showing this flamegraph of networking data in Insights. I didnt know there was a way to visualize this
@catanonimus74 ай бұрын
How to make it replicated?
@elganzandere4 ай бұрын
Do you consult? I'm looking for someone to review my list of wants/plans for my game & advise on approach/best practice(s) et cetera.
@polysiens4 ай бұрын
Yes, you can check out my fiverr profile in the desciption 👍
@elganzandere4 ай бұрын
@@polysiens I've never used Fiverr - is Discord / PayPal an option?
@polysiens4 ай бұрын
@@elganzandere I don't do direct payment, sorry.
@spakulatius4 ай бұрын
to bad you dont get a ref from GetInstancedStructValue what makes it very annoying to work with
@polysiens4 ай бұрын
Since unreal doesn't know what struct you stored or want out, they have to give you a wildcard, so makes sense you have to specify.
@spakulatius4 ай бұрын
@@polysiens wildcards can be refs but if its not we cant use SetMembersInStruct this is what i mean
@StingerPhilip4 ай бұрын
I wish they had instanced structs before I started using other methods like Anything To String, Blobs, and other wildcard serialization methods. I do wonder if this is safe for persistent storage though. I'm not sure it provides versioning for handling struct changes though. You should cover the Blobs Plugin. It really is quite awesome and takes this even further, its compatible with mp built to work with versioning. It still requires structs to hold the data, but I've been using it for entirely dynamic data systems for a long time now. no issues.
@polysiens4 ай бұрын
I've never heard of blobs. It might be interesting to test, especially the performance difference between them and Instanced structs. Thanks for the suggestion!
@warren014 ай бұрын
You cover important concepts quite nicely and explain the differences of various methods very well. Also showing us hidden gems not discovered easily. Thanks :) look forward to all your content. One of the few Channels covering Unreal content that is really useful especially programming and good design concepts.
@ryanjdev874 ай бұрын
I second this ! Thanks brother
@polysiens4 ай бұрын
Thanks, I try to stay away from generic topics and do more interesting stuff. Not sure how good it is for the view count, but it's more fun for me :)
@ryanjdev874 ай бұрын
@polysiens u gotta think about it as there's always tons of beginners looking to get started buy the amount of people who stick with it to the point this kinda stuff is useful is probably around 20% percent or less of people who start. :)
@polysiens4 ай бұрын
Yea definitely not hitting majority of Unreal Devs. Unfortunately the saturation of generic, mediocre and sometimes bad information related to unreal is pretty high, probably in part because they are targeting beginners that don't know any better.
@orestes_io4 ай бұрын
@@polysiens just joining the thread to say this meticulous content is appreciated. There is probably a niche for software engineers that are migrating to unreal and are shocked by the general bad practice and organisation in 99% of videos about it. You are a notable exception and a much welcome one :)
@ryanjdev874 ай бұрын
Bro i remember watching this video by Ali and thinking Why is he doing it like this ... This is an amazing break down man. Everything you said is dead on and if you can take everything that Ali and yourself is trying to teach and read between the lines its really great advanced content on unreal game structuring ! Thank you again man !
@elganzandere5 ай бұрын
What are some proper Interface use-cases, from your perspective? All I find online is to "avoid casting & instead rely upon Interfaces." I'm familiar with checking Size Reference(s) inter-dependencies et cetera; I'm working on building a large Open World Survival game & am finding myself stalling due to efficiency / optimization concerns.
@cemeterygate5 ай бұрын
I'd be curious about this too. I have no formal education in coding, so all I've learned from youtubers is just that, avoid most casting, although there are some times when it is perfectly fine with things that are always loaded to begin with.
@polysiens5 ай бұрын
Hi, Yes there is a lot of dogmatic advice that is given and need to be unlearned when it comes to blueprints in Unreal. For me, interfaces are mainly for decoupling(when creating open world games you should always think about who is going to pull who into memory and why) and sometimes I use them to talk to different classes. For example, I might have an item, door and NPC that I can talk to. I can create Interactable interface there, so I can more easily interact with them. There are more unique uses that you can think of, but I would say these two cover 95% of them. For open world games, you want to live in the second category I spoke about in the video and be very conscious and critical about what exists in your game and what does what, because everything matters. If we ignore the obvious like, texture size, polygon count, lighting quality,..., you also need to worry about asset variation(more unique objects means less optimization that the engine can do or you can do), batching and instancing, performance of behavior trees(if you use them) and so on.
@cemeterygate5 ай бұрын
Really fascinating stuff that I had never heard of.
@doomstarrobo78075 ай бұрын
So these are mostly for debugging? they look like an equal to branch combined with a print string node. Am I missing something?
@polysiens5 ай бұрын
Essentially, the end goal of asserts is to catch errors, so they help a lot with debugging, especially for multiplayer. A difference between catching a bug can be a 5 min fix or hours of testing, trying to figure out what even the issue is. If you are not ensuring your code is doing what you want it to do or creating fail safes when stuff goes wrong, you are hurting yourself down the road, the project becomes a buggy mess after some time and usually people just give up on their project.