Från labbet

Prototyp Royale - Vårt egna multiplayer-spel

Fyra Prototypare skapade ett actionfyllt multiplayer-spel byggt på Flutters spelmotor Flame Engine.

Tech used

  • Golang
  • Flame Engine
  • Flutter

Press to view video

Bakgrund

Fyra Prototypare gick ihop för att skapa sitt alldeles egna multiplayer-spel, komplett med en server som kan hålla ett stort antal spelare samtidigt. Efter gemensamma diskussioner beslutade de sig för att ta fram en actionfylld upplevelse i stil med space-shooter spelen. De döpte spelet till Prototyp Royale.

Gruppen visste att det inte skulle bli helt enkelt, men var trots det fast beslutna om att övervinna de hinder de skulle ställas inför på vägen, även om det skulle inkludera latensproblem och hackig prestanda.

Processen

Prototyparna började med att lära sig mer om hur en server fungerar. Detta inkluderade att både kunna förstå och utföra de steg som krävdes för att implementera en centraliserad spel-loop. Enkelt förklarat så behövde man se till att handlingarna som skickades av spelarna till servern kunde sändas till varje klient. Den processen avgör i sin tur hur enkelt, användarvänligt, och problemfritt själva spelet är.

För att kunna åstadkomma detta, och eftersom de behövde göra detta både för servern och spelklienterna, så delades uppgifterna upp mellan de olika arbetskamraterna på ett sätt som tillät dem alla fyra att skriva kod inom båda områdena. Eftersom detta behövde göra både för servern och spelklienterna, delades uppgifterna upp mellan medlemmarna så att de alla kunde skriva kod samtidigt.

För tekniken beslutade teamet att använda Golang som serverspråk på grund av dess utmärkta stöd för flertrådning och generella effektivitet. För själva spelmotorn valdes Flame Engine av Flutter eftersom den var plattformsoberoende och problemfri, samt att en av medlemmarna nyligen hade varit på en Flutter-konferens och uppskattat ett keynote-framträdande kring ämnet.

Prototyp Royale in action

Utmaningarna

Innan man ens påbörjat det kreativa projektet med att bygga och optimera ett multiplayer-spel så hade de fyra kollegorna en känsla av att den största utmaningen skulle handla om latens. Efter att ha tagit fram en enkel version av spelet och en server så visade det sig att deras initiala oro varit befogad, då latensen mellan servern och klienterna gjorde att spelet kändes långsamt och hackigt.

Med många potentiella lösningar på lager så bestämde sig gruppen för att testa de mer beprövade alternativen först. I detta fall innebär det optimeringar av både servern och klienterna. Även om det hjälpte till viss del så var det inte tillräckligt. Då lät man istället servern styra spelet, samtidigt som man lät klienterna försöka förutspå vilka handlingar som skulle komma härnäst, som till exempel rörelser. Den här inriktningen visade sig vara framgångsrik, och gav spelet en stor prestandaökning. Det, i sin tur, gjorde själva spelet mer spelbart.

Resultat / Lärdomar

Detta var ett roligt projekt för gruppen, och det gav dem nyfunnen respekt för spelutveckling. Initiala osäkerheter kring spelbarheten över nätverkstrafik var i efterhand nästan obefogade, även om de först stötte på vissa förutsägbara problem relaterade till latens. Det var även intressant för samtliga inblandade att få lära sig mer om implementeringar av spelservrar och spelmotorn Flame av Flutter.

Framtida Åtgärder

Servern som användes för det här projektet kan fungera som en bra grund för alla typer av multiplayer-spel, och är något som enkelt kan användas igen i framtiden för snarlika produkter och idéer.

När det gäller att förbättra den befintliga produkten, Prototyp Royale, tror teamet att det finns flera metoder och optimeringar kvar att utforska för att maximera spelets prestanda.

Prototyp Royale Intro meny