Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [porada] Symulacja czasu rzeczywistego
Forum PHP.pl > Forum > Przedszkole
Mefiuu
Witam Szanownych Forumowiczów.

Zwracam się do Was z prośbą o posunięcie pomysłu, coś jakby algorytm. Nie chodzi mi o konkretne rozwiązanie, bo takiego pewnie nawet byście nie byli w stanie mi podać wink.gif

Chodzi o to, że w ramach sprawdzenia się w PHP chciałem sobie napisać mini gierkę. Coś strategicznego, takiego, że użytkownik ma tam swoją drużynę, ustala taktyki (dajmy na ten przykład walkę między drużynami) no i przypuśćmy że co dwa dni rozgrywane są jakby pojedynki, turnieje. Użytkownik sobie zapisuje taktykę odpowiednio wcześniej żeby była gotowa do obliczenia wyniku walk. No i tu się rodzi moje pytanie. Dajmy na to, że walki rozgrywają się co dwa dni o 19:00. W jaki sposób mogę przebieg walki symulować w czasie rzeczywistym ? Załóżmy też, że każda tura odbywa się dajmy na to 2 minuty po poprzedniej. Myślałem żeby to rozwiązać w ten sposób, że skoro walki są rozgrywane o 19:00, to żeby sobie na serwerze obliczać poszczególne 'mecze' o 24:00 poprzedniego dnia (kiedy jest najmniejszy tłok na grze), wyniki przechowywać w bazie, a poszczególne wpisy opatrywać konkretną godziną (każdy kolejny wpis +3 minuty). No i jak użytkownik by się nieco spóźnił na walkę (np 30 minut) to mógłby zobaczyć relację z 10 tur, ale następne odświeżały by mu się ajaxem. Jednak nie wiem czy coś takiego będzie dobrym rozwiązaniem, bo zakładając (przykładowo!) jakieś nagłe urazy zawodnika, sprzedaż itd. to nie może on wystąpić już w danej potyczce. Nie wiem czy jest jakiś sposób żeby to sobie obliczać 'w locie' całą walkę, do tego nie wiem czy jak się nagle zbierze wielu użytkowników oglądających swoje walki to czy taki system walki w czasie rzeczywistym nie zajedzie serwera. Pierwszy pomysł na chwilę obecną wydaje mi się najbardziej sensowny.

Jakieś Wasze sugestie ? Za wszystkie będę niezmiernie wdzięczny.

Pozdrawiam !
markuz
To zależy czy chcesz graczowi wprowadzić możliwość ingerencji w rozgrywkę podczas jej trwania. Jeżeli nie, użyj CRON-a. Jeżeli tak, wszystko musisz robić w czasie rzeczywistym np. poprzez AJAX.

W przypadku CRON-a jeżeli tury mają odbywać się co 2 minuty wystarczy że stworzysz sobie tabelę np. tura, a polem time który będzie powiększany o 2 minuty z każdą turą począwszy od daty rozpoczęcia rozgrywki. CRON wykona się raz np. o 00:00 jak pisałeś wyżej.

Mefiuu
raczej nie przewiduję ingerencji użytkownika podczas rozgrywki. Odpowiednio wcześniej będzie on ustalał taktykę odnośnie konkretnego wydarzenia i zgodnie z tą taktyką wynik będzie obliczany. Czyli pewnie dobrym rozwiązaniem będzie tak jak myślałem na początku : taktyka ustalana do 24 dnia poprzedniego, po 24 zaczynam sobie obliczać wszystkie rozgrywki i wpisywać je do tabeli (każdy wpis ma pole 'data' które inkrementuję o 2minuty) i jak użytkownik wejdzie np. o godzinie 20:00 a walka toczy się od 19:00 to będzie mógł przejrzeć 30 rozegranych tur, a następne będą wczytywane ajaxem, żeby to wyglądało jakby działo się w aktualnej chwili. Chyba to będzie najrozsądniejsze wyjście.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.