Gra, sockety, wysyłanie informacji pomiędzy graczami

0

Witam mam 2 luźne pytania:
[1]W przypadku pisania gry (bomberman, na 2 osoby) łączenie, przesyłanie danych pomiędzy graczami powinienem wykonywać na osobnym wątku? Czy da się jakoś 'wpleść' do jednego wątka?
[2]Losowanie itemów które pojawiają się na mapie powinienem wykonywać po stronie hosta i przesyłać te dane do 2 gracza? Jest jakaś inna droga nie używając 'serwera' do którego się łącza Ci gracze?

0
  1. da się wszystko do jednego wątku wpakować, ale to raczej brzydkie.
  2. w sumie to pierdoła, ale host może zacząć kombinować w kodzie gry. Są algorytmy, które pozwalają na grupowe wybranie liczby pseudolosowej - osobiście bym tego użył.
1

Ad 1: asynchroniczne sockety.
Ad 2: jeśli nie zależy Ci na bezpieczeństwie i jakiejś podstawowej ochronie przed oszustami, to obaj gracze mogą być równorzędni, tj. losować coś i komunikować o pojawieniu się itemu drugiej stronie. Mógłbyś też wziąć jakiś stabilny generator liczb pseudolosowych (gwarantujący że na obu maszynach przy tym samym seedzie będą generowane takie same wartości), inicjować go po obu stronach takim samym seedem i losować sobie itemy. Jednak cały proces musi być 100% deterministyczny, nie może być tak że moment/ilość/jakikolwiek inny parametr wiążący się z losowaniem itemu będzie zależny od lokalnej maszyny a nie stanu gry - wtedy nastąpi desynchronizacja. Ogólnie rozwiązanie dosyć karkołomne i bugogenne, ale czasem się je stosuje, gdy trzeba losować dużo rzeczy których nie opłaca się przesyłać przez sieć. Najprostsze rozwiązanie to klasyczny układ serwer -> klient, gdzie za wszystko odpowiada serwer. Serwerem niech będzie jeden z graczy - dla gracza (w sensie gameplayu) to i tak będzie niezauważalne. W końcu i tak zawsze to któryś gracz (klient) podłącza się do innego (serwer), nawet jeśli jest ich tylko dwóch.

0

Dziękuje za pomoc ;)

0

Ma tanking men

1 użytkowników online, w tym zalogowanych: 0, gości: 1