Představení komunikačního rámce v reálném čase pro vytváření her pro více hráčů

Ahoj herní vývojáři!

Před několika měsíci jsem se dostal do světa vytváření vysokofrekvenčních her pro více hráčů (v reálném čase), abych upoutal pozornost svého šéfa, protože je extrémně zapálený do vývoje her (Výzva:Zkuste si popovídat o technologiích s Benem Gamblem, aniž by přišel vývojář hry! 🌚🕹).

Když jsem začínal, měl jsem o vývoji hry tolik mylných představ. Podcenil jsem určité aspekty a měl mylné představy o škálovatelné herní architektuře. Ale od té doby jsem se toho o vývoji her hodně naučil a postavil jsem multiplayerové verze několika klasik, jako je Multiplayer Space Invaders a Multiplayer Flappy birds. O vývoji her jsem také psal a mluvil poměrně obsáhle na různých platformách.

Pro každou takovou prezentaci jsem provedl vylepšení her tím, že jsem je nejen zefektivnil, ale také jsem je nechal používat nejlepší a nejnovější funkce základního programovacího jazyka. Použil jsem například pracovní vlákna Node JS (která byla vydána jako stabilní verze v lednu 2020) k simulaci myšlenky mít více herních místností, aby různé skupiny lidí mohly hrát hru současně. To je analogické se spoolováním dedikovaných serverů na vyžádání pro každou hru. Funkce jmenného prostoru Ably umožnila tuto strategii tím, že zajistila, aby žádná z místností neměla přístup k datům té druhé.

Více her =opakování standardního stylu? 🤯🥵

Zatímco jsem pokračoval ve vymýšlení dalších nápadů na hry pro více hráčů, které byly dostatečně cool, aby přesvědčil můj tým, aby mě na nich nechal pracovat během pracovní doby Ably 🌚, uvědomil jsem si některé společné rysy všech těchto projektů:
Všechny mé hry pro více hráčů se zatím řídí herní strategií Klient/Server. Základní síťová architektura je tedy naprosto stejná a má následující aspekty:

  • Server udržuje stav hry a publikuje jej s vysokou frekvencí na kanálu, který odebírají všichni hráči. To zajišťuje, že jsou všichni hráči synchronizováni.

  • Každý hráč odešle svůj aktuální stav (na základě vstupu uživatele atd.) na jedinečný kanál určený pro daného klienta. Server je přihlášen k odběru a používá tyto informace k udržování aktuálního stavu hry uvedeného výše.

  • Hra má několik herních místností.

  • Hostující hráč má možnosti zahájit a ukončit hru.

  • Obecně platí, že existuje povědomí o skóre každého hráče, jeho pozici, stavu živého/mrtvého, aktualizací pro připojení/opuštění hry atd.

Když se nad tím zamyslím, zdá se, že to je do značné míry to, co by většina her pro více hráčů v reálném čase potřebovala. Takže jsem si myslel, že vytvoření síťového rámce by prospělo vývojářům her, aby mohli rychle přidat funkci pro více hráčů do jakékoli hry. O to užitečnější, když je vytvořen s Ably, protože to znamená, že jej můžete snadno škálovat a máte přístup k mnoha dalším komunikačním funkcím v reálném čase (jako je objednávání zpráv, dostupnost, zaručené doručení zpráv atd.) Takže, tady to je!

Škálovatelný síťový rámec pro hry pro více hráčů

Tento framework slouží jako začátečnická sada, která vám umožňuje přidat funkcionalitu pro více hráčů (která do vaší hry navazuje na strategii klient/server. Poskytuje komunikační rámec, takže vaši hráči mohou komunikovat s centrálním serverem v reálném čase po celou dobu trvání hry. hratelnost.

Umožňuje vám také implementovat funkci „herních místností“ pomocí pracovních vláken Node JS, což je analogie se spoolováním dedikovaných serverů na vyžádání, což vám umožní roztočit více instancí hry, každou se samostatnou skupinou hráčů. Dodává se s ukázkovou aplikací kostry, kde lze tuto herní funkci simulovat. Záměrem je, aby herní vývojáři převzali tento rámec a přidali svou herní logiku, aby si jej přizpůsobili!

Celý projekt s podrobným návodem, jak jej používat, najdete na GitHubu:https://github.com/Srushtika/multiplayer-games-scalable-networking-framework

Pokud máte nějaké dotazy/návrhy atd. Neváhejte napsat e-mail na adresu [email protected] nebo se na mě obraťte přímo na Twitteru, velmi rád si o tom popovídám 😃

Pokud se vám to líbí, označte to hvězdičkou ⭐️ a nezapomeňte se podělit o všechny hry pro více hráčů, které s tímto vytvoříte, rád bych je zkontroloval a dal jim hlášku! 🥇🚀🔥