Why Making Multiplayer Games SUCKS



I finally decided to tackle some of the more complex issues I was having with multiplayer, and this is how it went…

Next devlog: https://youtu.be/cYLnVp1ngwA
Pirate game playlist: https://www.youtube.com/playlist?list=PLXkn83W0QkfmQI9lUzi–TxJaOFYIN7Q4

⎯⎯⎯⎯⎯⎯

More about client prediction & reconciliation: https://www.gabrielgambetta.com/client-side-prediction-server-reconciliation.html

Discord server: https://tomweiland.net/discord
Support me on GitHub Sponsors: https://github.com/sponsors/tom-weiland
Support me on Ko-fi: https://tomweiland.net/kofi
GitHub: https://tomweiland.net/github
Project’s Trello board: https://trello.com/b/vJwk0iwS/pirate-game
Website: https://tomweiland.net/

⎯⎯⎯⎯⎯⎯

Gear & Software I Use

Developing
⮞ Engine – Unity: https://store.unity.com/#plans-individual
⮞ Code Editor – Visual Studio: https://visualstudio.microsoft.com/vs/
⮞ 3D Modeling – Blender: https://www.blender.org/download/

Recording & Streaming
⮞ Screen Recorder – OBS Studio: https://obsproject.com/
⮞ Camera – Panasonic G85: https://amzn.to/39P77GK
⮞ Microphone – Maono AU-PM422: https://amzn.to/2LsTIuG

Computer Parts & Peripherals
⮞ Mouse – Logitech G604: https://amzn.to/3mqUSoy
⮞ CPU – AMD Ryzen 7 2700X: https://amzn.to/3pU06K9
⮞ GPU – GeForce GTX 1050 Ti: https://www.newegg.ca/p/N82E16814125915
⮞ Motherboard – ASUS Prime X470-Pro: https://amzn.to/3p20h5f
⮞ SSD – Gigabyte 240GB: https://amzn.to/39UPWDQ
⮞ HDD – WD Blue 1TB: https://amzn.to/2O37EMI
⮞ RAM – 8GB x2
⮞ Case – Fractal Design Meshify C: https://amzn.to/3q6FgHy
⮞ Power Supply – EVGA 750 GQ: https://amzn.to/2N3T3A0

Other
⮞ YT Channel Management Tool – TubeBuddy: https://www.tubebuddy.com/tomweiland
⮞ Webhosting – Bluehost: https://www.bluehost.com/track/tomweiland/

I personally use all of the above products and services, so they are genuine recommendations. Some of these links are affiliate links, which means I get paid a small commission (at no extra cost to you) if you sign up or buy through them. Thanks for supporting the channel!

⎯⎯⎯⎯⎯⎯

#LatencyIsTheEnemy #Devlog #PirateGame #GameDev #IndieDev #IndieGame #Multiplayer #Unity

In this multiplayer devlog I finally decided to tackle some of the more complex problems I’ve been having with multiplayer. Latency is the enemy, and makes building multiplayer games 1000 times more painful and time consuming. While I’ve managed to get latency mitigation techniques like client prediction working on dry, non-moving land, it’s a whole other story when you’re standing on a moving boat, and this video is a summary of my experiences over the last 3 months.

⎯⎯⎯⎯⎯⎯

The music used in this video is sourced from the YouTube Audio Library and StreamBeats.

source

Related posts

Woow… Woww..🎺🎶 #MaxwellRaju | Super Singer Junior 10 | Celebrating Isaignani | Episode Preview

Alaya Vazhipaadu – 11 March 2025 | Sun TV

Dhop Song | Mukul & Chaithanya Performance | Dhee Jodi | 5th March 2025 | ETV

45 comments

@SomeOneHigh March 19, 2025 - 10:41 pm
Why Multiplayer Games : Because your Ungratefull Noobs that cant Manage to Pull out Any Source Code and Make an Extension to it , when you Learn Coding Basics you will Achieve something called "Knowledge" Which then can be use in the CMake/NMake Files to Build Awesome Multiplayer Games to play with Friends , Untill Then you will keep Playing Games for Mentally Disabled People like ROBLOX !
@qawiyrasyidrafi3103 March 19, 2025 - 10:41 pm
yeah you right, after thinking all is working properly and chek network emulation, everything is broken haha....
@studionibel March 19, 2025 - 10:41 pm
I liked this! XD
@Holphana March 19, 2025 - 10:41 pm
ChatGPT might make more mistakes than me but by the time I'm frustrated enough to look at it myself it's usually an easy fix. Saves a lot of brain power. I don't feel burned out at all.
@yyhhttcccyyhhttccc6694 March 19, 2025 - 10:41 pm
im gonna stick to making single player games
@hman2875 March 19, 2025 - 10:41 pm
skill issue
@cowboynumber4 March 19, 2025 - 10:41 pm
that intro spoke to my soul
@RogerTheil March 19, 2025 - 10:41 pm
Coding is definitely not cool. And it is usually not fun. It's what it produces that can be fun. Sometimes.
@ICM9 March 19, 2025 - 10:41 pm
Yup, I’m a hobbyist game developer and recently started working on more multiplayer involved projects. Working with both the server and client can be a pain and was not something I thought I would be spending hours upon hours on, just to do something otherwise extremely simple. Oh well, learning is fun right? 😢
@TheSuperHeroAlex1 March 19, 2025 - 10:41 pm
they said
@GrumpHead March 19, 2025 - 10:41 pm
I know this was years ago but I think another way you could have fixed the stuttering on the ship is to predict the movement of it on the client as well, instead of just the server.
@benmidas March 19, 2025 - 10:41 pm
For your ship problem there is an easy solution. Treat the ship as a parent object. Your position will only be in local space for the boat. The boat itself is moving also as a seperate movement packet, but you dont care about that, you only care about your position on the boat itself and the boats position is a smooth trajectory that won't easily change
@Naton March 19, 2025 - 10:41 pm
this video made me give up making my own multiplayer game
@nullbeyondo March 19, 2025 - 10:41 pm
All this could've been avoided if you just stored the player's client actions with a timestamp thus you only have to compare the matching timestamp from the server, and simply correct when they don't match. But the way you put it in this video, it just seems like you were just comparing the latest received packets from the server with the client's without any timestamping, which has a ~0% chance of working since client and server would never be truly synchronized; especially in online multiplayer.

The fact that this approach even worked in LAN at all is a miracle, probably cause you server tick was low enough for both the client and server to approximate closely to each other, ignoring a few milliseconds delay. Or your correction code was always activated anyways (which is obviusely bad), just in a visually unnoticable differences that you thought your synchronization code worked, but it never did as it always corrected no matter what.
@JeLeff. March 19, 2025 - 10:41 pm
do you have to buy the server?
@RTOmega March 19, 2025 - 10:41 pm
I didn't even know about the Rigidybody.position thing, reeeeeeeeeeeeeeeeee.
@young-salt March 19, 2025 - 10:41 pm
Why not host-client or peer-to-peer with votekick option as an anticheat and self moderation? For multiplayer it feels like the comnunity as as good as most anticheat anyway so why get stuck on server client models?
@viannizvnv7222 March 19, 2025 - 10:41 pm
thankfully with source engine the netcode is pretty much done for you
@CadeKarge March 19, 2025 - 10:41 pm
Good to know, but extremely discouraging for someone who was considering making their first fps...
@Monkeymario. March 19, 2025 - 10:41 pm
If you wan't to easily make multiplayer games and don't care about limitations then make your game in ROBLOX! :)
@romanberdichevskii5141 March 19, 2025 - 10:41 pm
Nice solution for the boat moving calculation!
@luzroja29AKApeyo March 19, 2025 - 10:41 pm
nadie vio los subtitulos??? no van a decir nada???
@TheForbiddenDance March 19, 2025 - 10:41 pm
Just let the client report movement and spend your time on cheat detection and move on with your life. You arent making cs2 for esports
@Iamjake1000 March 19, 2025 - 10:41 pm
I still see you're active on this video and was hopeful you can give me more insight on the boat issue.. I am running into the same problem, except my waves are much more intense (the boat moves side to side) which walking is fixed with kinematic controllers.. However I don't understand how a proxy helps here.. How do you get them to move to the boats harsh movements?
@thebaeharbourbutcher March 19, 2025 - 10:41 pm
1:07 jokes on you i can say for all of us here. if we clicked on this video. our lifes already are just pain and sufferering
@surplusking2425 March 19, 2025 - 10:41 pm
One simple way to tell this. Unity sucks
@Itsuchi2 March 19, 2025 - 10:41 pm
I’m a dev too making a multiplayer game. Local multiplayer works phenomenally. But I’m deathly scared of when I have to add the online functionality
@GrimmDotExe March 19, 2025 - 10:41 pm
ikr ! whoever made latency is dumb :PPP
@Aquarica March 19, 2025 - 10:41 pm
rip
@ronaldwoofer5024 March 19, 2025 - 10:41 pm
use a real engine then...
its straight forward
@newbert9287 March 19, 2025 - 10:41 pm
Hell yeah
@Infernal_toast March 19, 2025 - 10:41 pm
you need to rethink your architecture if the boat is not working out properly. World of Warcraft did zeppelins. I am sure it wasnt easy but it is possible.


1) try doing everything in ticks
2) try doing everything in deltas with deterministic state machines
@Jonas-Seiler March 19, 2025 - 10:41 pm
idk seems like a skill issue
@Thomason1005 March 19, 2025 - 10:41 pm
interesting idea with syncing the player position relative to the boat, but you could skip the floating boat, just synch a parent id + relative position over the network!
@blue_birb March 19, 2025 - 10:41 pm
You can fix the jump when going on and off boats with a sigmoid function to interpolate between the positions
@jeffreygordon7194 March 19, 2025 - 10:41 pm
One complication you missed is the possibility of having a separate design team with no understanding of these issues. I learned first hand that's a silo that can kill game development.
@AsherKadmiel March 19, 2025 - 10:41 pm
if you weren't planning on making the game too big then you could have just used roblox though i know for the most part that it is hated among quite a few devs but that might have fixed some of your problems
@ÉmerickBrault-k1m March 19, 2025 - 10:41 pm
Half the time is spent writing code

The other half is spent finding that ONE sneaky mistake
@ilikegeorgiabutiveonlybeen6705 March 19, 2025 - 10:41 pm
idk being a game dev and hating cheaters is like you are a developer and you deliberately choose to work developer near QA office
@ilikegeorgiabutiveonlybeen6705 March 19, 2025 - 10:41 pm
2 days? more like two weeks
@Furebel March 19, 2025 - 10:41 pm
This is actually a great explanation why standing on a vehicle in any multiplayer game like Battlefield series was always normally fine, but when it was moving, things would go spasmatic and probably end in phasing through the vehicle or dying for no reason.
@merccc1 March 19, 2025 - 10:41 pm
Yea... They should really have network prediction features more thoroughly fleshed out in the modern engines... Such a common thing... I mean, even ue5's own visual scripting doesn't have the nodes needed for it. You have to go some roundabout 3rd party that does it for you.... That or hardcore learn C++ and do that... Have some mental issues that make visual scripting the genuine best way and C++ a nightmare...
@hoveringgoat8061 March 19, 2025 - 10:41 pm
My niave solution is to move the client position x% closer to the server position. It'll be smooth and generally not noticeable unless there's a significant difference. And since it averages the two systems (client and server) should get back in sync. This is mostly theory at this point tho.
@b3lowtoonatural524 March 19, 2025 - 10:41 pm
Bro why you yapping??
@Gromash26 March 19, 2025 - 10:41 pm
but true and sadly fun

Comments are closed.

Add Comment