Hi everyone,
At first, I know this question can be a little subjective, but I’ll try to give you guys a context to better understand my dilema and with your help, find out the best approach to solve it.
I’m creating a game with metahumans and realistic graphics (a common game nowadays), my starter point was the GASP project and I’m just customizing everything following my concept. I have some Actor Components that’s being added to the SandboxCharacter, and sometimes inside the ActorComponent I need the reference of the SandboxCharacter or access a function from other ActorComponent to follow the logic, for example:
I have an ActorComponent to take care of Input Mapping, it replaces the input mapping if needed/requested and inside the InteractionComponent, if the player pickup a rifle and he was with the Unarmed Input Mapping, automatically it changes to Rifle Input Mapping giving the player controls specific for that, but for this, inside the InteractionComponent I call a function from InputMappingComponent to perform this change. Just an example…
It doesn’t matter if the player or NPC, I use the SandboxCharacter as a base for both, and I read and watched many devs saying to avoid “Cast to” and I’m trying to do it as possible, but it comes with some pain sometimes and I’m affraid of the possibility to increase a lot the complexity of the logic, even though I’m confortable coding, I feel I could simplify this logic A LOT just adding in BeginPlay a Cast to SandboxCharacter (in my case CharacterBase)…
Actually I do a Cast to Character, what’s almost nothing consuming memory and disk, but I don’t have access to my ActorComponents from that.
Other possibility was add an interface to the Character and get the components separately, but it makes my ActorComponent immediately increase the size to 1.1Gb (size of SandboxCharacter in project).
And it doesn’t matter if class reference of object reference…
I tried as well to invert the dependency to the actors, like a rifle, once the overlapping begin (or BeginPlay) just add the ActorComponent to the SandboxCharacter by a function declared in the interface who implements the “Add Component By Class” node, but the ActorComponent and Actor goes to 1.1Gb as well, I’m conditioned to overlapping events or if the actor is spawned in the world to access the functionality, and I continue without access to the ActorComponent as well.
So, my point is: for a typical third-person RPG game with realistic graphics, you can get as reference of gameplay The Witcher 3, how much memory and disk size of a common game budget I might target to be released on PC and consoles of the current generation?
Actually, Sandbox character from GASP alone takes 1.1Gb disk size and 116.5MB memory size, using this a starter point and understanding that the SandboxCharacter will be the base to the player and all NPCs, it can go crazy really fast .
IMPORTANT: I’ll reduce the quantity of animations in the character as well.
But thinking just about the default info we have from GASP, could you guys please give me your thoughts???
It’s a study and portfolio project, and I want to do it right. I know it’s a tiny study project, but I want to do it from a point of view of a AAA game thinking just about optimizing the blueprints as I can.
Thank you.