Hoppa till innehÄllet

Netcode

FrÄn Wikipedia
Diagram över hur inmatningar synkroniseras i ett spel som anvÀnder fördröjningsbaserad nÀtkod
Diagram över hur rollback-nÀtkod förutsÀger inmatningar och korrigerar spelstatus i efterhand

NÀtkod eller netcode Àr ett samlingsbegrepp för de tekniska system som hanterar kommunikation och synkronisering mellan spelare i onlinespel.[1][2] Begreppet anvÀnds ofta av spelare för att beskriva problem med synkronisering mellan klienter och servrar, till exempel lagg, fördröjda inmatningar eller att spelstatus plötsligt korrigeras.[3]

SÄdana problem kan orsakas av buggar, men ocksÄ av faktorer som hög latens, paketförlust, nÀtverksbelastning eller varierande bildfrekvens.[1][3] NÀtkodens syfte Àr i regel att dölja eller mildra dessa störningar sÄ att flera spelare upplever en sÄ jÀmn och synkron spelvÀrld som möjligt.[2]

Till skillnad frÄn ett lokalt flerspelarlÀge, dÀr alla inmatningar behandlas omedelbart i samma spelinstans, bestÄr ett onlinespel av flera parallella simuleringar. Varje spelares egen inmatning registreras direkt, medan andra spelares inmatningar anlÀnder med viss fördröjning beroende pÄ bland annat avstÄnd, nÀtverkskvalitet och anslutningshastighet.[2]

TvÄ vanliga sÀtt att hantera detta Àr fördröjningsbaserad nÀtkod och rollback-nÀtkod.[2]

Fördröjningsbaserad nÀtkod

[redigera | redigera wikitext]

Fördröjningsbaserad nÀtkod (engelska: delay-based netcode) synkroniserar spelet genom att lÀgga till en avsiktlig fördröjning pÄ den lokala spelarens inmatningar tills motspelarens inmatningar har hunnit fram.[2] PÄ sÄ sÀtt behandlas bÄda spelarnas kommandon samtidigt i samma bildruta.

Metoden kan fungera vÀl vid lÄg och stabil latens, men vid hög eller varierande latens blir styrningen mindre responsiv. Om fördröjningen blir större Àn spelets buffert kan matchen tillfÀlligt frysa medan spelet vÀntar pÄ saknade inmatningar.[2] Detta gör modellen sÀrskilt problematisk i genrer dÀr exakt tajming Àr viktig, exempelvis fightingspel.[4]

Rollback-nÀtkod

[redigera | redigera wikitext]

Rollback-nÀtkod (engelska: rollback netcode) lÄter i stÀllet spelet omedelbart behandla den lokala spelarens inmatningar och förutsÀga motspelarens kommande handlingar, i stÀllet för att vÀnta pÄ dem.[1][2] NÀr den faktiska fjÀrrinmatningen senare anlÀnder finns tvÄ möjligheter:

  • om förutsĂ€gelsen var korrekt fortsĂ€tter spelet utan mĂ€rkbar förĂ€ndring
  • om förutsĂ€gelsen var felaktig Ă„terstĂ€lls spelstatus till ett tidigare lĂ€ge och simuleras om med korrekt information

För spelaren kan detta visa sig som smĂ„ visuella ”hopp” eller korrigeringar, men systemet ger ofta en mer direkt kĂ€nsla Ă€n fördröjningsbaserad nĂ€tkod.[1] Rollback krĂ€ver dock att spelmotorn kan Ă„terstĂ€lla tidigare tillstĂ„nd, vilket kan göra implementationen tekniskt komplicerad och kostsam.[5]

En vÀlkÀnd programvara för att underlÀtta implementation av rollback i spel Àr GGPO.[6]

Orsaker till problem

[redigera | redigera wikitext]

Latens Àr en ofrÄnkomlig del av onlinespel och har stor betydelse för hur responsivt ett spel upplevs.[1] Ju högre latens mellan spelare eller mellan klient och server, desto större blir risken för mÀrkbar fördröjning, felaktiga trÀffar eller plötsliga korrigeringar i spelvÀrlden.[3]

En enskild uppdatering av spelets simulering kallas ofta för en tick. Den hastighet med vilken servern uppdaterar simuleringen kallas tickrate.[7] En lÀgre tickrate minskar processorkrav och bandbreddsanvÀndning, men innebÀr ocksÄ att information mellan klient och server uppdateras mer sÀllan, vilket kan öka den upplevda fördröjningen.[7]

Buggar och desynkronisering

[redigera | redigera wikitext]

Problem som spelare beskriver som ”dĂ„lig nĂ€tkod” kan ocksĂ„ bero pĂ„ rena programfel. Om olika klienter simulerar spelvĂ€rlden pĂ„ olika sĂ€tt kan det uppstĂ„ desynkronisering, dĂ€r olika spelare ser olika versioner av samma hĂ€ndelseförlopp.[3]

Valet av transportprotokoll pÄverkar ocksÄ hur nÀtkoden fungerar. TCP ger tillförlitlig och ordnad överföring men kan orsaka extra fördröjning nÀr paket tappas bort eller mÄste skickas om. UDP Àr snabbare och vanligare i actionspel, men krÀver att utvecklaren sjÀlv hanterar till exempel paketförlust och ordning pÄ data.[8]

AnvÀndning

[redigera | redigera wikitext]

Begreppet nÀtkod anvÀnds sÀrskilt ofta i diskussioner om tÀvlingsinriktade onlinespel, dÀr smÄ skillnader i respons och synkronisering kan fÄ stor betydelse för spelupplevelsen.[2] Det förekommer dÀrför ofta i analyser av fightingspel, skjutspel och andra genrer med höga krav pÄ precision.[1]

  1. 1 2 3 4 5 6 Huynh, Martin; Valarino, Fernando (2019). ”An analysis of continuous consistency models in real time peer-to-peer fighting games”. http://urn.kb.se/resolve?urn=urn:nbn:se:hkr:diva-19404. LĂ€st 23 mars 2026.
  2. 1 2 3 4 5 6 7 8 ”Netcode [p1: Fightin' Words”]. Fightin' Words. 16 oktober 2019. https://words.infil.net/w02-netcode.html. LĂ€st 23 mars 2026.
  3. 1 2 3 4 ”Addressing "Netcode" in Battlefield 4”. EA Digital Illusions CE. mars 2014. http://battlelog.battlefield.com/bf4/news/view/addressing-netcode-in-bf4/. LĂ€st 23 mars 2026.
  4. ↑ ”The difference between LAN and online esports”. Pinnacle. https://www.pinnacle.com/en/esports-hub/betting-articles. LĂ€st 23 mars 2026.
  5. ↑ Hills, Dakota "DarkHorse" (10 december 2020). ”The era of delay-based netcode may finally be over for good in fighting games depending on what SNK does with The King of Fighters 15”. EventHubs. https://www.eventhubs.com/news/2020/dec/10/delay-netcode-ending-kof-future/. LĂ€st 23 mars 2026.
  6. ↑ ”GGPO”. https://www.ggpo.net/. LĂ€st 23 mars 2026.
  7. 1 2 ”Source Multiplayer Networking”. Valve Developer Community. https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking. LĂ€st 23 mars 2026.
  8. ↑ Fiedler, Glenn (1 oktober 2008). ”UDP vs. TCP”. https://www.gafferongames.com/post/udp_vs_tcp/. LĂ€st 23 mars 2026.