Why does the blueprint interface array crash?

[link text][1]Please look at the pictures :

So… I don’t even want to crash my editor on purpose, but I will try this out if you get back to me and say it still crashes… I am going to assume the following:

  • That Array of BPI Interface is the cause

Reason being, there is no need to have multiple instances of it. A Blueprint Interface is just that, an interface that allows communication between Blueprints. There’s of course more to that, but yeah, I am pretty sure that’s the problem there. Try it without your little crazy array setup.

Also, if you haven’t already, please watch this entire video: Blueprint Communications | Live Training | Unreal Engine - YouTube

If will blow your mind of all the awesomeness that you will learn.

i think you are mistaking a bug report for a person trying to solve a problem they have, when they are really just highlighting a problem they found in the engine.

the example may be contrived, but a crash is a crash, and the engine should either not allow that action, or it should do something besides crash when that action is performed.

i have never had to use an interface as a variable, never mind an array of them, but i assume there might be some reason to do that, and if there is, they should fix this crash, and if there is not, they should not allow these actions to be attempted.

i looked through that video link, and they never used interfaces as a variable or arrays of interfaces. its a generally useful video, but i don’t think its relevant to fixing this engine crash or explaining why this crash exists.


also, the existence of the array of interfaces is not actually the problem. you can have arrays of interfaces without causing a crash, it only crashes when you set the array of interfaces to equal an array of object references that inherit from that interface. which is strange because it doesn’t crash if you set an element of that array of interfaces to the value of an element of the array of references.

so it works when you set individual interfaces within the array, but not when you set the entire array of interfaces.

so it doesn’t crash if you set individual elements of that array of interfaces from references to objects that inherit from that interface, and it doesn’t crash if you set the array of interfaces from another array of interfaces, it only crashes when you set an array of interfaces from an array of objects that inherit that interface.

That makes no sense in my eyes. You are practically giving people excuses to crash the engine on purpose. So, let’s say I forget to protect my pointers, and then caused the engine to crash from a null. Are you saying that it is the engine’s fault that I forgot to protect them? No… that’s completely my fault.

Bad practices are bad.

There are plenty of examples in the engine that allow things to be referenced by variables but shouldn’t.

From the little I’ve seen. There is no reason to try to get a list of actors and implement the interface in game. The whole point of the interface is to plan ahead and do it in the editor. You need to implement these interfaces in the BP’s themselves.

Like I said before. Bad practices are bad.

Although it can be implemented in other ways, but it’s a bug.
It has nothing to do with “bad practices”.

if use an array of objects, that is no problem.
but there is always a time when using an array of blueprint interfaces.

why would you argue that they should leave this crash in the engine? do you not realize they have a system in place that allows them to choose which node connections to allow, and which to disable? they can make this crash impossible really easily, or they can fix the root of the problem and allow this functionality, or they can add an error message, but ignoring a fatal crash is bad practice, and reporting bugs that you find is always good practice.

and since you claim this action is bad practice, do you have some kind of documentation that says that? i don’t see it mentioned in the coding standard, or any of the documentation i have read. or do you just assume anything that crashes the engine is bad? because plenty of things that used to crash the engine are commonly used now without a problem, due to bug fixes based on bug reports, like this one.