Technologie Pro Síťové Hry V Herním Engine Unity

Total Page:16

File Type:pdf, Size:1020Kb

Load more

Masarykova univerzita Fakulta informatiky Technologie pro síťové hry v herním engine Unity Bakalářská práce Tomáš Pagáč Brno, jaro 2020 Místo tohoto listu vložte kopie oficiálního podepsaného zadání práce a prohlá- šení autora školního díla. Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Tomáš Pagáč Vedoucí práce: Mgr. Jiří Chmelík, Ph.D. i Poděkování Chtěl bych poděkovat Mgr. Jiřímu Chmelíkovi, Ph.D. a MgA. Hele- ně Lukášové, ArtD. za vedení práce a podporu při její tvorbě. Dále bych chtěl poděkovat Mgr. Lukášovi Pevnému za pomoc při tvorbě písma. ii Shrnutí Práce zkoumá problematiku vývoje online her. První část popisuje výběr vhodné architektury, metody pro snížení datového toku a kom- penzaci síťové odezvy. Druhá část popisuje implementaci prototypu online hry za použití herního enginu Unity a síťové knihovny Mirror. Součástí práce je grafický manuál pro vytvořený prototyp. iii Klíčová slova online hry, síťování, architektura herního serveru, Unity iv Obsah Úvod 1 1 Slovník 2 2 Požadavky specifické pro síťování her 3 2.1 Úvod do síťování her ..................... 3 2.2 Podvádění ........................... 4 2.3 Problematika architektury ................... 4 2.3.1 Client-server model . 4 2.3.2 Peer-to-peer model . 5 2.3.3 Platforma serveru . 5 2.3.4 Samostatná aplikace . 6 2.3.5 Webový server . 6 2.3.6 In-engine server . 6 2.3.7 Distribuovaný server . 7 2.4 Problematika šířky pásma ................... 8 2.4.1 Filtrování příjemců dat . 8 2.4.2 Snížení kvality dat . 9 2.4.3 Serializace . 10 2.4.4 Komprese . 10 2.5 Problematika odezvy ..................... 11 2.5.1 Doba mezi vznikem informace a jejím sdílením 11 2.5.2 Zpoždění kvůli síťovému protokolu . 11 2.5.3 Skrývání odezvy a konzistence . 12 2.5.4 Interpolace . 12 2.5.5 Striktní konzistence . 12 2.5.6 Optimistická konzistence . 13 2.5.7 Kauzální konzistence . 14 2.6 Shrnutí ............................ 15 3 Tvorba prototypu 16 3.1 Záměr hry ........................... 16 3.2 Výběr nástrojů ........................ 16 3.3 Unity ............................. 16 3.4 Mirror ............................. 17 v 3.5 Další síťová rozšíření pro Unity ............... 18 3.6 Persistence ........................... 19 3.7 Připojování do hry ...................... 19 3.8 Scény ............................. 20 3.9 Herní levely .......................... 20 3.10 Čas .............................. 21 3.11 Periodicky sdílené informace ................. 22 3.12 Pohyb ............................. 23 3.13 Animace ............................ 24 3.14 NPC .............................. 25 3.15 Úkoly ............................. 26 3.16 Inventář a vzhled ....................... 26 3.17 Zprávy ............................ 26 3.18 Chat .............................. 26 3.19 Zkušenosti z vývoje ...................... 27 3.20 Grafický styl .......................... 27 3.20.1 Inspirace . 27 3.20.2 Barvy . 28 3.20.3 Písmo . 29 3.20.4 Logotyp . 30 3.20.5 Uživatelské rozhraní . 30 3.20.6 Grafický manuál . 30 4 Závěr 32 Bibliografie 34 A Přílohy 36 vi Seznam obrázků 2.1 Struktura systému v client-server modelu 8 2.2 Filtrování příjemců 9 2.3 Rozdílné výsledky simulace způsobené predikcí pohybu 14 3.1 Geometrie herních scén, pohled shora 21 3.2 Animátor obsahující animační stavy a přechody mezi nimi, tento graf zobrazuje všechny stavy pro pohyb a boj 25 3.3 Logotyp hry 28 3.4 Experimentální písmo 29 3.5 Uživatelské rozhraní 30 vii Úvod Hry tvoří prostředí pro mezilidskou komunikaci, kooperaci a soutě- žení. Online hry to umožňují v pohodlí domova, a dokonce přinášejí nové možnosti, jako jsou esporty. Díky moderním a mnohdy volně do- stupným herním enginům mohou hry na profesionální úrovni tvořit i jednotlivci či malé týmy. Avšak implementace síťové funkcionality je stále netriviální problém, který může určovat složitost realizace celého projektu. Vývojáři se musí potýkat se synchronizací herního stavu, který může sahat do všech částí systému, a různorodostí šířky pásma a odezvy v síti. Cílem této práce je seznámit se s typickými problémy, které jsou řešeny při vývoji online her, prozkoumat jejich řešení v závislosti na požadavcích hry, a implementovat prototyp online hry na základě zjištěných skutečností. Součástí prototypu bude i jeho grafický styl. 1 1 Slovník • Herní klient – aplikace umožňující připojení do online hry • Hráč – osoba využívající herní klient • Gameplay – hraní hry, průběh hry, interakce se hrou • Entita – objekt synchronizovaný mezi serverem a klientem • Postava – entita ovládaná hráčem • NPC (non-player character) – ekvivalent postavy ovládaný serverem • Simulace – průběh hry složený z diskrétních kroků • Herní engine – komplexní framework zajišťující vykreslování, fyziku, zvuk atd. • Odezva (latence) – čas cesty dat z klienta na server a zpět • Hostitel – server a klient tohoto serveru zároveň • Tahová (turn-based) hra – hra s explicitními tahy, které nevy- žadují rychlé reakce • MMO (massively multiplayer online) – žánr her s vysokým počtem současných hráčů • live-service hry – dlouhodobě udržované hry nabízené ve formě služby • REST – architektura webových služeb pro komunikaci pomocí bezstavových operací 2 2 Požadavky specifické pro síťování her 2.1 Úvod do síťování her Síťování je obor zabývající se komunikací mezi počítači [1]. Počítače se zapojují do sítě, která jim umožňuje výměnu informací. Komunikace mezi počítači je prostředkem pro mezilidskou komunikaci, sdílení zdrojů, zadávání a přenos dat. Referenční model ISO/OSI dělí fun- gování sítě mezi sedm vrstev, které řeší fungování sítě od fyzického propojení počítačů až po reprezentaci přenášených dat. V praxi Inter- net používá rodinu protokolů TCP/IP, která dělí fungování sítě mezi vrstvu síťového rozhraní, síťovou vrstvu, transportní vrstvu a aplikač- ní vrstvu. Tato práce se týká transportní a aplikační vrstvy – výběru z protokolů transportní vrstvy, udržování, zpracování a reprezentace sdílených dat. Obecně se síťování her od ostatních programů neliší. Účastníci hry se spojí pomocí vyhovujícího protokolu a svými akcemi modifikují společný herní svět. Jednoduché hry nic víc nevyžadují, ale pro do- sažení rychlé akce nebo masivního počtu současných hráčů je třeba věnovat síťovému řešení velkou pozornost. Čím více hráčů má zároveň komunikovat a čím rychleji probíhá herní simulace, tím větší objem dat se musí přenést mezi serverem a klienty. Pro složitější hry přestává být praktické v každém kroku si- mulace odesílat celý herní stav všem klientům. Naivní implementace může způsobit zahlcení datové linky, vysokou odezvu a přebyteč- nou zátěž serveru. Mimo to odezva jednotlivých klientů, pokud není kompenzována, může mít negativní dopad na hru [2]. Systém by měl: • Sdílet klientům informace, které jsou pro ně relevantní [3] • Minimalizovat objem sdílených dat, eliminovat datové špič- ky [4] • Udržovat přesnou, „férovou“ simulaci na straně serveru • Udržovat dojem plynulé simulace na straně klienta Výběrem z možných řešení těchto bodů vzniká kompromis mezi veli- kostí datového toku, odezvou a úplností informací, které klient dosta- ne. 3 2. Požadavky specifické pro síťování her Dalším neméně důležitým požadavkem, který získává na význa- mu u dlouhodobě udržovaných live-service her, je kvalitní architektura systému. Výběr platformy serveru záleží na potřebách hry, může jít od jednoduché aplikace až po distribuovaný systém. Pro programátora by mělo být jednoduše nastavitelné, která data (a s jakými vlastnostmi) má server sdílet, s možností manuální optimalizace přenášených dat. Mělo by být jednoduché dohledat původ sdílených dat, kvůli ladě- ní a optimalizaci. Ideálně by síťová funkcionalita neměla být pevně provázaná s ostatními částmi systému. 2.2 Podvádění Síťování her významně ovlivňuje možnost hráčů podvádět. Tzv. che- aty, hacky, exploity jsou způsoby přístupu ke skrytým datům nebo provedení nezamýšlených akcí. Všechna data na klientovi mohou být odhalena, neošetřené požadavky na server mohou být zneužity. Nej- lepší ochranou proti podvádění na klientech je neposílat jim žádná nadbytečná data, to ale není vždy možné. Většina přístupů představe- ných v dalších tématech je možností podvádění nějak ovlivněna. Při navrhování hry je třeba zvážit dopady podvádění – vzniká kompromis mezi technickou efektivitou systému a potenciálem ke zneužití. 2.3 Problematika architektury Při navrhování online hry je potřeba definovat celkovou architekturu systému. Na nejvyšší úrovni architektura určuje, jakým způsobem účastníci hry komunikují a čím jsou tito účastníci tvořeni [5, kap. 3]. Dva nejrozšířenější modely komunikace jsou client-server a peer-to- -peer. Na nižší úrovni je rozhodnutí, na jaké platformě systém stavět. 2.3.1 Client-server model Client-server je ve hrách nejpoužívanější a nejvíc prozkoumaný model. V tomto modelu server drží všechna herní data a klienti navzájem komunikují pouze přes server. Výhodou je, že server má absolutní autoritu nad simulací. Nevýhodou je, že server musí mít dostatek 4 2. Požadavky specifické pro síťování her výkonu pro udržení komunikace se všemi klienty a simulování celé hry, a šířku linky odpovídající všem klientům dohromady. Potřebný výkon se dá snížit použitím hybridního modelu. Server jedná jako prostředník (tzv. matchmaking server), který rozdělí klien- ty na skupiny a v každé skupině určí klienta s nejlepším připojením hostitelem jedné instance hry. Alternativně
Recommended publications
  • Making an Independent Mmo the Albion Online Story

    Making an Independent Mmo the Albion Online Story

    MAKING AN INDEPENDENT MMO THE ALBION ONLINE STORY DAVID SALZ ([email protected]) ROBIN HENKYS ([email protected]) WHO ARE WE? • David Salz, CTO and co-founder of Sandbox Interactive • 18 years in game development • Founder of Indie-Studio „Bitfield“ & BitEngine (only commercial engine for Nintendo DS) • Robin Henkys, CEO & Game Director • 11 years in game development • Previously worked on Drakensang Party RPGs and was the lead designer on Drakensang Online, a hack & slay MMO WHO IS SANDBOX INTERACTIVE? • An independent game developer founded in 2012 • Based in Berlin, Germany • Employs 30 full time on-site plus another 15-20 part time Freelancers worldwide • Exists to develop, market and distribute Albion Online WHAT IS ALBION ONLINE? • Independent MMORPG • privately funded and self-published! • > 500.000 players • Open Beta in 2016, Release in 2017, Steam-Release in 2018 • Sandbox, Full-Loot, PvP and Guild-heavy • One World (like Eve Online) • Cross-platform (PC/Mac/Linux/Android/iOS) FOUNDING THE COMPANY • External investor with game idea • Good budget, but way too small for the suggested scope • Won the pitch! • Suggested inexpensive prototype • Modesty and honesty pays off! • good: used an existing indie team as a starting point of the team • already existing network was invaluable! GETTING STARTED • core team had never done an online game... • (but lots of experience otherwise) • got external coaches with relevant experience! • picked proven technology / middleware • (a first for all of us!) • made some hard
  • UI and Gameplay Programmer (M/F/D) Firmendaten

    UI and Gameplay Programmer (M/F/D) Firmendaten

    Stellenangebot vom 18.06.2019 UI and Gameplay Programmer (m/f/d) Fachrichtung: Art / Layout / Illustration Art der Beschäftigung: Vollzeit Eintrittsdatum: ab sofort PLZ / Ort: 10437 Berlin Land: Deutschland Firmendaten Firma: Sandbox Interactive GmbH Straße & Hausnummer: Papellalee 78 PLZ / Ort: 10437 Berlin Ansprechpartner Name: Robin Henkys Position: Straße & Hausnummer: Papellalee 78 PLZ / Ort: 10437 Berlin Job-Beschreibung Are you a self-driven innovator who loves to make ideas reality? Then you might be our next colleague. We are Sandbox Interactive, an ambitious Game Studio of 35 colleagues located in the heart of Berlin. Since 2012, we have been developing the online game „Albion Online“, which has already established itself as the first truly cross-platform core MMO for Windows, Mac, Linux, iOS and Android. Albion Online launched successfully in July 2017. The game exploded into the global mass market with its Free 2 Play release in April 2019 and enables us to take Albion Online to the next level. Now, we are looking for great colleagues to join us on this journey. Are you ready for your next career step? Seite 1 von 2 YOUR GAME Drive and own the implementation of the User Interface for Albion Online Improve and optimize existing UIs Collaborate with our UI Designers to generate and to implement new ideas Implement smaller Front-End or Back-End features YOUR TALENT You love what you do and can’t wait to get started. You have experience with developing games in Unity for production. You have sound experience using C# in game development. Optional: You are familiar with the NGUI framework.
  • Deterministic Simulation

    Deterministic Simulation

    Software Architecture of an MMO David Salz [email protected] Who am I? David Salz 15 years in the industry CTO, Co-Founder of Sandbox Interactive 35 people based in Berlin we only do Albion Online! In this talk: What is Albion Online? Middleware + Design Decisions Server Architecture How we use Unity (and how not) Albion Online Sandbox MMORPG Cross-Platform (Windows/OSX/Linux/Android/iOS) One World (no „Shards“ or „Servers“, not even for different platforms) Player-Driven Economy (everything is player-crafted) No Character Classes („you are what you wear“) Strong focus on PvP + Guilds Hardcore („Full Loot“ in PVP Areas) Pay-to-play model 4 years in the making Currently in Closed Beta w/ 80.000+ „founding“ players „Release“ in Q4/2016 Albion Online The initial pitch (2012) Play-crafted equipment, buildings One World (like EVE Online) Guild vs. Guild Territotorial conquest Top-Down perspective + Combat (like League of Legends) Simple graphics, „can even be 2D“ PVP focus, no PVE, no Mobs, no Dungeons Release in 2013 Middleware Selection Engine Selection Unity made sense – inexpensive, accessible Cross-Platform was a „target of opportunity“ Database Selection One world need a very scalable database, NoSQL Cassandra sounded suitable still use SQL for query-heavy problems Networking Middleware Photon! can use C# on server (like in Unity!) works with all Unity platforms Apache Cassandra NoSQL Database Originally developed by Facebook Open Source (Apache-License) Java Concept: everything
  • Deterministic Simulation What Modern Online Games Can Learn from the Game Boy

    Deterministic Simulation What Modern Online Games Can Learn from the Game Boy

    Deterministic Simulation What modern online games can learn from the Game Boy David Salz CTO, Sandbox Interactive Who am I? CTO, Co-Founder of Sandbox Interactive 15 years in the industry Albion Online: Sandbox MMORPG Cross-Platform (Windows/OSX/Linux/Android/iOS) Player-Driven Economy (everything is player-crafted) Strong focus on PvP + Guilds Currently in Beta w/ 120.000+ „founding“ players Using Unity Engine Agenda Deterministic Simulation – A short reminder How RTS-style games use it How MMO-style games can still use it! The pitfalls: How to do it and what to avoid A few tricks with deterministic randomness A few examples from Albion Online Gameboy Multiplayer Link cable had very limited throughput … as in: a few bytes per frame and player Syncing complex game state is impossible Instead: used like a controller cable! Deterministic simulation on all devices Frame updates are synced (effectively „lock-stepping“) Still used on DSi and 3DS Deterministic Simulation? This should be an old hat, but… Deterministic: same input same output Input[i] × State[i-1] = State[i] where i is the simulation step number S[0] S[1] S[2] S[3] I[1] I[2] I[3] Given State[0] and same sequence of inputs Input[1..n] … all clients will produce same Sequence State[1..n] Deterministic Simulation! This is cool because: Only need to send State[0] and Inputs through network! Only Inputs if State[0] is known Can save replays by saving only Inputs! You can debug replays of bugs! Difficulties: one mistake and the clients „desync“ must be independent of frame/thread timings requires lock-stepping for online games Late join requires you to send State[n] Deterministic Simulation vs.