Bird
Raised Fist0
Unityframework~5 mins

Client-server architecture in Unity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Client-Server Architecture?
It is a way computers talk where one (the client) asks for things and the other (the server) gives them. Like ordering food: you ask (client), the kitchen makes it (server).
Click to reveal answer
beginner
In Unity, what role does the server usually play?
The server controls the game world, keeps track of players, and sends updates to clients so everyone sees the same game.
Click to reveal answer
beginner
Why do clients send requests to the server in a game?
Clients ask the server to do things like move a character or shoot. The server checks and tells all players what happened.
Click to reveal answer
intermediate
What is latency in client-server communication?
Latency is the delay between sending a request and getting a response. Like waiting for a reply when you text a friend.
Click to reveal answer
beginner
How does client-server architecture help multiplayer games in Unity?
It keeps the game fair and synced by having one server control the game and many clients show the game to players.
Click to reveal answer
In client-server architecture, who controls the game state in Unity multiplayer?
ANo one controls it
BEach client individually
CThe player's device only
DThe server
What does latency mean in client-server communication?
AThe number of players connected
BThe speed of the server
CThe delay between sending and receiving data
DThe size of the game world
Which of these is a client’s job in a Unity multiplayer game?
ADecide the game rules
BSend player actions to the server
CStore the entire game world
DControl other players
Why is client-server architecture important for multiplayer games?
ATo keep all players’ games synced and fair
BTo let players play offline
CTo make the game graphics better
DTo reduce the game size
What happens if the server is slow or down in a client-server game?
AClients may lag or lose connection
BClients play faster
CNothing changes
DClients become servers
Explain how client-server architecture works in a Unity multiplayer game.
Think about who asks and who answers in the game.
You got /4 concepts.
    Describe why latency matters in client-server communication and how it affects gameplay.
    Imagine waiting for a reply when you send a message.
    You got /4 concepts.

      Practice

      (1/5)
      1. In Unity's client-server architecture, what is the main role of the client?
      easy
      A. Send requests to the server and receive responses
      B. Store all game data permanently
      C. Control the server hardware
      D. Manage other clients directly

      Solution

      1. Step 1: Understand client role in client-server

        The client initiates communication by sending requests to the server.
      2. Step 2: Understand server response

        The server processes requests and sends back responses to the client.
      3. Final Answer:

        Send requests to the server and receive responses -> Option A
      4. Quick Check:

        Client = Request sender [OK]
      Hint: Clients always ask; servers always answer [OK]
      Common Mistakes:
      • Thinking client stores all data permanently
      • Confusing client with server hardware control
      • Assuming clients manage other clients
      2. Which of the following is the correct way to create a TcpClient in Unity C#?
      easy
      A. TcpClient client = TcpClient("127.0.0.1", 8080);
      B. TcpClient client = new TcpClient.connectTo("127.0.0.1", 8080);
      C. TcpClient client = new TcpClient.connect("127.0.0.1", 8080);
      D. TcpClient client = new TcpClient("127.0.0.1", 8080);

      Solution

      1. Step 1: Recall TcpClient constructor syntax

        In C#, creating a new TcpClient requires the 'new' keyword and constructor with IP and port.
      2. Step 2: Check each option's syntax

        Only TcpClient client = new TcpClient("127.0.0.1", 8080); uses 'new TcpClient("127.0.0.1", 8080);' correctly.
      3. Final Answer:

        TcpClient client = new TcpClient("127.0.0.1", 8080); -> Option D
      4. Quick Check:

        Use 'new' keyword with constructor [OK]
      Hint: Always use 'new' to create objects in C# [OK]
      Common Mistakes:
      • Omitting 'new' keyword
      • Using incorrect method names like connect or connectTo
      • Wrong constructor call syntax
      3. What will the following Unity C# code output if the server sends back the string "Hello Client"?
      using System;
      using System.Net.Sockets;
      using System.Text;
      
      TcpClient client = new TcpClient("127.0.0.1", 9000);
      NetworkStream stream = client.GetStream();
      byte[] data = new byte[256];
      int bytes = stream.Read(data, 0, data.Length);
      string response = Encoding.ASCII.GetString(data, 0, bytes);
      Console.WriteLine(response);
      medium
      A. System.Byte[]
      B. Hello Client
      C. null
      D. Exception thrown

      Solution

      1. Step 1: Understand data reading from NetworkStream

        The code reads bytes from the stream into a byte array and counts bytes read.
      2. Step 2: Convert bytes to string

        It converts the bytes read to a string using ASCII encoding, which matches the server's sent string.
      3. Final Answer:

        Hello Client -> Option B
      4. Quick Check:

        Read bytes + decode = server message [OK]
      Hint: Decode bytes read from stream to get server message [OK]
      Common Mistakes:
      • Printing byte array directly instead of decoding
      • Ignoring number of bytes read
      • Assuming null if no data
      4. Identify the error in this Unity C# client code snippet:
      TcpClient client = new TcpClient();
      client.Connect("192.168.1.10", 7000);
      NetworkStream stream = client.GetStream();
      byte[] message = Encoding.ASCII.GetBytes("Ping");
      stream.Write(message, 0, message.Length);
      stream.Close();
      client.Close();
      medium
      A. Missing try-catch block for network exceptions
      B. Calling stream.Close() before client.Close() causes error
      C. TcpClient must be created with IP and port in constructor
      D. No error; code is correct

      Solution

      1. Step 1: Review TcpClient creation and connection

        Creating TcpClient with default constructor and then calling Connect is valid.
      2. Step 2: Check for error handling

        Network operations can fail; missing try-catch means exceptions are unhandled.
      3. Final Answer:

        Missing try-catch block for network exceptions -> Option A
      4. Quick Check:

        Always handle network exceptions [OK]
      Hint: Always wrap network calls in try-catch [OK]
      Common Mistakes:
      • Assuming stream.Close() before client.Close() is wrong
      • Thinking TcpClient must have IP in constructor
      • Ignoring exception handling
      5. You want to build a Unity client that connects to a server and sends a player's score only if it is above 1000. Which code snippet correctly implements this logic using TcpClient and NetworkStream?
      hard
      A. if(score > 1000) { TcpClient client = new TcpClient("server.com"); NetworkStream stream = client.GetStream(); byte[] data = Encoding.ASCII.GetBytes(score.ToString()); stream.Write(data, 0, data.Length); stream.Close(); client.Close(); }
      B. TcpClient client = new TcpClient("server.com", 5000); NetworkStream stream = client.GetStream(); if(score > 1000) { byte[] data = Encoding.ASCII.GetBytes(score.ToString()); stream.Write(data, 0, data.Length); } stream.Close(); client.Close();
      C. TcpClient client = new TcpClient(); if(score > 1000) { client.Connect("server.com", 5000); NetworkStream stream = client.GetStream(); byte[] data = Encoding.ASCII.GetBytes(score.ToString()); stream.Write(data, 0, data.Length); stream.Close(); client.Close(); }
      D. if(score > 1000) { TcpClient client = new TcpClient(); client.Connect("server.com", 5000); NetworkStream stream = client.GetStream(); byte[] data = Encoding.ASCII.GetBytes(score); stream.Write(data, 0, data.Length); stream.Close(); client.Close(); }

      Solution

      1. Step 1: Check conditional connection and sending

        TcpClient client = new TcpClient(); if(score > 1000) { client.Connect("server.com", 5000); NetworkStream stream = client.GetStream(); byte[] data = Encoding.ASCII.GetBytes(score.ToString()); stream.Write(data, 0, data.Length); stream.Close(); client.Close(); } creates TcpClient without parameters, connects only if score > 1000, then sends data.
      2. Step 2: Verify data conversion and method calls

        Converts score to string before encoding to bytes, uses correct Connect() and stream methods.
      3. Final Answer:

        new TcpClient(); client.Connect() inside if(score > 1000) -> Option C
      4. Quick Check:

        Connect and send inside if condition [OK]
      Hint: Connect and send only inside the if block [OK]
      Common Mistakes:
      • Sending data without converting score to string
      • Connecting outside the if condition
      • Using score directly as bytes without encoding
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard