The Multiplayer Lecture
A Godot 4.7 networking demo that is the lecture room. Download the client, join the class, and watch the slides, the activities and everyone else’s avatar synchronise over the same client–server architecture the lecture is teaching you to build.
Get the Client
Pick your platform. Each archive holds the game and the native libraries it loads at startup — unpack the whole folder and keep the files together, or it will refuse to launch.
🖥 Windows
Unzip, then run EasyPeasyMultiplayer.exe from inside the unzipped folder.
d4f1c53208e323697db858797ab2ff628890e38128b26cab8a36561edf537347
macOS
Unzip and drag Easy Peasy Multiplayer.app to Applications. See the Gatekeeper note below.
cae79b32b2e28e36eec0e895779be8fcf9be84fb35b505a7f075cb6369518a78
🐧 Linux
Extract, then chmod +x EasyPeasyMultiplayer.x86_64 and run it from that directory.
556d49987d71beb61f2db09453cc7adfe75f8d807afcb5214da71cfb9fb943ea
Checksums are also published at
SHA256SUMS.txt.
Verify with sha256sum -c SHA256SUMS.txt (Linux),
shasum -a 256 -c SHA256SUMS.txt (macOS), or
Get-FileHash (PowerShell).
Joining the Class
There is no IP to type and no account to make. The server address ships with the build.
- Unpack the whole archive somewhere you can find again — Desktop is fine. Do not run the executable from inside the zip.
- Launch it and choose Join as Student. The server address is pre-filled.
- Follow along. You are moved to whatever activity and slide the lecturer is on, automatically.
- Explore on your own with the arrow keys — that detaches you from the class without disturbing anyone. The Follow the class button re-syncs you.
🔒 Only the lecturer can drive the class
Join as Lecturer asks for a password, and that password unlocks control of the slides and the activities. The check runs on the server, not in the interface — a hand-crafted network message from a student is refused and logged, just like a click would be. The password itself never crosses the network: the server sends a random challenge and the client answers with an HMAC of it. That is worth reading the code for — it is on the CGRA252 GitLab.
⚠ Your OS will not recognise these builds
They are unsigned student-course binaries, so Windows SmartScreen shows “Windows protected your PC” — click More info → Run anyway. On macOS, Gatekeeper will say the app cannot be checked; either right-click the app → Open, or run xattr -dr com.apple.quarantine "Easy Peasy Multiplayer.app" in Terminal. Check the SHA-256 above if you want to be sure of what you downloaded.
🌐 Stuck on “Connecting…”?
The game talks UDP on port 25666. University and hall-of-residence networks sometimes block outbound UDP; a phone hotspot is the quickest way to tell whether that is what is happening. If the whole room is stuck, the server is probably down — say so in the lecture.
🐛 If it crashes, send the log
The Windows download includes EasyPeasyMultiplayer.console.exe alongside the normal one. Run that and a console window stays open showing exactly what the game was doing when it stopped — far more useful than “it crashed”.
Every run also writes a log file, whether or not you used the console build:
Windows — paste %APPDATA%\Godot\app_userdata\Easy Peasy Multiplayer\logs into Explorer’s address bar
macOS — ~/Library/Application Support/Godot/app_userdata/Easy Peasy Multiplayer/logs
Linux — ~/.local/share/godot/app_userdata/Easy Peasy Multiplayer/logs
Send godot.log — the newest one — and say roughly what you were doing.
💻 A note on Steam
The build embeds GodotSteam, so if Steam is not running you will see SteamAPI_Init() complaints in the console. They are harmless. The lecture uses plain ENet networking, not Steam’s.
The Lecture Is the Demo
Every networking idea on the slides is running underneath the slides while you read them.
Client–server authority. The server owns peer id 1 and is not a player — no pawn, no window, no keyboard. It decides what activity the class is in and which slide is current. Everyone in the room, the lecturer included, is a client.
Remote procedure calls. Changing a slide is an RPC. So is spawning your avatar, and so is the refusal you get back if you ask for something you are not allowed to have.
Authentication without encryption. ENet here is plaintext, so the lecturer password is proved by challenge–response rather than sent. The nonce is single-use, so a captured answer is worthless on the next connection. The traffic after that is still readable — which is the honest trade-off to talk about, not to hide.
State that has to survive people. Students join late, leave early, page ahead, and reconnect. The meeples along the bottom of the deck show how many people are with the lecturer and how many have wandered off.
Peer-hosted mode is still there. Host Locally (demo) makes your own machine the authority with no password involved — which is how you run both halves on one laptop while you are building your own.