Featured image for Meeliften op de golf van Palworld: het geheugenlek dichten om onze servers draaiende te houden

January 1, 2020

Meeliften op de golf van Palworld: het geheugenlek dichten om onze servers draaiende te houden

Invoering

Palworld veroverde de gamingwereld stormenderhand toen het op 19 januari voor vroege toegang werd gelanceerd. Het bereikte slechts 40 uur na de lancering 3 miljoen spelers, en staat momenteel op meer dan 19 miljoen, slechts 2 weken na de release. Palworld is een overlevingsspel in de open wereld met monstertemmende elementen. Of zoals het beter bekend staat als ‘Pokémon met geweren’.

Zeggen dat we overrompeld werden door de vraag naar servers zou een understatement zijn. Toen we Palworld-hosting begonnen aan te bieden, waren we binnen vier uur uitverkocht, ondanks onze inspanningen konden we eenvoudigweg niet genoeg hardware krijgen om aan de vraag te voldoen. Dat was grotendeels te wijten aan de honger naar hulpbronnen van hun dedicated servers. De official recommendation heeft 4 CPU-kernen en 32 GB+ RAM voor een stabiele werking. Je zou meer dan 30 Terraria-servers op die hoeveelheid RAM kunnen draaien. Het grootste deel van het (eerlijk gezegd buitensporige) gebruik van bronnen komt voort uit bugs en slechte optimalisatie, maar dat is te verwachten van een game met vroege toegang.

Zeer veel vroege toegang

Er is een goede reden waarom Palworld zo ontplofte. Het is leuk. Echt leuk. Om te zien hoe een schattig bolvormig lammetje een pistool voor je bouwt, is gewoon niet iets dat een ander spel biedt. Maar Palworld wel. Het werd echter gelanceerd met een litanie aan bugs/prestatieproblemen, variërend van grappig tot ongemakkelijk en zelfs spelbrekend. Enkele van mijn persoonlijke favorieten zijn geweest:

  • Je kunt tegelijkertijd volledige uitrustingssets dragen in je Glider-, Shield- en Head-uitrustingsslots.* (Het lukte me om tot 2.600 verdediging te komen voordat dit helaas werd opgelost in de meest recente update.)
  • Torenbazen zoals Zoe en Grizzbolt kunnen vangen. Weet niet of dit al is opgelost.
  • Vrienden in je basis worden op onverklaarbare wijze naar de skybox geteleporteerd en sterven aan de daaruit voortvloeiende valschade.*
  • Als je op een palsphere klimt voordat de vangst klaar is, vlieg je. (Dit bleek uiteindelijk de sleutel tot het ontdekken van de bron van een groot geheugenlek, maar daar kom ik nog op terug.)

Alles dat is opgelost, wordt gemarkeerd met een *

Al deze problemen hadden zowel gevolgen voor de singleplayer als voor de multiplayer, maar er waren een paar problemen met specifieke servers die AleForge en andere serverproviders bijzonder zwaar troffen, vooral:

  • Oneindige laadschermen.
  • Opgeslagen bestanden overbrengen tussen servers
  • Meerdere geheugenlekken.

💡Wat is een geheugenlek?

Beschouw het geheugen (RAM) van uw computer als een whiteboard dat programma’s gebruiken om informatie op te schrijven die ze later willen gebruiken. Wanneer een programma een geheugenlek heeft, blijft het dingen op het whiteboard schrijven, maar het gaat niet terug om iets te wissen. Zelfs als het niet meer nodig is. Uiteindelijk heeft het programma onvoldoende ruimte om nieuwe informatie te schrijven en loopt het vast. Soms neemt u uw computer mee.

Het is zeker een game met vroege toegang en de ontwikkelaars hebben onvermoeibaar gewerkt om deze bugs te verhelpen. Toch wilden we er alles aan doen om deze problemen zo snel mogelijk op te lossen. Constante elastiekjes en servercrashes, waardoor je vastloopt op het laadscherm terwijl je luistert naar je vrienden die het spel spelen. Of erger nog, helemaal geen server kunnen krijgen vanwege onbetaalbare kosten. We konden niet werkeloos blijven zitten wachten tot de ontwikkelaars de prestatieproblemen hadden opgelost. Er was zeker iets dat we konden doen.

Verzamelen met onze gemeenschap

Wij waren verre van de enigen die last hadden van deze problemen. Het officiële serverhulpkanaal van Palworld werd in hun onenigheid overspoeld met mensen die vroegen hoe ze de crashes/het oneindige laadscherm konden oplossen, of hoe ze hun opgeslagen bestanden konden overbrengen. Frustrerend genoeg leek niemand goede antwoorden te hebben. Dankzij onze ongelooflijke community zijn we echter in de frontlinie beland en hebben we de slechte prestaties en baanbrekende bugs in bedwang gehouden.

Het begon klein, met leden in onze onenigheid die hun ontdekkingen deelden over de meest voorkomende problemen. Maar het groeide snel naarmate meer en meer leden van onze gemeenschap hun kennis en ervaring begonnen bij te dragen. Ondersteunend personeelslid Carbonic en gemeenschapsleden Mayples en VeroFess waren hierin de MVP’s, maar vele anderen gooiden hun steentje bij.

Het was werkelijk hartverwarmend om te zien hoe zoveel mensen samenwerken, elkaar helpen optimaliseren en repareren wat ze konden. Al snel slaagden we erin een aantal servers te bemachtigen met meer dan 12 uur uptime voordat ze opnieuw moesten worden opgestart om een ​​crash te voorkomen. Deze verlengde uptime was een grote verbetering ten opzichte van de bijna elk uur crashes waarmee we bij de lancering te maken kregen. Als u deze wijzigingen op uw server wilt aanbrengen, hebben we een artikel here waarin u wordt uitgelegd hoe u dit moet doen.

We zijn erin geslaagd enige vooruitgang te boeken bij het overbrengen van opgeslagen bestanden en ook om voorbij het oneindige laadscherm te komen. Dit is wat we daarover weten:

  • Oneindig laadscherm

Dit wordt veroorzaakt doordat iemand je gilde verlaat terwijl je offline bent, waardoor de opslaggegevens van je personage beschadigd raken. Momenteel is de enige bekende oplossing het verwijderen van de beschadigde opslag van de serverbestanden. Als je hierbij hulp nodig hebt op een van onze servers, open dan een ticket here of op onze Discord en we zullen ons best doen om het probleem op te lossen. Je verliest je niveaus, items en vrienden, maar helaas is er op het moment van schrijven geen andere oplossing.

  • Opgeslagen bestanden overdragen

Dit bestaat uit twee delen, omdat het anders is om van singleplayer → server te gaan dan van server → server. We hebben een handleiding over hoe u beide here kunt uitvoeren, maar het proces is behoorlijk ingewikkeld en uw resultaten kunnen variëren.

  • Singleplayer/Coöp → Server Op het moment dat ik dit schrijf werkt dit… Meestal. De wereld en de meeste spelersgegevens worden probleemloos overgedragen, behalve die van de host. Standaard houdt Palworld bij welke speler welke is met een GUID (Globally Unique Identifier). Die ID is gekoppeld aan hun Steam/Xbox-account. De gegevens van de host worden echter opgeslagen onder ID 000000001. Dus wanneer ze lid worden, herkent de server ze niet en wordt ze gedwongen een nieuw personage te maken. Er is een onofficiële oplossing here, gebruik deze op eigen risico.

  • Server → Server Nogmaals, dit werkt momenteel een beetje. Tenzij je een wereld probeert over te zetten die vóór patch 1.3.0 is gemaakt. Die patch veranderde de manier waarop dedicated servers GUID’s maken en beheren. Voor zover wij weten is hier geen oplossing voor. Anders zou de volgende gids die ik eerder heb gelinkt, moeten werken. Als je vastloopt of hulp nodig hebt bij het overbrengen naar onze servers, open dan een ticket en wij helpen je verder.

Terwijl we werkten aan het vinden van oplossingen voor het oneindige laadscherm en het opslaan van overdrachten, waren Mayples en VeroFess nog steeds bezig met het oplossen van de geheugenlekken en begonnen de zaken op te warmen. Zozeer zelfs dat we The Code Forge hebben geopend, een speciaal onenigheidskanaal dat onze community kan gebruiken bij het reverse-engineeren van het spel.

Het lek dichten

De eerste verbeteringen kwamen voort uit eenvoudige aanpassingen van de instellingen. Zoals het verlagen van het aantal gronditems, het uitschakelen van raids en het uitschakelen van de offline straf. Die laatste heeft niet veel invloed op de gameplay, omdat je vrienden momenteel niet eten als je offline bent. Ze worden dus toch ziek. Uiteindelijk waren onze optimalisatiemogelijkheden al snel uitgeput en hadden we nog steeds regelmatig te maken met crashes. Dat was totdat we VeroFess’s Unofficial Fix vonden.

Bijna onmiddellijk zette Carbonic een communityserver op zodat we deze konden testen, en de resultaten waren goed. Met slechts 2 CPU-cores en 12 GB RAM draaide de server soepel. Geen vertraging of elastiekjes. Zelfs met 9 personen! (Het was een geweldige ervaring om een ​​van die 9 te worden.) Wat VeroFess had gedaan, was het binaire bestand van de server bewerken om verschillende slecht geoptimaliseerde functies te repareren. Ik kan de technische vaardigheid die nodig was om dat voor elkaar te krijgen niet genoeg benadrukken, vooral zonder de broncode te kunnen zien. Toen we er zeker van waren dat de oplossing stabiel was, rolden we zijn oplossing uit naar al onze klanten en zagen we duidelijke verbeteringen in de stabiliteit en uptime. Toen patch 1.3.1 eenmaal verscheen, hadden we deze niet langer nodig omdat de ontwikkelaars het probleem hadden opgelost (gedeeltelijk dankzij VeroFess).

Hoewel er aanzienlijke verbeteringen waren opgetreden in de serverprestaties en het RAM-gebruik, was dit nog niet helemaal opgelost. Terwijl mensen op een server speelden, steeg het RAM-gebruik steeds hoger, maar waarom? Mayples was degene die ontdekte wat er aan de hand was, allemaal dankzij de palsphere-bug die ik eerder noemde.

Mayples (geparafraseerd): Ik had zo’n bug in CoDMW2 toen we een nieuwe granaatwerper installeerden. Het zou de spelers lanceren, niet het projectiel. Omdat we het object niet hadden gedood, teleporteerden we het gewoon, en door het momentum vlogen spelers weg. De palsphere-bug is hetzelfde. Ze doden het object niet; teleporteer het gewoon, en het momentum lanceert je. Wat me vertelde dat ze ergens net als wij een killbox aan het maken zijn. Ze laden kerkers onder de kaart, als je eruit komt, kun je de hele kaart zien, en waar ze alles opstapelen dat wacht om te worden gedood. De afbeeldingen zijn uitgeschakeld, maar de objecten zijn er. Toch worden ze nooit daadwerkelijk verwijderd. Dan begint het spel fouten te genereren voor dingen die van de kaart spawnen, uiteindelijk bouwt het een enorm foutenlogboek op en crasht het.

Terug naar de analogie van het whiteboard. Wanneer een voorwerp zoals gebruikte palspheres of stokken/stenen op de grond spawnt, worden ze op het bord getekend. Wanneer ze ‘despawnen’ worden ze niet gewist, maar alleen verborgen. Uiteindelijk gaat de server terug en schrijft er “error” onder, waardoor meer ruimte in beslag wordt genomen. Je begint waarschijnlijk te zien hoe Palworld-servers als chips door RAM kauwen, nietwaar?

Conclusie

Hoewel er nog steeds enkele onopgeloste problemen zijn, zijn er de afgelopen weken enorme stappen gezet in het temmen van het op hol geslagen hulpbronnengebruik van Palworld. Dankzij oplossingen van de ontwikkelaars en fantastisch werk van onze community zijn we erin geslaagd een aantal servers nu al meer dan 24 uur comfortabel aan de praat te krijgen!

Enorme shoutout naar Mayples voor zijn ontdekking rond het killbox-lek en VeroFess voor zijn onofficiële oplossing die ons al vroeg de broodnodige ademruimte gaf. Al deze prestatie-inzichten zijn doorgegeven aan de ontwikkelaars die (hopelijk) een stabiliteitsupdate in de maak hebben. Daarnaast hebben ze fantastisch werk geleverd door andere bugs voor vroege toegang op te lossen.

Hoewel Palworld nog wat rijping moet ondergaan voordat het klaar is om het nest te verlaten, zijn we blij dat we met de hulp van onze spelers grote verbeteringen aan de serverzijde hebben aangebracht. Als je lid wilt worden van onze geweldige community en misschien zelfs een handje wilt helpen bij het verder optimaliseren, spring dan op onze Discord! We hebben ook een lanceringskorting van 20% op Palworld servers als jij en je vrienden hebben gewacht om erin te springen. Hoe dan ook, ik kan niet wachten om te zien wat de toekomst van Palworld in petto heeft!

Een Palworld-server nodig?

Vanaf $7.99/maand · directe installatie · DDoS-bescherming

Vastgelopen op een zoektocht? Laten we samen problemen oplossen.

Neem contact op met onze ondersteuningsgilde voor hulp bij het instellen van uw server, of raadpleeg de archieven voor oplossingen voor veelvoorkomende technische problemen.

Lees veelgestelde vragen
Roep live-ondersteuning op Stuur een bericht
Lees veelgestelde vragen Verbeter uw server