2010-10-06 4 views
6

Stworzyłem prostą grę karcianą w Ruby on Rails + ajax z jQuery do animacji. Działa dobrze, i chciałem stworzyć wersję dla wielu graczy. Wygląda na to, że nie jest tak prosty, jak myślałem. Próbowałem też całkowicie przenieść grę do JS w tag Canvas. Jest to możliwe dla mnie i mogłem znacznie ulepszyć animację, ale wciąż nie wiem, jak dodać do niej część dla wielu graczy :( Czy ktoś próbował już używać websockets z szynami? Jest to całkiem nowa, fantazyjna nowa technologia jest to godny trzymać się z szyn w ogóle? Chciałabym zacząć od zera w pamięci flash, ale nie mam żadnej wiedzy w to :( Każda rada lub poradnik będzie pomocnyProsta gra wieloosobowa w Ruby on Rails?

Dzięki

Odpowiedz

2

Jeśli w końcu używasz websockets:

Websockets można zaimplementować z Railsami, ale n Wszystkie środowiska hostingowe ją obsługują. Oto kilka linków, które mogą pomóc Ci zacząć:

http://m.onkey.org/websockets-made-easy-with-cramp (wymaga Thin lub Rainbows!)

http://www.pusherapp.com/ (jeśli używasz Heroku, ten jest dobrym rozwiązaniem)

Dla client- Side, niektóre wtyczki javascript mają flashback, jeśli przeglądarka nie obsługuje websockets. Zamiast implementować całą grę w pamięci flash, możesz lepiej skorzystać z takiej wtyczki. (. Twój serwer będzie nadal wymagają wsparcia websocket) Oto jedna opcja (wymaga jQuery):

https://github.com/ffdead/jquery-graceful-websocket

Jak stwierdził WebSockets są bardzo nowe, aw rezultacie będzie dość eksperymentalny. Jeśli wszystko inne zawiedzie, istnieje więcej popularnych rozwiązań AJAX. Jest możliwe, że w przypadku zwykłej gry karcianej można po prostu okresowo wysyłać zapytania do serwera przy użyciu żądań AJAX, dopóki inny gracz nie wykona ruchu. Prawdopodobnie zwiększy to obciążenie serwera, więc myślę, że to zależy od Twoich potrzeb.

Edit:

Patrz także: Juggernaut

+1

Udało mi się uzyskać pełną wdzięku degradację z sieci do sondowania za pomocą Juggernauta (poszukaj go na githubie). Jeśli możesz hostować serwer juggernaut, chciałbym się z nim zapoznać. – manu

+0

Tak, Juggernaut jest zdecydowanie świetną opcją. Nie wiedziałem o tym w grudniu. – Smudge

2

Jaka jest najprostsza rzecz, jaką można zrobić, aby rozwiązać problemy użytkownika? W tym przypadku jest to prawdopodobnie "chcę być powiadomiony, gdy osoba, przeciwko której gram, wykona ruch". Czas rzeczywisty nie jest wymagany, tylko w ciągu sekundy lub dwóch użytkownik jest powiadamiany.

W takim przypadku byłoby najłatwiej zachować swoją aplikację Rails, jak jest, i używać jQuery „poll” nowych „ruchów” co kilka sekund przy użyciu jQuery i wtyczki takie jak http://plugins.jquery.com/project/smartupdater

mówię to jako osoba, która obecnie buduje aplikację, która w dużym stopniu wykorzystuje Websockets. Chociaż jest to z zasady wspaniałe, będziemy budować wersję Flash jako awarię dla przeglądarek, które jej nie obsługują.