Interface function replication

In a related question server-only-function-replication-does-not-fire I came across what seemed to be a straightforward task and that was to ensure that my objects could be easily reused. Because they are network capable they needed to run through the player controller but also had to account for different player controllers. To best encapsulate them, I used an interface to determine what controllers could click on the items. Though this could not replicate because the server only replication was not available on the interface events.

Is there a reason for interfaces not being able to have server only events? The documentations says they should be able to.

Any additional insight into this would be beneficial. Currently, the work around is to have all networked functions copied in the player controller. The interface function just calls a second function directly next to it. This seems unnecessary. Any thoughts?

Almost a week and no comment so far as to if it’s the documentation that needs updating because this functionality was removed from interfaces or if it is not in yet. @Steve Allison maybe you can address this? I’ve seen you comment on interface questions in the past.

I don’t usually bump posts, but when I do I wait a week :wink:

I just checked 4.8 preview 1 and I don’t see a interface replication option. Can I get a reply (any reply) to this?

I just want to echo that I’ve run into this as well, and so have a LOT of other people. See also: https://answers.unrealengine.com/questions/224340/bug476-interface-functions-cannot-be-replicated.html

I was starting to think that no one could see my post given that I am the only one who has posted in it for over 3 weeks now. @BenHalliday. You are always around to help (thanks). Can you point us in the right direction of who to ask.

I refuse to allow this to be marked complete due to inactivity when there are so many people with the same problem so I’ll just keep adding comments every 4 days or so until the end of time. Or until we get a proper answer :slight_smile:

Clearing this up would be nice. I looked at the docs and tried to find the replication option everywhere. If it is there, it must be default. If not it looks like we will have to make a custom replicated event on each blueprint that is fired by the interface. Kind of clunky though.

Having the same issue, I just can’t get Action interfaces to replicate, no matter how I try and no matter how many times I make posts, I never get an answer.

Well we are basically at a month of updating this thread so hopefully Epic will read it now that more people are replying to it. Some sort of “We are looking into it” or “This functionality was removed because…” would go a very long way.

I played around with some things and the easiest way to do it is to pass your target actor (the one that has an interface implemented) to a multicast custom event. On the same blueprint call that event and pass it into the interface. It will replicate just fine and you will not have to worry about setting up custom events in each object if you put that multicast in whatever blueprint is calling the interface (i.e. your character). I have this setup in my own project and it works nicely. Every BP that receives an interface call from this character will automatically be replicated. (Be sure to mark your receiving actor as replicated :stuck_out_tongue: )

**Be sure that the one who is calling the multicast has authority.**With my project there were some issues with the server being the only one that could make changes to clients without it.

Multicast replicates from the server to the client and while that might work for some things it only works on objects that exist on the server. If you are having a client side effect that is trying to replicate a request up to the server then this technique should not work.

Can you give an example of what would do with it?

I assume you mean an example of what would be a client side function that we want to replicate to the server where the object only exists on the client and not on the server.

If you spawn in an item on a client and not the server (instanced loot perhaps) then any multicast events called on that object will be treated as if it where only on the client.

Say a item that drops revives nearby enemies (a trap) The enemies would only revive on the client as the multicast revive function would not run on the server.

I guess something you could do is have the sever tell the clients that it is okay to spawn something on their own with some randomization on what that item is, but that would mean ask clients would be spawning their own. If you wanted to control specific clients spawning items you would probably have to keep a list of connected clients. Unfortunately I haven’t gotten that far in my project. Examples of that are very hard to find if non existent.

Yeah, i’m still not seeing any progress on this issue, there are work arounds but action interface’s would save so much time and effort if we could just get them to work…

Hey Epic, It’s been another week since I last posted. Please let us know you can read this thread.

I too could benefit from an answer to this

Day 44. Still no word from epic regarding this. Starting to think it will simply never happen. And this isn’t even bring a post back from the dead. There has been discussion and people talking for that long.