Announcement

Collapse
No announcement yet.

Replication problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Replication problem

    Hello,

    I have a problem with replication.

    For example,I'm setting PlayerHealth variable to 15(on server) and client can see it.

    But,when I set playerhealth(replicated variable) to 15 on client,server doesn't see it.

    Thanks.(and sorry for my very good english )

    Blueprints;
    Attached Files

    #2
    The level blueprint doesn't really have an owning client, meaning you can't execute things on server from the client. If you did this same thing in a character blueprint, I'd imagine it would work.
    Marketplace Assets

    Advanced Mobile Input: Marketplace Page | Support Thread ――― Easy Input Remapping: Marketplace Page | Support Thread
    Multiplayer Blueprint Chat System: Marketplace Page | Support Thread ――― Closing Credits System: Marketplace Page | Support Thread
    Minesweeper Template: Marketplace Page | Support Thread ――― Maze Creator: Marketplace Page | Support Thread

    Comment


      #3
      Originally posted by Jamendxman3 View Post
      The level blueprint doesn't really have an owning client, meaning you can't execute things on server from the client. If you did this same thing in a character blueprint, I'd imagine it would work.
      It doesn't work.

      Character bp;
      Attached Files

      Comment


        #4
        It doesn't work because replicated variables are only replicated one way, from Server to Client. If you want an event to happen on the server from the client you can make a function and set it's replication to Run on server, anything after that event will be run on the server. In general advice, you should not trust your clients with important game data such as health, etc.

        Comment


          #5
          Originally posted by LazyLoading View Post
          It doesn't work because replicated variables are only replicated one way, from Server to Client. If you want an event to happen on the server from the client you can make a function and set it's replication to Run on server, anything after that event will be run on the server. In general advice, you should not trust your clients with important game data such as health, etc.
          I can't understand you,

          Did you mean stroge your variables to server?

          How can I do it?

          And,

          Is game finishes when server player leaves the session?(my english dead here )

          Thanks for your help.

          Comment


            #6
            Also,it didn't work
            Attached Files

            Comment


              #7
              Because you turned off replication on your variable. The function is being called on the server but because it's not replicated, it isn't set on the clients. I would recommend you watch the Unreal Networking Basics tutorial as that really helped me to understand what's happening where. Link.

              Comment


                #8
                Originally posted by LazyLoading View Post
                Because you turned off replication on your variable. The function is being called on the server but because it's not replicated, it isn't set on the clients. I would recommend you watch the Unreal Networking Basics tutorial as that really helped me to understand what's happening where. Link.
                Thanks,I'm going to watch it.

                But,

                I tried to replicate it but it didn't work.

                I want to press a button in client and change server's health(example.)

                I will write you after the tutorial.

                Sorry for my English,I'm killing the English

                Comment


                  #9
                  I also noticed that R will only be called when R is pressed on the server. You should make a custom event to call. The replication will also not be instant. If you need to do something when a variable is updated you can set it's replication to RepNotify which will call a function when it is updated in the client and server. I made an example real quick here. The red comments are only run on the server.

                  Click image for larger version

Name:	ZQ54EOr.png
Views:	1
Size:	374.6 KB
ID:	1100807

                  Comment


                    #10
                    Originally posted by LazyLoading View Post
                    I also noticed that R will only be called when R is pressed on the server. You should make a custom event to call. The replication will also not be instant. If you need to do something when a variable is updated you can set it's replication to RepNotify which will call a function when it is updated in the client and server. I made an example real quick here. The red comments are only run on the server.

                    [ATTACH=CONFIG]79368[/ATTACH]
                    I did it but it isn't works.

                    I'm pressing o in client,and printing value,it says value is 3.

                    After that,I'm pressing z in server,it says value is 1.

                    Is it an engine bug?(or my small brain)
                    Attached Files

                    Comment


                      #11
                      It is working.

                      The server and the client both have separate Bn values that do not relate to each other.

                      If you press O in the client, you updated the client's Bn to 2 by telling the server to update the variable.

                      If you press Z to print in the client, it says Client 1: 2. If you press Z in the server, it says Server: 1 because the server's own Bn was not updated.

                      If you press O in the server, you now updated the server's own Bn to 2.

                      If you press Z in the client, it should still say Client 1: 2. If you press Z in the server, it should now say Server: 2 since the server's Bn was just updated.

                      This is correct as the Server has its own Bn value.

                      Think of the server as another client. It just has special network authority.
                      Last edited by ToxinGaming; 02-18-2016, 07:45 PM.

                      Comment


                        #12
                        I have a use case where I need to update a variable from client to server. Both the server and client have an index number that they share but I can only replicate the variable from server to client. I am pretty sure after extensive testing that this behaviour is inherent and I won't be able to update the variable from the client. I am not having much success using a replicated function to update the server however.

                        Comment


                          #13
                          If you look at the example I posted, the p key sends a variable from the client to the server.

                          Comment


                            #14
                            Originally posted by LazyLoading View Post
                            If you look at the example I posted, the p key sends a variable from the client to the server.
                            I tried it,and it isn't working.

                            Can it will be a engine problem?

                            Because,I'm doing same bp and it isn't working.

                            Comment


                              #15
                              Originally posted by SoloWarrior View Post
                              I tried it,and it isn't working.

                              Can it will be a engine problem?

                              Because,I'm doing same bp and it isn't working.
                              Same here, it kind of works but my variable updates a value which is bound to some text on a UMG, when I increment from the server both client and server values change, if I increment from the client the UMG doesn't update on the server. Going back to increment from server will reset the variable to the servers value for the client?
                              I'm replicating the variable on an actor which is replicated, documentation could be better.

                              Comment

                              Working...
                              X