Obecnie pracuję nad jednoosobową grą zorientowaną na fizykę, w której chciałbym, aby fizyka była symulowana po stronie serwera. Wynika to z faktu, że gra będzie miała tabele wyników, trwały postęp gracza itp. I chcę zapobiec wszelkiego rodzaju oszustwom - w zasadzie czystej architekturze klient-serwer, klient jest „głupi” i wyświetla tylko to, co serwer chce wyświetlać.
Problemem jest jednak to, że w tę grę prawdopodobnie będą grać setki (może tysiące) osób jednocześnie. Dotyczy to mnie, ponieważ najprawdopodobniej zabije moc przetwarzania serwera, jeśli będę musiał robić i utrzymywać setki stanów jednocześnie.
Nie miałbym problemów z przeniesieniem wszystkich symulacji fizyki na stronę klienta, ale wtedy naprawdę potrzebowałbym sposobu na sprawdzenie, czy wynik symulacji klienta jest prawidłowy. Nie wiem jednak, jak to zrobić.
Zastanawiałem się nad uruchomieniem symulacji po stronie serwera, aby sprawdzić, czy klient nadal gra uczciwie, ale naprawdę chcę, aby serwer był jak najmniej obciążony.
Fizyka stanie się mniej więcej tak złożona jak demo GDC 2011 autorstwa Glenna Fiedlera , a może nawet prostsza. Jednak o wiele bardziej zderzające się sztywne ciała będą znajdować się w jednej scenie i wszystkie będą widoczne jednocześnie.
Trudno mi znaleźć odpowiedź na ten konkretny przypadek, ponieważ większość zasobów w sieci - znowu, strona Glenna Fiedlera jest świetna - mówi o fizyce na małą skalę (np. FPS z 30 graczami, takimi jak Halo).
Wszelkie porady, strony internetowe, artykuły itp. Na ten temat będą bardzo mile widziane.
Podsumowanie pytań, na które chciałbym odpowiedzieć:
- Jak wykonalny jest model klient-serwer? Czy moja moc przetwarzania serwera jest uzasadniona i uziemiona?
- Czy można wiarygodnie zweryfikować symulację fizyczną uruchomioną przez klienta na serwerze? Jeśli tak to jak?