Today I want to talk about the Unreal Engine’s big assumption, the Gameplay Framework.
Yes, I know the framework has a lot of useful content built into it, and yes I realize that it provides a ton of benefits to users of UE4. However, the lack of choice you give developers when working the the framework is really very disappointing and frustrating.
UE4 developers should, by default, opt-in to using a feature in the gameplay framework, not be forced to accept everything with no questions. However, as it currently stands when you create a new project and create a blank level when you hit play you are automatically given an immense amount of things with no choice in the matter. For instance you are given a AbstractNavData-Default object, a GameMode object, a CameraActor object, a GameNetworkManager object, a GameSession object, a GameState object, a HUD object, a ParticleEventManger object, a PlayerCameraManager object, a PlayerController object, a PlayerStart object and a PlayerState object. None of these were explicitly asked for they are simply given to the developer and no options are presented to the developer asking if they want them or not.
The only choice someone can make is to remove the default spawning Pawn, that is literally the only thing that we are allowed to opt out of. Of the 12 different things that are forced on the developer most of them are simply not necessary and a waste of space and processing, for instance why is the AbstractNavData there if we haven’t set up a navigation mesh or added an AI controller or Player controller that can interact with a navmesh? Why is the GameNetworkManager there if we don’t intend to utilize multiplayer? That should definitely be a choice given to us, no? The same in regards to the GameSession. Why do we need a ParticleEventManager if we don’t even have any particles yet? Why aren’t these things introduced when we actually utilize the feature, or why aren’t we able to choose when we want to use them?
The point being, the developer has a bunch of potentially unwanted classes thrown at them by default, there is no choice in the matter, when the choice should most definitely be there. Why do I need a CameraActor and a CameraManager if I’m going to create the camera and manage it within my own pawn class? Instead it will just end up sitting there doing nothing. Why is it by default I get all of Epic’s assumptions about what I’m making thrust at me with no choice in the matter? If I don’t want multiplayer bits don’t give me those bits, If I don’t want you to create a bunch of camera things for me then don’t create a bunch of camera things for me, stop baking assumptions into the editor and stop forcing us to follow your framework. Yes, the framework is useful, yes being able to move around your level by default in play mode can be helpful. However, why is that something I get no say in? If I don’t want anything by default, then gee, I should be allowed to remove those components without banging around in the internal engine code.
This is my call to action for you, Epic. Improve the gameplay framework by making it optional, developers should be able to grab the part that they want to use and be able to setup their own default spawning without having to compete with your version. The framework should be clean enough that all of the parts are okay to be separate from each other, they should be able to be opted into piece by piece without issue. If I want to utilize a player controller let me spawn one for myself and then allow me to spawn and attach a pawn to that player controller, don’t force me to accept your assumptions, nor force me to repeat your logic if I don’t want to use yours. If I want to utilize the game mode then let ME tell YOU that, don’t force me into it.
If the answer is that you think I want them, check your assumptions. If your answer is that you didn’t design these pieces to standalone then perhaps you should recheck how hard you tried to make this a generic framework, since I know that you like to constantly assure everyone that UE4 was designed to be completely agnostic of game genre and workflow.