>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C-sharp

Hoe Unturned Onder de Motorkap Werkt: De Broncode van een Populaire Zombie Survival Game Ontleed

Veel game-ontwikkelaars brengen jaren door met zich af te vragen hoe grote projecten enorme open werelden in evenwicht brengen met stabiele netwerkcode. Soms ligt het antwoord recht voor onze neus, en het staat op GitHub. Smartly Dressed Games heeft U3-SDK als open source vrijgegeven — dit is in wezen het "skelet" van hun hitspel Unturned, gebouwd op de Unity-engine.

Ik stuitte op deze repository terwijl ik zocht naar voorbeelden van grote SDK-implementaties voor modding. Dit is niet zomaar een verzameling scripts voor het maken van nieuwe hoeden of wapens. Wat we hier hebben is de kern-broncode van het spel, die onthult hoe een project met miljoenen spelers meer dan een decennium heeft geleefd en zich heeft ontwikkeld.

Waarom een Ontwikkelaar de SDK van Iemand Anders Zou Moeten Onderzoeken

Als je je eigen spel maakt in Unity, weet je het: YouTube-tutorials tonen vaak "steriele" voorbeelden. In werkelijkheid moet je omgaan met het optimaliseren van enorme inventarissen, het synchroniseren van voertuigen via het netwerk, en een heleboel andere problemen.

U3-SDK is interessant omdat het een levend project is. Het wordt bijna dagelijks bijgewerkt. Dit is een geweldige kans om te zien hoe professionals de architectuur van een groot C#-project organiseren, hoe ze met assets werken, en hoe ze het mod-laadproces van Steam Workshop opbouwen.

Binnen de Repository

Het project is gebaseerd op Unity 2022.3.62f3. Dit is een vrij recente LTS-versie, dus de code ziet er niet uit als antieke relikwieën uit het Unity 5-tijdperk. Direct na het klonen en openen van scene GameStartup.unity kom je in de werkende omgeving van het spel terecht.

Architectuur en Netwerken

Een van de coolste dingen hier is de netwerkimplementatie. Unturned staat bekend om zijn servers met honderden spelers. In de SDK kun je zien hoe taken worden verdeeld tussen de client en server. Bijvoorbeeld hoe bulleetzaken of karakterbewegingen worden verwerkt om latentie te minimaliseren.

Item- en Craftingsysteem

Als je ooit hebt geprobeerd een inventarissysteem te schrijven, weet je wat een hoofdpijn dat is. In U3-SDK kun je bestuderen hoe de itemdatabase is geïmplementeerd. Het is niet zomaar een JSON-lijst, maar een complexe structuur met ondersteuning voor verschillende datatypes, slijtagestatussen en personalisatie.

Tools voor Contentcreatie

Ontwikkelaar Nelson Sexton heeft volledig functionele voorbeelden van complexe logica toegevoegd aan de SDK. Op het officiële kanaal is er een video die de creatie van een zelfsturende raket toont op basis van deze code. Dit is een duidelijk voorbeeld van hoe de API van het spel werkt: van doelverwerving tot projectielvluchtfysica.

Hoe Dit Op Je PC Te Draaien

Het installatieproces is zo transparant mogelijk, hoewel het het spel vereist dat op Steam is geïnstalleerd, aangezien de SDK zware binaries en assets uit de hoofdmap van Unturned haalt. Dit is een verstandige oplossing: de repository weegt niet veel, en je krijgt toegang tot alle content van het spel.

  1. Kloon de repository.
  2. Installeer de vereiste Unity-versie via Hub.
  3. Start Steam en zorg ervoor dat Unturned is geïnstalleerd.
  4. Open het project en druk op Play in de startscène.

Trouwens, als je van plan bent om in de code te duiken, kun je het beste Visual Studio met Unity en .NET desktop development workloads direct installeren. Zonder dit wordt navigeren door klassen een marteling.

Praktische Waarde Voor Je Project

Ik zie verschillende scenario's voor hoe je U3-SDK kunt gebruiken, zelfs als je geen fan bent van zombie-apocalyps-spellen:

  • Patronen leren. Zie hoe singletons, resource managers en eventsystemen zijn geïmplementeerd in een project met hoge belasting.
  • Optimalisatie. Unturned draait op zeer zwakke hardware. De code heeft veel interessante oplossingen voor geheugen- en CPU-tijdbesparing.
  • Mods maken. Dit is de voor de hand liggende weg. In plaats van te raden waarom je plugin de server "crashed", kun je deze direct debuggen in de context van de broncode van het spel.

Is Het De Moeite Waard Om Te Downloaden

Als je net begint aan je reis in gamedev, kan het project overweldigend lijken. Er is veel code, en er zijn nog meer verbindingen tussen klassen. Maar voor degenen die al hun eerste schaafwonden in Unity hebben opgelopen, is dit een echt leerboek.

Er zijn hier geen "zilveren kogels", maar er zijn tijdgeprüefde oplossingen. De repository is actief in leven, met bijna tweehonderd open issues en regelmatige commits. Dit is een zeldzaam geval waarbij een succesvol commercieel spel zo open staat voor de community.

Het is geschikt voor degenen die sandbox-architectuur, netwerkcode en het bouwen van uitbreidbare systemen willen begrijpen. Als je van plan bent om je eigen spel op Steam uit te brengen met mod-ondersteuning, moet je beslist U3-SDK bestuderen — als het maar om te zien hoe het door de besten wordt gedaan.

Gerelateerde projecten