Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Arilith · Sep 15, 2018 at 08:30 PM · c#networkingserverclient

Totally lost with UNET - Client to Server Networking

Hello there,

I'm trying to recreate a bomb system like CS:GO has, but I have been trying for some time now, and I'm at the edge of giving up.


I have had everything working multiple times, like sound, UI etc... But one thing just keeps messing me up and that's client to server. Everything always works fine when the server player does something, but the other way around I never got it working.


A quick example of what I want to do:


A player presses "E" and then music starts playing. This code is on the "Bomb" prefab with a network Identity etc...

When the host presses "E", every client starts playing the sound too! But the other way around I always got stuck at authorisation errors.


My current very simple code:

 public class Bomb : NetworkBehaviour {
 
     public AudioSource bombMusic;
 
     [SyncVar]
     public float timeLeft = 40f;
 
     [SyncVar]
     public bool hasBeenPlanted;
 
     private void Update()
     {
         if(Input.GetKeyDown(KeyCode.P))
         {
             if (isLocalPlayer)
             {
                 RpcStartBombSequence();
             } else
             {
                 CmdStartBombSequence();
             }
         }
     }
 
 
     [ClientRpc]
     void RpcStartBombSequence()
     {
         hasBeenPlanted = true;
         bombMusic.Play();
     }
    
     [Command]
     void CmdStartBombSequence()
     {
         RpcStartBombSequence();
     }
 }
 

Also, the Syncvar updates on all clients when the server changes it, but not the other way around. How could I fix this?

Thank you very much, I appreciate all replies.

-Tristan

alt text

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

3 Replies

· Add your reply
  • Sort: 
avatar image
2
Best Answer

Answer by villevli · Sep 16, 2018 at 10:39 PM

All scripts that send Commands to the server, should be attached to the player object.

  • Command methods must be invoked on the client and will be executed on the server in the corresponding object.

  • The client must have authority on the object where the Command is. By default, only the player object spawned for each client has client authority. Attach the scripts with Commands to that object.

  • ClientRpc methods must be invoked on the server and will be executed on all clients in the corresponding object.

  • SyncVar must only be modified on the server. It only syncs from server to all clients. Use Commands with parameters to send state from a client to the server.

  • Read https://docs.unity3d.com/Manual/UNetConcepts.html

Place this script on the bomb object/prefab.

 public class Bomb : NetworkBehaviour
 {
     public AudioSource bombMusic;
 
     [SyncVar]
     public float timeLeft = 40f;
 
     [SyncVar]
     public bool hasBeenPlanted;
 
     [ClientRpc]
     public void RpcHasBeenPlantedChanged()
     {
         // all clients execute
         if (hasBeenPlanted)
         {
             bombMusic.Play();
         }
         else
         {
             bombMusic.Stop();
         }
     }
 }

Place this script on the player object/prefab.

 public class BombPlayerInput : NetworkBehaviour
 {
     private void Update()
     {
         if (isLocalPlayer)
         {
             // one client executes
             if (Input.GetKeyDown(KeyCode.P))
             {
                 GameObject bomb = /* Get a reference to the bomb object this player is interacting with. */
                 CmdStartBombSequence(bomb);
             }
         }
     }
 
     [Command]
     public void CmdStartBombSequence(GameObject bombGo)
     {
         // server executes
         var bomb = bombGo.GetComponent<Bomb>();
         bomb.hasBeenPlanted = true;
         bomb.RpcHasBeenPlantedChanged();
     }
 }

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Arilith · Sep 17, 2018 at 10:43 AM 0
Share

Thank you very much man! I really was on the edge of giving up after trying for such a long time. This example now gives me information about how to do other things too.

$$anonymous$$uch thanks and respect!

avatar image
1

Answer by Casiell · Sep 16, 2018 at 05:56 PM

With Unet you can only use server methods when you have local authority over the object you want to call the method from. You have an authority over your player by default, but for any other object you have to give authority to the client and it has to be done on server.

Sadly it was quite some time ago so I don't remember how it's done exactly, but I hope you understand what I mean and will have something to google. It is there 100%, I remember learning about this

Again, sorry for incomplete answer

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Arilith · Sep 16, 2018 at 09:02 PM 0
Share

Yeah, I already tried googling something like this, but nothing ever worked for me. Thanks for the answer anyways, I appreciate every helping hand!

I will try this now: https://docs.unity3d.com/ScriptReference/Networking.NetworkIdentity.AssignClientAuthority.html

with the hope I succeed! :D

avatar image
0

Answer by Arilith · Sep 16, 2018 at 09:53 PM

Ok, so after trying AssignClientAuthority, I'm still lost. Now the server gives non-authority errors and the clients don't work either. Anyone else who could help me further?

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

569 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

What's an acceptable network send rate? 1 Answer

Unity networking tutorial? 6 Answers

Network how to send data/activate function 1 Answer

What's the best approach for creating a secure authorative server? 0 Answers

Server still sending Packets to inactive clients and throwing errors. How can I stop it? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges