Der flyver masser af tekniske udtryk rundt i luften når der kommer nye spil og konsoller. Vi du gerne være bedre rustet til at forstå hvad det betyder for dig så kig med her. Denne gang tager vi en tur rundt omkring servere i multiplayer.
Hvad er en server?
Når du har et multiplayer spil skal der et eller andet sted findes en funktion der kan samle alle spillernes handlinger, beregne effekten og sende konsekvensen retur. Det er lige meget om det er et fighting spil hvor to spiller mod hinanden eller et MMO hvor flere hundrede spillere deltager. Princippet er det samme. Jeg bruger som eksempel en shooter. Når du spiller flytter du din figur rundt og på et tidspunkt får du øje på en modstander. I denne situation kigger i direkte på hinanden og du kan se han begynder at sigte på dig. Hele denne seance bliver behandlet af serveren.
Din maskine sender information til serveren om at du flytter din figur. Serveren beregner effekten og sender konsekvensen retur til dig og alle andre spillere. Hvis konsekvensberegningen falder inden for dit synsfelt i spillet så vises resultatet på din skærm. Det er en løbende proces hvor der sendes masser af data fra dig og dem du spiller med til serveren og retur. Det er jo enkelt nok. Aktion reaktion. Hvorfor opfører spil så forskelligt?
Server typer
En stor del af muligheder afgøres i designet af spillet, specielt de valg udvikleren foretager omkring server. Der findes generelt to varianter: dedikerede og ikke-dedikerede. Der er en tredje variant som kaldes peer-to-peer der ikke ser den store anvendelse for andet end mobilspil med meget få brugere. Lad os starte med at se på den dedikerede server.
Hvis et multiplayer spil anvender en dedikeret server findes der et eller andet sted en maskine som alene har til opgave at konsekvensberegne de enkelte spilleres handlinger. Denne maskine kan være et sted på Internettet, drevet af leverandøren af spillet, eller det kan være en maskine der er sat op til lejligheden til f.eks. et LAN party. Muligheder afhænger meget af hvad den enkelte leverandør giver mulighed for. Battlefield 3 anvender dedikerede server hvor DICE (udvikleren bag) har valgt at de står for serverne. Counter Strike til PC har også dedikerede servere, med den forskel at du selv kan hente server programmet og dermed kan vælge at lave din egen server. Det kræver mere teknisk indsigt og giver selvfølgelig også flere muligheder.
Den anden mulighed er at én spiller udpeges til at være Host, altså vært for serveren. Dermed afsættes en del af Hostens maskine (PC eller konsol) til at lave konsekvensberegninger, og sende til alle spillere. Samtidig skal maskinen også fungerer helt almindeligt for den som spiller. Dette er en billigere måde at lave multiplayer selvom det på nogle områder også bliver mere kompliceret. Det er muligt at tilbyde de samme muligheder for tilpasning af regler uanset om en udvikler vælger dedikerede eller ikke-dedikerede servere. Call of Duty Black Ops II benytter ikke-dedikerede servere.
Hvad er bedst?
Det afhænger af rigtigt mange elementer, hvor det altid vil være en sammenligning mellem to helt konkrete situationer. Ikke-dedikerede servere har en række indbyggende problemstillinger som forskellige udviklere med skiftende held har forsøgt at løse. Den begrænsning der er mest vanskeligt at komme uden om er Internet-hastigheden.
Der er stor forskel på den Internet-hastighed forskellige brugere har. Mange, som jeg, har en ADSL, hvor der er forskel på hastighed op (upload) og hastigheden ned (download). Hvis data til hver spiller f.eks. benytter 50 kilobit pr. sekund, og upload hastigheden maksimalt er 1000 kilobit/sek. (1Mbit upload) så kan der aldrig være mere end 20 spillere. Det kræver også at forbindelsen ikke bruges til andet. Jo flere detaljer, og dermed data, udvikleren ønsker at overfører, jo færre spillere vil der effektivt kunne køres på samme tid. Derfor har spil med ikke-dedikerede servere typisk en grænse på omkring 20 spillere da det ellers vil stille for store krav til den enkeltes forbindelse.
Den mest udbredte ulempe er det som kaldes Host Advantage eller Værts Fordel. Hvis det er din maskine der fungerer som server har du den fordel af at data omkring hændelser bliver behandlet på din maskine og først derefter sendt til de andre spillere. Det tager tid at sende data, mens du kan se konsekvens af de andre spilleres handlinger med det samme. Dermed kan du måske nå at dukke dig eller skyde, mens data bliver sendt til en anden spiller. Jo større forsinkelse der er fra din maskine og til den anden spiller, jo større bliver din fordel.
Begge dele kan løses hvis udvikleren vælger en dedikeret server.
Det er selvfølgelig væsentligt at en udvikler, der anvender dedikerede server, har tilstrækkelig Internetkapacitet, da der ellers vil opstå samme problemer som hvis du sad med en ikke-dedikeret server. Tilsvarende vil en server til Counter Strike som du driver, også skulle have tilstrækkelig Internet kapacitet. Hvis den forudsætning opfyldt så vil det være muligt at have lige så mange spillere som der er Internetkapacitet til. F.eks. kan M.A.G. til PlayStation 3 med dedikerede servere håndterer på til 250 spillere i hver bane.
Samtidig eliminerer dedikerede server også Værts Fordel, samtidig med at der kun er begrænset behov for at kompenserer for varierende hastighed på Internettet. Det er selvfølgelig væsentligt at der findes gode dedikerede servere tæt ved dig. F.eks. har nogle spil kun servere i USA. Dermed får spillere i USA en ”værts fordel” for serveren er tættere på dem fordi signalet tager længere tid om at komme fra USA til f.eks. Danmark. Langt de fleste spil har grupper af servere i forskellige geografier netop for at sikre at spillere i Europa får en gnidningsløs oplevelse med dedikerede servere.
Ulempen ved dedikerede server er selvfølgelig omkostningen for udvikleren. Hvis der bliver mulighed for at leje egne servere til BattleField 4 så vil jeg helt sikkert overveje dette da det giver en helt anden form for fleksibilitet end de mere generiske shooter der anvender ikke-dedikerede servere.
Peer-to-peer
Selvom det ikke er anvendt til spil med mange spillere, så benytter spil med få spillere sig af peer-to-peer. (Peer betyder ligemænd, ligeværdig eller ens, da alle har samme funktionalitet). Her er alle enheder servere og det er f.eks. når du spiller med andre på Nintendo 3DS med SpotPass/StreeetPass. Hvis du kører racerløb mod andre så sender din enhed data om dine handlinger til alle andre spillere som du spiller med og på hver maskine beregnes konsekvensen. Din skærm opdateres hvis hændelsen er i dit synfelt som hvis du f.eks. bliver overhalet. Det kræver rigtigt meget data på tværs af et netværk og derfor benyttes det mest til lukkende systemer. Teknisk sendes data til alle enheder på samme netværk, det kaldes en broadcast. Sendes der broadcast kan det med mange brugere får nettet til at blive fyldt helt op. Samtidig vil enheder der ikke er en del af spillet og benytte tid til at læse data blot for at finde ud af at det ikke skulle anvendes. Der findes en lidt bedre metode der kaldes multi-cast, hvor da kun sendes til dem som deltager i spiller. Det bliver dog teknisk mere kompliceret. Peer-to-peer er derfor en metode der finder begrænset anvendelse.
Næste gang kigger jeg på Lag eller forsinkelse og hvordan det påvirker dit spil oplevelse.