Som skrevet i mødereferatet fra den 29/9, vil vi gerne have sat gang i en debat vedr. vores udfordringer med performance/lag, og de udfordringer hoppere giver for serveren.
Vi bliver nødt til at gøre noget inden vi får presset serveren helt i bund så ingen længere kan spille.
Det er vores ønske at det bliver en løsningsorienteret debat som sigter frem mod at vi får løst vores nuværende problemer med lag.
Derfor:
- Vi ønsker at holde debatten upersonlig, vi leder efter løsninger, ikke placering af skyld.
- Tænk dig om, og læs hvad du har skrevet inden du poster dit indlæg.
Forklaring af problemet:
Lad os starte med at se på hvad problemet med hoppere egentligt er og hvorfor det giver lag på serveren.
Helt grundlæggende kan en hopper bruges til to ting: transport af ting og til at samle ting op.
Hvis man har en række hoppere der sender ting fra den ene ende til den anden, er der ikke nogen problemer rent performancemæssigt.
Det er når vi bruger hoppere til opsamling, eller når der er hoppere som er fulde uden mulighed for at aflevere deres indhold til at ledigt inventory, at vi begynder at stresse serveren.
På hvilken måde presser hoppere serveren?
Rent teknisk sker der følgende:
Når vi placerer en hopper og blokken over den er tom, så står hopperen hele tiden og undersøger om der er blevet smidt ting den skal samle op. Det sker én gang for hvert game tick, dvs. 20 gange i sekundet.
Det samme er gældende for en hopper, der prøver at aflevere en ting til et fyldt inventory (feks. en kiste).
Har man et område med feks. 100 hoppers, betyder dette op til 2000 undersøgelser hvert sekund.
På en server som Crafters, hvor vi har mange spillere spredt omkring på mappet, er der mange chunks loaded det meste af tiden, da alle spillere loader 16x16 chunks omkring sig. Dette gør bla. at man kan befinde sig i nærheden af et område med mange hoppere, og disse vil så være loadede og måske lave undersøgelser hvert game tick.
Vi har nogle områder hvor der er rigtig mange hoppere, og her kan det virkelig mærkes, at der sker noget når de loades.
Hvad er det der gør, at presset fra hoppere kan mærkes?
Vi har en given mængde tid til at klare alle disse (+ serverens øvrige) opgaver i hvert game tick.
Hvis alle opgaver ikke kan klares indenfor den tid, bliver de resterende opgaver skubbet videre til næste tick, hvor der så er endnu flere opgaver der skal løses.
Det giver en sneboldseffekt hvor opgaverne bare hober sig mere og mere op.
Dette opleves som lag, da den opgave du giver serveren, (feks. at hakke en blok i en mine), bliver løst med forsinkelse, og blokken først popper frem efter 1 sekund eller mere.
Pt. bruger vores server 40 - 50 % af et tick til at udrede hoppere.
Det gør at der ofte ikke er tid nok til at beregne alle de andre ting der også sker i samme tick, feks. redstone, mobs, vandskyl og block ændringer. Disse opgaver skubbes så til næste tick, og så ruller den føromtalte snebold med uløste opgaver, der giver mere og mere lag indtil serveren presses i bund og skal genstartes.
Dertil kommer at der med tiden bliver bygget flere områder med stor koncentration af hoppere, i kraft af tilstrømning af nye spillere, så vi kan forvente at problemerne forværres med tiden.
Konklusion:
Vi har løbende forsøgt at regulere server indstillinger for at kunne forbedre performance, uden det har løst problemet.
Vi kan altså konkludere at hoppere udgør en stor risiko for, at belaste serveren så meget med tiden, at det bliver umuligt at spille på Crafters.dk.
Faktisk er vi meget tæt på at det allerede er virkelighed.
Hvad kan vi gøre for at forbedre performance?
Det er dette vi gerne vil have en saglig debat omkring:
Hvad mener I kan afhjælpe laggen?
Er der nogle ting vi kan gøre for at forbedre spiloplevelsen for os alle?
Har du et hotfix, eller kender til brugbare løsninger, du har oplevet på andre servere?
Del dem med os.