Serwer Gry architektura


#1

Witam,
Zaczynam bawić się Unity. Ale mam ambitne plany i chciałbym by moja gra była w 100% multiplayer a singiel to po prostu gra na lokalnym serwerze. I teraz moje pytanie czy zna ktoś jakieś opracowanie na temat tworzenia serwerów gier? Może ktoś na jakieś doświadczenie i się podzieli. Nie chciałbym wynajdywać koła na nowo.

Zastanawiam się jak powinna wyglądać komunikacja czyste TCP, UDP czy może WebSocket?
Jak powinna wyglądać zasada działania takiego serwera. Wiem, że z reguły takie serwery działają na zasadzie ticków. Czyli np taki 32tickowy serwer wykonuje wszystkie obliczenia 32razy na sekundę. Ale czy zawsze wysyłać cały stan gry te 32 razy na sekundę? Czy tylko zmiany? Co z desynchronizacją jak ją wykryć i ogarnąć?
Fajnie jakby gracz dostawał informację na temat najbliższego otoczenia ale czy to nie będzie wymagać większej liczby obliczeń niż korzyści?

Jakby ktoś miał jakąś wiedzę lub informację na ten temat to będę wdzięczny.


#2

Weź sobie jakikolwiek projekt ‘prywatnego’ serwera gry MMO i przeanalizuj kod. Github jest pełen gotowych, dobrych i sprawdzonych rozwiązań. Ja zaczynałem od Lineage 2 (projekt L2J).


#3

Ten primer prawdopodobnie odpowie na większość Twoich pytań:

https://gafferongames.com/post/introduction_to_networked_physics/

Przedstawione jest później kilka technik synchronizacji.

Artykuł tłumaczy na przykładzie fizyki, ale niech Cię to nie przestraszy, bo zasada jest identyczna z jakąkolwiek inną symulacją w czasie rzeczywistym, nawet bez skomplikowanej fizyki.


#4

frozenshade właśnie chodziło mi o to co wart podejrzeć. W google natrafiałem głownie na wyniki jak postawić serwer jakiejś konkretnej gry. Dzięki, przeanalizuję lineage i to co podrzucił Hypersomnia


#5

Zależy od gry. Nie zawsze serwery opierają się na takich tickach. Zależy co chcesz zrobić


#6

@Hypersomnia kurde, fajny link. Aż sam to przeczytam, przyda się, bo za miesiąc zaczynam prace jako programista sieciowy gier :wink: Wiedzy nigdy za dużo :wink:


#7

Może się przyda dotyczy fizyki Unity.
https://developer.oculus.com/blog/networked-physics-in-virtual-reality-networking-a-stack-of-cubes-with-unity-and-physx/