Discussion around the limitations of Blueprint

Hello everyone :slight_smile:

I’m a Game Designer and a Blueprint Developer for a small indie team. We’re currently working on a game and I would like to discuss a bit about my experience using Blueprints, the limits I’ve found to it and some potential way to play around them that some other users might have found.

I don’t know if it is the right place to post that but I feel like my little experience might be useful to other developers.

We’re developing the game with both Blueprint and C++ (I’m working with a programmer) and most of our issues don’t come from the communication between the two of them but from Blueprint itself. It is a multiplayer (2), first person game.

Here are the limitations I’ve encountered:

Overriding limitations
Let’s say I have a WeaponClass, a PlayerWeaponClass child of WeaponClass and GreedyWeaponClass child of PlayerWeaponClass.
WeaponClass has a “Shoot Event”. If I override it on PlayerWeaponClass, I can’t override it on GreedyWeaponClass (it returns a compilation error).

Loosing Track of Child Blueprints
Let’s say I have a PlayerWeaponClass and 10 different childs of this class (Shotgun, Riflegun or whatever). I have a PlayerCharacter that has a “WeaponToEquip” variable in which I reference the weapon I’d like to spawn. From time to time, the Editor won’t show my 9 other child classes in the dropdown menu used to choose the variable value and it will only show the weapon type previously referenced. I have to manually open all child weapons in the editor to finally be able to select one of them.

Loosing Instanced Values
From time to time, the editor crashes in-game because of a C++ error. It makes all of my instanced variables values go back to their class value. It also happens whenever I get to change my project name (which happens quite often since I’m versioning almost 5 times a day).

Differences of behavior between 2 launches
Let’s say I have a function running on Client called “CreateAmmoIcon”. Sometimes it fails to launch for no apparent reason (it worked all the way down here). I’m just adding a Print to the function or relaunching my Editor and it’s working again. I know sometime you accidentally break something from a system by coding another one but that should not happen if you have your code under control, which I believe is my case (but I might be wrong).

Editor refuses to open / Blueprint asset corrupted
Let’s say I have a GameMode called “IngameMode” which is a child class of a C++ GameMode class. As “BasePawn” value it has a class named “PlayerCharacterClass”. And I also have 2 childclasses of this first character class called respectively “Class_Sniper” and “Class_Rifleman”. I wanted to manually handle which player class is spawned so I just emptied the “BasePawn” value of my GameMode so that he just doesnt spawn any pawn for my player controllers. I saved my project, opened it again and it blocked at 72%. I let him work for one hour without any result, still blocked at 72%. No error, no CPU usage, no nothing, just out of response (without the “not responding” thing). I closed it, opened the project folder, manually renamed the GameMode by adding a “_OLD” at the end of its name (I don’t remember how I thought about that). And I could open the project again (with the corresponding “missing GameMode references” errors). Closing the project and renaming the GameMode as it was before the crash happens made the project unable to open again. I could toggle the problem on and off by renaming the GameMode. I decided to just delete the GameMode and create a simple GameMode not inherited from a C++ Class and so far it seems to work fine.

Here it is for the big limitations I’m encountering with Blueprint right now.

If you have any insight about them, feel free to share them.

Have a nice day :slight_smile: