Before starting
Know the difference between Script and LocalScript. Create a new Lesson17 and get familiar with Output.
Roblox Studio · Lesson 17
Run Script and LocalScript respectively, and use two player windows to observe the difference between shared scenes and personal effects.
Course overview
Think of the server as a referee that holds common rules, and think of the client as everyone's own screen and input device. They send information to each other, but they are not exactly the same computer.
This lesson is an observation experiment. You will see the shared signs created by the server, then the personal tags added to the local script, and finally compare the two player windows.
Know the difference between Script and LocalScript. Create a new Lesson17 and get familiar with Output.
A piece of server is changed to a green SharedBlock, and each client has a unique name interface.
Both players see the shared green block, and their respective interfaces display their names; they can distinguish between Server and Client output.

Learning route
Every time a small step is completed, it is tested. Say what you expect to see first, and then use Play and Output to check it. Don't rush to write all the code at once.
Ordinary Scripts in ServerScriptService are run on the server. The LocalScript in StarterPlayerScripts will be copied to each player's PlayerScripts and run on their respective clients.
The server turns the shared square green, and the client receives this change. Normal network replication takes time and it should not be assumed that it will arrive at the exact same time as another message.
Players.LocalPlayer represents the player who is using this screen on the client side. The server manages many players at the same time, and there is no "only me".
Select Server & Clients in Studio test mode, set up two clients and start. Different versions of the button may have different locations. Find them by function name instead of memorizing the icon coordinates.
The personal performance of cameras, flashcards, button feedback, etc. is usually handled by the client.
Step by step
Ordinary Scripts in ServerScriptService are run on the server. The LocalScript in StarterPlayerScripts will be copied to each player's PlayerScripts and run on their respective clients.
This lesson keeps the map small and uses the default small Baseplate test. You don't need to modify your account, publishing permissions, or cloud settings.
Step by step
The server turns the shared square green, and the client receives this change. Normal network replication takes time and it should not be assumed that it will arrive at the exact same time as another message.
Adding [Server] in front of print is just our own reading tag. The real execution source depends on the context of Output.
local block = workspace:WaitForChild("SharedBlock")
block.Color = Color3.fromRGB(70, 220, 150)
print("[Server] SharedBlock is green")
Step by step
Players.LocalPlayer represents the player who is using this screen on the client side. The server manages many players at the same time, and there is no "only me".
The following code is used to create a simple interface, and there is no need to use the file of Lesson 15. It only shows the identity and does not copy the same name on other people's screens.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local gui = Instance.new("ScreenGui")
gui.Name = "MyViewGui"
gui.ResetOnSpawn = false
local label = Instance.new("TextLabel")
label.Size = UDim2.fromOffset(300, 56)
label.Position = UDim2.fromOffset(16, 16)
label.TextSize = 20
label.Text = "我的屏幕:" .. player.Name
label.Parent = gui
gui.Parent = player:WaitForChild("PlayerGui")
print("[Client] This is", player.Name)
Step by step
Select Server & Clients in Studio test mode, set up two clients and start. Different versions of the button may have different locations. Find them by function name instead of memorizing the icon coordinates.
View the two client and server perspectives respectively. Don't mistake two client windows for two servers. The game still only has shared servers for this round of testing.

Step by step
The personal performance of cameras, flashcards, button feedback, etc. is usually handled by the client.
If the client wants to do something that will affect the common rules, it needs to make a request. The next lesson will use RemoteEvent to hand this request to the server for inspection.
Homework
Put Workspace, ServerScriptService, and PlayerGui in the server or client location you understand.
Add a welcome message of your own to the local tag, but keep the player name dynamically read.
Check the respective LocalPlayer.UserId in the two test clients. It is only observed in the Output and is not used to collect real personal information.
Exit questions
The server does not have a unique local player, LocalPlayer only makes sense on the client.
The same LocalScript is run on each client, and each reads its own LocalPlayer.
Verified and updated by the server, the client can only make requests or display results.
Ends the entire session, closes the test client and saves the editing items.
Explore further
The text code can be copied directly. First confirm the script type, placement, and whether this code is a complete version or a small experiment; do not run multiple versions of the same script superimposed. The source of the interface reference picture has been marked. The object names in the picture may be different from those in this lesson. Please refer to the operation steps.
Download the code and placement instructions for this lesson