Rent allmänt så brukar det väl i regel gå till ungefär såhär:
Du har en server, det kan antingen vara en dedikerad server eller att någon av spelarna kör en server. Oavsett vad så finns det en server.
Du har sedan en klient som ansluter till servern. Varje spelare som är med har varsin klient.
Servern skickar sedan ut positioner på alla spelare, ev. rörliga objekt, annat som händer osv. till alla klienter, och allt servern säger är lag.. :)
På klienten är det så enkelt som att när du avlossar ett skott så meddelar du servern det, servern beräknar sedan om skottet var giltigt (så att du inte avlossar skotten snabbare än vad som är giltigt för ditt vapen, sedan om du träffat någon, och om så är fallet så meddelar den berörda klienter den informationen.
Likaså om du förflyttar dig framåt så kommer klienten meddela servern det, servern kontrollerar att förflyttningen verkligen kan ske, och att den kunnat vara så lång med hänsyn till maximal förflyttningshastighet. Vid behov så justerar den positionen. Sedan meddelar servern alla berörda klienter.
Såhär långt så har vi beskrivit en ganska "dum" klient; den skickar alla kommandon till servern, servern räknar ut vad som hänt, meddelar sedan klienten det, och till sist så agerar klienten och uppdaterar all information i sitt eget minne om var saker befinner sig osv.
Men.. Låt oss nu säga att vi skulle spela spelet i det här skicket, hur kommer användarupplevelsen att vara då? Låt oss säga att vi har en pingtid på 200 ms, dvs. en klart märkbar pingtid. Från att du tryckt på musknappen tills att du på skärmen ser, och i högtalarna hör, att skottet avlossas så känner du av en tydlig fördröjning. Vad gör vi åt det?
Jo, klienten får lite mer intelligens. Klienten tillåts avfyra skottet på en gång istället och göra alla beräkningar som servern gör, men.. De beräkningarna är bara temporära, så snart servern har svarat så skrivs klientens egna beräkningar över med serverns beräkningar. Nu kommer du inte längre uppleva fördröjningen och spelet känns inte längre långsamt och laggigt.
Det här kan dock ställa till problem, t.ex. om klienten och servern av någon anledning inte har klockor som räknar lika fort (har funnits sådana problem på t.ex. en del äldre AMD-processorer med dual core); klienten har beräknat en ny position när du rör dig, men servern har konstaterat att du rör dig för fort. Klienten kommer då tvingas anpassa sig och flytta tillbaka dig några hack konstant. Det ger en väldigt ryckig spelkänsla.
Andra problem är att även om du är stensäker på att du prickade din motståndare så måste du komma ihåg: du prickade den position där motståndaren vid avfyrningsögonblicket var. När servern väl får reda på det och sammanställer informationen ifrån alla klienter så kan det mycket väl vara så att motståndaren har duckat, eller har flyttat ett steg åt vänster. Du kan alltså inte vara säker på att det du ser och vad serven räknar på är samma sak alla gånger