Replicating Loading and Firing Cannons in Multiplayer game (Schrodingers boolean?)

Hi Unreal forums! Hoping I can get some angles on something I’ve been racking my brains over for a couple months now. A brief explanation of what I’m trying to do and the problem I’m having, and then I’ll post up the related blueprints.


Cannons! These are actors turned in to child actors and stuck on a larger actor (A ship). With that said, I have tested them independently also outside of their homes on various different gundecks. So! To explain how they function as quickly as possible;
-The guns start loaded and placed behind closed gunports
-In order to fire the gun, players must open the gunport, and push the gun forward. (The port is a separate actor that the gun traces for when interacted with)
-Once fired, the gun must be loaded with powder and shot to fire again (Two separate pick ups the player obtains using a minecraft-esque inventory system)

So the main actors involved here is the cannon actor and the cartridge actor (The shot pickup is functionally the same as the cartridge)

From the cannon blueprint


Interaction and firing checks; these booleans are checked when completed - the gun must pass them all to fire a shot


This part leads on from the firing checks; contains firing blueprint (middle), a separate firing state (which isn’t relevant at the moment) and the animation for running the gun out (which is also the firing animation in reverse)


This part of the cannon’s blueprint triggers when players use their cartridge pickup on the gun. The most important part is altering the check the gun will make when the player attempts to fire it again.


I’ve also added this to make sure the checks are definitely happening

From the cartridge blueprint


This one’s a bit messier. Essentially, when the player left clicks whilst holding the cartridge, it looks for the cannon actor - if it doesn’t find it nothing happens. But if it does, it triggers the load cartridge event which triggers the cartridge loading blueprint in the cannon actor.


This part is for getting rid of the cartridge once it has been used.

So!! I’ve no idea how ‘clean’ this all is, but it does functionally work. What isn’t working though is (as best I can tell) the cartridge boolean in the cannon. The cannon will trigger the cartridge loading event and display the debug string that the cartridge is loaded - - and then when making its firing checks will report via debug string that there is no cartridge loaded in the gun! This feels like a replication issue, as this only affects clients. All booleans involved are set to replicated, leaving me rather stuck.

I’ve uploaded a video demonstrating the problem;

Would really appreciate some advice on this - There could well be some glaring rookie mistake I’ve made that I’m not seeing. Happy to answer questions!