Gra online, obciążenie - czy Railsy się nadają?

Hej.

Mam pewien dylemat. Otóż muszę wybrać (mam dowolną rękę) technologię, w której będę pisać grę online (w przeglądarce). Jak zwykle w takich chwilach w głowie programisty pojawiają się liczby, statystyki. Jaki serwer, ile użytkowników, requesty na sekundę itp itd. Jednakże chciałbym usłyszeć od osób, które już postawiły niejeden serwis, które mogły obserwować jak sobie radzą railsy w zależności od obciążeń itp.

Moje założenia są takie, że jeden serwer (co przekłada się na jeden świat) gry będzie obsługiwać około 10k użytkowników. Oczywiście może być trochę mniej, trochę więcej. Chodzi oczywiście o ilość użytkowników w ogóle, a nie jednocześnie online :).

Serwer oczywiście musiałby być odpowiednio dobry, więc tu kolejne pytanie. Jaki? Jakieś parametry i cena?

Najbardziej mnie interesuje Wasze zdanie, czy jest sens zabierać się do tego w railsach? Czy wybrać jedno słuszne rozwiązanie, czyli php? Wiem, że większość gierek online jest właśnie w php, ale ja chciałbym uciec od niego jak najdalej… :). Jedyne co mnie trochę martwi to ciągle ta, na każdym kroku wypominana, wydajność.

Na koniec. Nie oczekuję odpowiedzi: Tak/Nie. Jednak chciałbym znaleźć potwierdzenie/zanegowanie, że railsy (ruby) nie są aż tak wolne.

Jakie jest Wasze zdanie?

Z tego co kiedyś czytałem na http://glu.ttono.us/articles/2007/04/15/on-twitter-rails-and-community pamiętam, że w Pythonie byłoby łatwiej, bo kluczowym problemem jest połączenie z różnymi bazami danych.

Poza tym, Twitter udowadnia, że się da :wink:

Wydaje mi sie ze pytanie jest zle postawione, bo to tak jakbys chcial zalozyc firme przewozowa i pytal sie czy warto kupic ciezarowke czy dwa busy, nikt ci nie da odpowiedzi, sam musisz podjac decyzje i jakiej bys nie podjal wiaze sie to z jakimis plusami i minusami.

Plusy w rails to calkiem niezly ORM ktory udostepnia calkiem niezly system cache (memcached), duch MVC, duza ilosc bibliotek, bardzo elastyczny jezyk OOP, ogromna roznica w ilosci kodu w porownaniu z innymi jezykami, bedzie go po prostu drastycznie mniej.

Minusy to apetyt na ram przy duzej ilosci instancji mongrel lub fastcgi, jesli faktycznie potrzebujesz 1 servera z okolo 10 tysiacami uzytkownikow to pewnie bedziesz mial srednio przez caly dzien online okolo 200-300 osob a wiec napewno bedziesz potrzebowal okolo 10-20 instancji mongrela, przy dobrze napisane aplikacji 1 instancja bedzie wyrabiac sie w tempie srednio 50 requestow na sekunde wiec 1 server z 2 rdzeniowym procesorem i 2 GB ramu wystarczy napewno ale na same railsy, baze juz powinines wtedy stawiac odzielnie. (uprzedzam ze to sa liczby poparte jedynie moim doswiadczeniem w pracy z railsami, wszystko zalezy od tego jak piszesz aplikacje, jak duze masz bazy danych i z jakiej maszyny korzystach)

Wydaje mi sie ze na polu takich aplikacji rails i php maja podobne wymagania jesli chodzi o sprzet z naciskiem na ciut wieksze dla rails, roznica jest dopiero przy malych aplikacjach… jesli faktycznie masz wolna reke w wyborze technologi wybierz rails i jesli faktycznie gra przyciagnie taka ilosc uzytkownikow to watpie aby koszt 50-60 euro miesiecznie za dedykowany server byl jakims problemem.

Pak, dziękuję za ten opis. Ja właśnie wiem co jest plusem Rubiego/Railsów i właśnie dlatego chciałbym tej technologii użyć. Twierdzisz, że za 50-60 euro można mieć serwer o takich parametrach? Mógłbym prosić o jakieś linki do firm mających taką ofertę?

http://www.hetzner.de/ tanie dedyki
http://www.webperoni.de/ tanie root vps’y

O hetznerze duzo powiedziec nie moge ale slyszalem duzo dobrego, spora pula systemow operacyjncyh, niezly sprzet za przystepna cene.

Natomiast ja sam korzystam z webperoni place okolo 55 euro za 3 miesiace poprzez paypal, dostaje faktury w jezyku niemiecki, ale maile w niemieckim i angielskim, panel administracyjny konta jest w jezyki niemiecki (do zarzadzania fakturami, statystykami, dokupywanie ip etc.) natomiast cala reszta to standardowy vps, za te cene jestem zadowolony :slight_smile: wiecej raczje nie da sie uzyskac.

Jeśli okaże się, że zamiast 10,000 użytkowników masz 100,000 albo 1,000,000 warto zastanowić się nad wykorzystaniem Erlang’a

Powstało nawet kilka projektów odnośnie wykorzystania Erlanga do pisania serwerów gier ale wygląda na to, że umarły śmiercią naturalną (brak zainteresowania ?)

Jest nawet prezentacja na ten temat.

Pozostaje “jedynie” znaleźć dobrych programistów gotowych do podjęcia wyzwania :wink:

10000 użytkowników bynajmniej nie jest limitem. Chodzi o pewne ograniczenie na 1 serwer (praktyka oczywiście okaże, ile będzie przypadać użytkowników na jeden serwer :)). Potem już tylko kwestia dostawiania nowych serwerów/światów gry.

Cześć
Jeśli jest już mowa o grach online to mam pytanie (pewnie lamerskie). Jestem jeszcze niedoświadczony w aplikacjach internetowych ale zastanawiam się nad taką rzeczą, jak w ruby on rails przechwytuje się zdarzenia np. myszki ?? Jak osiągnąć funkcjonalność np. apletów javy ?? Nie do końca mam pojęcie jak takie rzeczy można zrobić w ruby on rails. Chciałbym też napisać grę online ale bez obsługi zdarzeń to trochę sobie tego nie wyobrażam.
Poradźcie coś.

No pytanie faktycznie troche lamerskie :slight_smile: Proponuje zapoznac sie z zasada funkcjonowania aplikacji internetowych. Bardzo szybki skrot:

  1. W przegladarce wpisujesz URL
  2. Idzie zadanie do serwera, by Tobie wyswietlic stronke
  3. Serwer na podstawie URL, generuje dynamiczna tresc i serwuje Twojej przegladarce strone HTML (strona zawiera zadania pobrania obrazkow, skryptow javascript i stylow CSS)
  4. Twoja przegladarka pokazuje zadana strone

Zatem RubyOnRails to framework dzialajacy po stronie serwera, ktory generuje stronki HTML. Do wszelkich interaktywnych dzialan na linii strona www ↔ user wykorzystuje sie np. javascript.

Nie wiem za bardzo o jakim przechwytywaniu zdarzen mowisz, ale z tego co rozumiem to mozesz to zrobic w javascript.

Co to znaczy funkcjonalnosc apletow Javy?

No właśnie chodziło mu zapewne o to, żeby dało się przechwytywać wszystkie zdarzenia myszki, czy też rysowanie jakiejś grafiki. Gry, w które gra się poprzez przeglądarkę bez pomocy apletów Javy, funkcjonują w zasadzie w inny sposób. Nie ma tam miejsca na jakąś wielką interaktywność czy inne cuda. Masz to co daje Ci html (+css) i javascript a więc formularze, dosyć prostą grafikę i interakcję. Dlatego gry tego typu to przeważnie strategiczne, managery i tym podobne.