Modular Game Features in UE5: plug ‘n play, the Unreal way

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ก.ย. 2024

ความคิดเห็น • 95

  • @Ranger75th
    @Ranger75th 3 ปีที่แล้ว +152

    I know everyone is focused on all the next gen graphics features, but this feature is more meaningful to me as a developer than any of the graphics features. Don't get me wrong, they're awesome, but writing decoupled, modular game code was not easy in Unreal Engine and that is more meaningful to me than the graphics features, if I'm being honest. If you look at the evolution of distributed systems over the years and the popularity of dependency injection via (IoC) containers, we've evolved from large, tightly coupled, monolithic systems over to container based systems that leverage microservices architectures, the actor model, etc. Everyone is trying to solve this problem but it's something every UE developer had to solve on their own until now. I see "Game Features" as the Unreal answer to dependency injection where an entire game can be composed of decoupled modules that have a singular focus (like a microservice) and can be injected into the game when they're needed. If this feature is leveraged properly, adding and enabling new features will be much easier and making changes to game code will be less risky. In fact maintaining a large code base becomes much simpler, leveraging this system. Of course that's only scratching the surface. I'm very glad this is part of the engine!

    • @Navhkrin
      @Navhkrin 3 ปีที่แล้ว +8

      Also, One of the biggest "indie mistakes" in Unreal Engine 4 was not loading/deloading assets and other systems properly which would often cause FPS drops when they are needed hence the popular "UE freezes" that many gamers fault as a weakness of the engine. This system should reduce that issue significantly since it is a built-onto-engine of managing what to load and when to load assets and systems.
      And ofc another really strong point of this feature is that it makes porting useful features to your next-game much easier since it makes everything modular.

    • @jonathanantoine4962
      @jonathanantoine4962 3 ปีที่แล้ว +3

      I don't see why you can't already build modular games, you just have to follow a framework. Adding an ability to a character could simply be made with a child actor. The only thing that seems really novel is for the environment.

    • @Zumito
      @Zumito 3 ปีที่แล้ว

      will this allow me to update my game in real time while players are still playing?

    • @jonathanantoine4962
      @jonathanantoine4962 3 ปีที่แล้ว +1

      @@Zumito you can do that with cloud/web service functions, it doesn't have anything to do with this feature. You could potentially enjoy some of those features if they can be triggered at runtime, which is probably not the case.

    • @Zumito
      @Zumito 3 ปีที่แล้ว

      @@jonathanantoine4962 ohh thanks

  • @morkyme
    @morkyme 3 ปีที่แล้ว +57

    It would been great to share this project so that developers could actually work with a tangible project that loads faster than the Valley of the Ancient project, to learn and familiarize themselves with these new features.

    • @RolyPolyGames
      @RolyPolyGames 2 ปีที่แล้ว +6

      Just watching this video 8 months later and thinking "wow this would be a great example video"
      From what I understand they have Lyra now but even the video for that directed me towards this video to learn more about plugins.

  • @LaszloIvanyi
    @LaszloIvanyi 3 ปีที่แล้ว +18

    Man, I need you to make a full course on UE5 where you go through all this from the start. Not just the plugins, but building the level, adding the character, assets, animations, sounds etc.. This seems simple enough to follow along. I was struggling with UE4 for a while, but this sounds much more simple approach.

    • @zackakai5173
      @zackakai5173 2 ปีที่แล้ว +1

      There are dedicated level design and asset tutorials all over TH-cam that'll give you a MUCH better overview of that stuff than he could here in this video

    • @GankablePlayer
      @GankablePlayer ปีที่แล้ว +4

      @@zackakai5173 I think he just likes how the material was covered and appreciates his approach. I too would love for more of his work being shared.

  • @rushboardtechuk
    @rushboardtechuk 3 ปีที่แล้ว +5

    I've waited for a feature like this for a long time; to truly customise a project experience for users when it is needed and remove it without issues when it is not.

    • @braaaaaaaaaaaaaains
      @braaaaaaaaaaaaaains 3 ปีที่แล้ว

      If I understand this correctly this can elevate modding extremely.

  • @lpnp9477
    @lpnp9477 3 ปีที่แล้ว +25

    I'm having a hard time wrapping my head around this and enhanced input. I think I want to use them but I'm really not sure how. This didn't exactly clarify things as much as it helped me understand what it could be used for.

    • @DevGods
      @DevGods 3 ปีที่แล้ว +1

      What exactly do you have in mind? Sometimes you don’t need to use a game feature to do what you want

    • @lpnp9477
      @lpnp9477 3 ปีที่แล้ว +1

      @@DevGods I was thinking this could work great as a marketplace content plugin to add gameplay features without needing to create a separate project then retrofit it onto your existing game, but I'm not sure how that can be accomplished. I'm not sure how to design my 'game as a plugin' to take advantage of these features.
      I'd really like to see a video with a defined similar use case from the beginning.
      I'd also love to see a video of someone moving all of their pawn's input to enhanced input and setting up custom button mapping for the end user

    • @DevGods
      @DevGods 3 ปีที่แล้ว +4

      @@lpnp9477 Ah that would be smart. I hate using those "Complete Project" Assets. Im sure you could just add all the content and code of that complete project as a game feature. I'd have to look into that one maybe could do an example on my channel.. As for the enhanced input I have a video going over how to convert the base characters input from a template over to enhanced input. However it is in C++ but it does cover that

    • @bestboy007
      @bestboy007 3 ปีที่แล้ว

      @@DevGods do u have discord?

    • @DevGods
      @DevGods 3 ปีที่แล้ว

      @@bestboy007 yes a small one. It’s listed in my videos

  • @robinklimonow2915
    @robinklimonow2915 2 ปีที่แล้ว +1

    Great introduction video to the new features. I wonder how well (or not) this plays together with the save game system however. If I remember correct, save games are basically just serialized UObject instances. But let's say I want this feature to add new items / abilities to the game and now the player owns them.
    My guess is that whenever a savegame is loaded which references one of the assets of such a gameplay feature, the feature needs to be loaded before the save game can be loaded for it to properly deserialize the objects from the game feature referenced by the save game?
    I guess that is just one of the big "rethink of your design" points of when to use the game module feature and when not to use it. Also for levels of course: If I add a new level and my save game location points to some location only loaded by a certain feature, suddenly that save game depends on that game feature. I also imagine this hard to manage for online games with such features.
    All that of course only applys to features which are designed to not be loaded all the time during gameplay. But even then: Once my save game depends on data from a feature, I possibly cannot simply "deactivate" it for players without risking their save games being corrupted / loosing data (like items) for the next version of the game.
    That raises the question: If I then just move my class from the feature to the core game, would the references in said save game work? Sorry, so many questions and text :D

  • @MyGameDevPal
    @MyGameDevPal 2 ปีที่แล้ว +1

    Very well presented, looking forward to "tinkering" with this :)
    p.s I like your wind :)

  • @musicdudem6673
    @musicdudem6673 3 ปีที่แล้ว +23

    i would love a tutorial to set this up from scratch in the Unreal academy tutorials

    • @remi-life-happy-games
      @remi-life-happy-games 3 ปีที่แล้ว

      this is difficulty

    • @DevGods
      @DevGods 3 ปีที่แล้ว +4

      There is a 2 hour live stream that goes in depth of how they do it in Ancient Game. Really helped me in my project

    • @remi-life-happy-games
      @remi-life-happy-games 3 ปีที่แล้ว +1

      ​ @Dev Gods for me this is difficulty with the codes in english♿☹☹😕

    • @DevGods
      @DevGods 3 ปีที่แล้ว +1

      @@remi-life-happy-games oh damn yea that does suck lol learning to code in a different language is twice as hard

    • @remi-life-happy-games
      @remi-life-happy-games 3 ปีที่แล้ว

      @@DevGods yes

  • @DevGods
    @DevGods 3 ปีที่แล้ว +7

    Is this project available to take a look at? I’m using Ancient Game as reference for now but the more info the better!

  • @xrenynthemusicmage6422
    @xrenynthemusicmage6422 3 หลายเดือนก่อน

    I just wish you would've made the subtitles consistent with what is said in the video, that would've made it easier for me to keep up with the narrator's accent

  • @WizardCell
    @WizardCell 2 ปีที่แล้ว +1

    That regular c++ int though 15:30

  • @cjwang1121
    @cjwang1121 3 ปีที่แล้ว

    More dev friendly feature thank you Unreal

  • @Koto-Sama
    @Koto-Sama 3 ปีที่แล้ว +2

    is it possible to download this demo? i needed to see them to completely understand the system

  • @ponderingForever
    @ponderingForever ปีที่แล้ว

    16:17 - Oh lordy he coming!

  • @ChaojianZhang
    @ChaojianZhang 2 ปีที่แล้ว +1

    Much more straightforward than GameplayAbilities system😆.

  • @MadaoKing
    @MadaoKing 2 ปีที่แล้ว +1

    Anyway we can get an example on how "add cheat" works?

  • @omegakenshin
    @omegakenshin 3 ปีที่แล้ว

    This is so awesome! Thank you very very much!

  • @joantonio6331
    @joantonio6331 2 ปีที่แล้ว

    Si basically this plugin turn your game as a live service game kinda like hitman work me muffins ect... I think they are using this in Lyra

  • @Shrooblord
    @Shrooblord 3 ปีที่แล้ว +4

    Here's that livestream mentioned at 24:29:
    th-cam.com/video/7F28p564kuY/w-d-xo.html

  • @Latvian3Dman
    @Latvian3Dman 3 ปีที่แล้ว +1

    Thank You for video.

  • @dragonalias
    @dragonalias 3 ปีที่แล้ว +1

    Epic are usually good at making captions for their yt videos, does anyone know why this one isn't getting them? only automatically generated...

  • @user-dr1eb4fe8t
    @user-dr1eb4fe8t 2 ปีที่แล้ว +1

    @Unreal Engine I don't understand why you epic guys dont see the demand for more in depth tutorial. ok we can see what the different features do and how easy they are to implement but only for those who already did some work beforehand. The interesting parts are being skipped and it is assumed that we already know those parts. I know that you cant make a real from 0 to 100 tutorial and it is totally normal that developers get their pieces of knowledge from everywhere they can but how does these videos really help us? It feels more like just a showoff where the projects are not being shared. Whats the benefit?

  • @gamedevstanislove
    @gamedevstanislove 3 ปีที่แล้ว

    Sounds cool! Will see! Thank you!=)

  • @jubeidono
    @jubeidono 7 หลายเดือนก่อน +1

    What is the better/officially supported solution for loading in level instances in UE5.3? (as described in 18:30)

    • @ijerofei
      @ijerofei 6 หลายเดือนก่อน

      Hi! Did you found examples of custom game feature actions like adding actors, not just components?

    • @jubeidono
      @jubeidono 6 หลายเดือนก่อน

      I would say if you want to spawn actors, then you should do it by adding a custom component that spawns Actors to the Game State that spawns the actors in the desired locations.

  • @s6xafterse7en
    @s6xafterse7en 2 ปีที่แล้ว

    Yes! This is great!

  • @Muhammad_Abdullah_Sultan
    @Muhammad_Abdullah_Sultan ปีที่แล้ว

    Outstanding

  • @CodingWorm
    @CodingWorm 3 ปีที่แล้ว +2

    that is so catchy for no real reason at all

  • @eobet
    @eobet 3 ปีที่แล้ว +2

    Can there at least be sub folders under gamefeatures? Otherwise how do you organize things when the quantity balloons?

    • @flassari
      @flassari 7 หลายเดือนก่อน

      You can use EditorCustomVirtualPath in the plugin's properties to categorize them into editor subfolders. This is only visible in the editor, the actual folder structure on the hard drive is still flat.

  • @boostedplayer503
    @boostedplayer503 3 ปีที่แล้ว

    Amazing Stuff Thanks Alot.

  • @digitalsyanide1746
    @digitalsyanide1746 3 ปีที่แล้ว +1

    What we need is a better work flow out of all the games that have been made and created we should have better templates to work from like a modding base rpg template in example that already has the base structure to the game we select animations to be linked to the game
    Operation harsh doorstop is a good example of a modding template or a fps shooter that is assign the models and then assign the animations and be able to tweak the animations

    • @digitalsyanide1746
      @digitalsyanide1746 3 ปีที่แล้ว

      Sitting around creating blend spaces and everything else that should already be in the engine as a plug in play as stated above lol that would cut down so much work it would be ridiculous

    • @SneakyKittyGameDev
      @SneakyKittyGameDev 3 หลายเดือนก่อน

      @@digitalsyanide1746 Sounds like you just want to copy/paste a near complete game and call it yours lol

  • @TyrusDev
    @TyrusDev 3 ปีที่แล้ว +1

    Will this project be downloadable at some point?

  • @mslinklater
    @mslinklater 3 ปีที่แล้ว +1

    So difficult to follow when the speaker isn't actually reading out the points in the presentation, and is rushing through. You can either listen to the speaker or read the text, but you can't do both.

  • @GengYao
    @GengYao ปีที่แล้ว

    How can i get the demo,is the sharing of the demo project on schedule?

  • @elfideorubio1308
    @elfideorubio1308 2 ปีที่แล้ว

    Does anyone know the assets used in this video, I know the character is on the marketplace but what about the tower ?

  • @pullsardev
    @pullsardev 2 ปีที่แล้ว

    I can't call "Set Game Feature Active" function, how can I activate that now? 10:25

  • @vrai_
    @vrai_ 3 ปีที่แล้ว

    Do we always need to make the actor as registered first?

  • @ALEX_GREEN
    @ALEX_GREEN 3 ปีที่แล้ว +1

    Enhanced input for UMG please!)

  • @BlueprintBro
    @BlueprintBro 2 ปีที่แล้ว

    13:04 Can anyone explain how he created/modified the AbilityComponent class so that he can call enhanced input events from a component class? I haven't worked with Unreal CPP and am a beginner at C++. However I'm curious as to how he did it step by step. Looks pretty good as I also want to do the same thing, but can't purely through blueprints.

    • @tonetfal
      @tonetfal ปีที่แล้ว +4

      AbilityComponent class represents just one "ability". Whenever the component is being registered on an actor, it calls OnRegister function, which just binds every possible trigger event with a function that has to be implemented in blueprints. Whenever the action will be triggered, a function will be called, depending on trigger event.
      Note that you do not define the way the action is triggered, i.e. you don't define which key triggers the action, you do it with mappable context instead; this class is just a dispatcher, something that does the work on demand.
      The reason why I put word "ability" in brackets is because the class doesn't have to do anything with abilities, it only has to do with inputs. The class doesn't have anything GAS related except its name.
      This solution has some drawback. The first that I can see is that you will need to create a new component for each ability, or input, I may say, and repeat the same functionality over and over again. For instance, if you want to activate an ability using some action, you need to get the Ability System Component from the owner, afterwards, to activate it, you need to pass its class or a tag associated with it. If you have 10 abilities, you'll need to implement the same functionality 10 times, but if you will to this in the base class, then the class will not work so well with non-ability actions. You also can derive it in BP, and implement that functionality for ability actions only, but it'll increase the confusion in the system.
      There are also other drawbacks which I can't really spot at the moment.
      Consider checking input implementation in Lyra, if you have enough knowledge to do so. Look for HeroComponent and its InitializePlayerInput function.

    • @BlueprintBro
      @BlueprintBro ปีที่แล้ว +1

      @@tonetfal Wow thank you for the detailed response! Much appreciated.

  • @hotgates9324
    @hotgates9324 3 ปีที่แล้ว

    Probably one of the best features of UE5. Any chance of adding this feature to UE4 in the future?

  • @ChaojianZhang
    @ChaojianZhang 2 ปีที่แล้ว

    👍
    Can you enable/disable/switch in/out Blueprint graph pages?
    And can you pass blueprint functions/events as parameters?

    • @ChaojianZhang
      @ChaojianZhang 2 ปีที่แล้ว

      Can probably do that with a manager class.

    • @ChaojianZhang
      @ChaojianZhang 2 ปีที่แล้ว

      How can this inject built maps?

    • @ChaojianZhang
      @ChaojianZhang 2 ปีที่แล้ว

      17:05 Spawn Level Instance Action (Valley of The Ancient).

  • @momomadi2
    @momomadi2 3 ปีที่แล้ว +1

    12:02
    15:20
    you created one C+++ - ehmmm thats new language or what ? :) thanks dude for this tut

    • @amolambhore6815
      @amolambhore6815 3 ปีที่แล้ว +2

      He says C++ Class not c+++

    • @momomadi2
      @momomadi2 3 ปีที่แล้ว +1

      @@amolambhore6815 it seems C++++++ for me lmao

  • @v-ba
    @v-ba 3 ปีที่แล้ว

    How's it different from component model?

  • @SilversGamer
    @SilversGamer 3 ปีที่แล้ว

    I wish Next 2022 Sonic Games using Unreal Engine 4 because there is no Single Official Sonic Games using Unreal Engine.

  • @eobet
    @eobet 3 ปีที่แล้ว +1

    So, is this another new system (like GameplayTags and GAS) that requires C++? :(

    • @nitinparmar7
      @nitinparmar7 3 ปีที่แล้ว

      Not Really if you create most of the stuff in Blueprints. He only needed to enhance the input system on his component. That's why he used c++.

  • @KizmoBG
    @KizmoBG 3 ปีที่แล้ว +1

    thanks!
    but "add cheats" :-D is there global "prevent cheats" component? :-) it will be way better one i guess?

  • @michaelherrmann8180
    @michaelherrmann8180 3 ปีที่แล้ว

    I guess a multiplayer game feature makes no sense since it has to be in the core game, right?

    • @bestboy007
      @bestboy007 3 ปีที่แล้ว

      yes i think. cause the code is in the game. then it gets replicated to everybody, right? not sure :D

    • @DevGods
      @DevGods 3 ปีที่แล้ว +1

      It depends on what the feature is tbh. I struggled to wrap my head around this too being I wanted to add and take away abilities at runtime but game features is hard coded so it just felt unnecessary. I believe the best use case is similar to how they use game features in fortnite. Things like the space ships flying around or Ariana grande’s concert are game features. I think another cool way to use them in multiplayer (this is theoretical) is if you had a game mode that had different phases in a single match then each of those phases could add a game feature. But even then it’s possibly overkill. It’s biggest benefit is having zero dependencies so you can always build or compile your code and test your base game with or without it.. I guess part of learning curve for the feature is finding out where and when to implement it.

    • @CyberWolf755
      @CyberWolf755 2 ปีที่แล้ว

      @@DevGods The features can be anything, you just need to make sure the server tells the users what they need to load when joining the session, i.e loading Northrend if you are playing on a Wrath of the Lich King server in World of Warcraft.

    • @CyberWolf755
      @CyberWolf755 2 ปีที่แล้ว

      Also you can add new multiplayer game modes on for a map, i.e. adding objectives for hostage mode for dust 2 in CSGO. You would just load a normal version of dust 2 and add the logic, objectives and spawn points for that game mode you added.

    • @arihunfjord
      @arihunfjord 7 หลายเดือนก่อน

      It's actually perfect for multiplayer / live service games. It's used extensively in Fortnite at Epic Games.

  • @PetrRomanovsky
    @PetrRomanovsky 2 หลายเดือนก่อน +1

    Could anyone explain how Create Object From Template works in th-cam.com/video/3PBnqC7TxvM/w-d-xo.html ?

  • @remi-life-happy-games
    @remi-life-happy-games 3 ปีที่แล้ว

    i want model who i can do my open world

  • @starrunner3220
    @starrunner3220 10 หลายเดือนก่อน

    project files pls

  • @kemal1910
    @kemal1910 3 ปีที่แล้ว +3

    Mmm... Is this Eastern European accent? =)

  • @DavidMaclin351
    @DavidMaclin351 3 ปีที่แล้ว

    😳

  • @EMC_CO86_0_Z
    @EMC_CO86_0_Z 3 ปีที่แล้ว

    Call of duty 2022?