2012-06-02 16 views
5

Chcę spróbować napisać prostą grę dla sieci web, wykorzystując websockets i technologie HTML-5, i myślę o tym przy pomocy Play framework i Scala. Jednak rodzaj gry, którą chcę stworzyć, to taki, w którym przetrwał świat, w którym rzeczy dzieją się same, a nie tylko jako konsekwencje działania gracza, co oznacza, że ​​nie pasuje on do bezpaństwowej filozofii Play. Próbowałem uruchomić oddzielny wątek w aplikacji Play, który działałby jak zwykły, stały serwer gier ze światem, i wydaje się działać. Jak możesz to skomentować?Zagraj w grę jako serwer gier

  • Czy będę musiał stawić czoła poważnym problemom z tym podejściem?
  • Czy istnieje lepsze rozwiązanie i konfiguracja? Co ppl zwykle używają do takich rzeczy poza serwerami gry niezależnymi (nie-http)?
  • Czy możesz podzielić się interesującym doświadczeniem, biorąc pod uwagę podobny problem?
+5

Myślę, że będzie idealnie pasować. Bezstanowe w tym sensie oznacza brak stanu w sesji użytkownika między żądaniami. Ale oczywiście masz stan, wytrwale w bazie danych lub przejściowo w pamięci podręcznej aktorów Akka. Ten ostatni jest na twojej drodze, IMHO ;-) –

+0

Świetny komentarz, właściwie pasowałby do odpowiedzi, szczególnie patrząc na działanie))) Dzięki za zachętę, przejdę do stosu Typesafe. – noncom

+0

Powodzenia ;-) Daj nam znać, jak to działa w grupie Google! –

Odpowiedz

4

Nie zadzieraj się uporczywego z „zawsze uruchomiony wątek aktualizowania informacji”.

W większości przypadków takie gry zapisują tylko czas ostatniej aktualizacji i obliczają nowe wartości w oparciu o czas, jaki upłynął od ostatniej do ostatniej aktualizacji. Może to zrobić dowolna struktura sieciowa lub technologia. Nawet jeśli jestem wielkim fanem/uzależnionym playframework, nie sądzę, że sam argument jest wystarczający.

Ale jeśli trzeba:

  • dobrą integrację WebSockets,
  • obsługi intensywnego ruchu,
  • masywny współbieżność bez potężnych serwerów

wtedy rzeczywiście Playframework może być twój wybór.

+0

Rozumiem, co mówisz - o obliczaniu stanu od czasu. Ale powinna istnieć duża liczba obiektów, które można zmieniać, a podejście funkcjonalne jest nieefektywne obliczeniowo ... Cała sprawa będzie wspierana przez MongoDB, ale dosłownie oznacza to - "z kopii zapasowej" - chcę go użyć tylko * * dla dziennych migawek i przypadku zamknięcia serwera. Myślę, że Play to zrobi. Z powodzeniem wdrożyłem rozwiązanie sprawdzające koncepcję. Teraz jest to tylko kwestia wychowania. – noncom

+0

Powodzenia w tym przypadku;) –