Blueprint interfaces implementation a little unreliable? (BUG?)

I’m having a lot of issues with interfaces, it seems doing changes to an interface does not get handled nicely in the classes where the interface is used. E.g:

  • Create an interface, add a function Foo to that interface, add an output to that function.
  • Add an actor X, implement interface and function, and this Foo function will now get implemented much like a normal function in actor X, with its own graph etc.
  • You changed your mind - Foo will no longer need an output. Remove output Foo from the original interface function.
  • Recompile actor X. Foo is still implemented like a function… so that is now incorrectly implemented.
  • Add actor Y, implement interface and function Foo. Foo will get implemented correctly.

So changes to an interface functionality does not work. Is this on purpose so that code breaks less? It could be. But if so one should have an option to re-implement function Foo manually at least. I guess now I have to remove the interface fully, recompile and get a bunch of errors, and re-add all code.

Am I getting this right? Hope not. :confused:

Thanks.

I just tried it and it worked fine.

I assume you’re recompiling and saving the interface before updating the object?

I did yes. I also tried again on an empty project and it’s definitely busted on my side. This has happened many times to me. I’ve attached two images showing what happens when you change an already implemented function (ie with an output or else it’d not implement as a function in its own graph on the blueprint) to not have an output - it remains implemented as a function yet the colour changes to yellow… but it’s now not implemented the same as had it not had an output to begin with.

Are you sure you added an output to the interface function, then implemented that function inside a blueprint, then go back to the interface and remove the output? After you do that it should still be implemented as a function, not as an event (as it should be if you don’t have an output).

As you can tell from the image the two interface calls have the same colour and should be called in the same way…

I have had things like this when changing BP interfaces. Sometimes it doesn’t make the transition very smoothly. I recall having to bin and remake my main interface several times. If you really are unhappy about it, you can report it as a bug.

Yea I might do that but was wanting to double check it’s not just me. :slight_smile: Thanks!

I have to say - I thought UE4 was pretty robust, until I started using interfaces… from my experience, interfaces are almost random as to whether they work or not. For instance I have a particular interface which sends a message to increment a counter (there are four counters, and I pass an integer value = 1,2,3 or -1 to designate which counter to increment). For some reason, about 70% of the time the messages to increment based on the -1 (which used to be 0) are not registered - even though it’s the same function that does it. Minor changes (or just time) will suddenly make it work, but most of the time, it just doesn’t register… even though the interface message is apparently being sent. Interfaces would have to be the flakiest part of UE4 that I’ve seen, and yet, it’s such a central part of interacting entities. I don’t believe that I’ve done anything wrong - but even if I did, the UE4 environment seemingly has no idea how to identify problems. How are people not having serious issues with BP Interfaces?

Another example - I had set up an interface function with an output - at which point UE4 just crapped itself - without any explanation. In the end I had to start the entire interface again… as it kept telling me that the graph already existed (even though it didn’t).

Sounds like you just aren’t coding things correctly. Interfaces are 100% reliable and (unlike notifies) always fire when called properly.

Agree, I’ve never had an issue with an interface not executing.