Tekstowa gra przeglądarkowa (klon)

Nie wiem, czy to dobry dział, bo temat nie dotyczy istniejącego projektu a dopiero planów na jego stworzenie.

Od jakiegoś czasu pracuję nad swoim prywatnym projektem, którym jest (ambitne :P) zadanie stworzenia klona przeglądarkowej gry MMORPG - Cantr II. Projekt powstaje w PHP, kod źródłowy jest dostępny na githubie a działające demo jest dostępne online.

Ale ponieważ uczę się railsów i chciałbym to robić na jakimś ambitniejszym projekcie, niż kolejny blog albo klon twittera, to sobie pomyślałem, że taki klon będzie w sam raz. Ale z drugiej strony patrząc po tym czasie, od kiedy to robię, to jest to spore wyzwanie dla jednej osoby, do tego niezbyt doświadczonej.

Dlatego jeśli ktoś nie ma żadnego swojego prywatnego projektu a ma trochę wolnego czasu i jakieś doświadczenie (niekoniecznie rails, może być js, albo grafika czy html/css) to zapraszam do współpracy.

Oryginał wygląda prosto, bo jest to gra tekstowa, nie ma żadnej grafiki, animacji itp. Ale jeśli ktoś się zagłębi w temat, to okazuje się, że jest to całkiem złożony produkt, z mnóstwem funkcjonalności (wystarczy przejrzeć http://wiki.cantr.net). Ja w swoim klonie oprócz typowych technologii jak PHP, MySQL, HTML/CSS/JS używam m.in.:

  • technologię push (serwer node.js + socket.io, który wysyła do podłączonych klientów komunikaty),
  • Redis - część danych - te bardziej “dynamiczne” jest przechowywanych w bazie redisowej,
  • demony systemowe - jeden w Pythonie do odliczania czasu w grze i kilka w php - początkowo był to System_Daemon z PEAR’a a teraz jego implementacja dla Kohany (Kohana_Minion_Daemon) - demony na bieżąco uaktualniają np. stan projektów, podróży, głód (postać, tak jak w oryginale umiera po jakimś czasie bez jedzenia).

Można powiedzieć, że obecny projekt w PHP to taki “proof of concept”. Trochę rzeczy po drodze się zmieniało, dlatego jest trochę bałaganu w kodzie i w samym projekcie. Np. początkowo chciałem wszystko zrobić na Redisie, potem przeniosłem część danych na MySQL a teraz chciałbym w ogóle rozdzielić model na dwie warstwy - logikę osobno i repozytorium osobno. Chcę też mocniej się skupić na TDD/BDD (w pehapie testowanie oczywiście jest możliwe, ale w praktyce słabo mi to wychodzi - wolę napisać jakąś funkcjonalność i testować ją “live” niż pisać najpierw testy).

Oczywiście wszystkie założenia projektowe i wybór technologii są do przedyskutowania (o ile będzie z kim :P), przy założeniu, że tworzony będzie funkcjonalny klon istniejącego produktu (ew. z drobnymi ulepszeniami) oraz że wiodącą technologią będzie RoR.
Serwer (na testing/staging/production) mam, więc nie ma problemu.

Namiary:
http://github.com/magnax/Simtr - repo projektu w PHP
http://github.com/magnax/fabularr - repo nowego projektu (czysta, domyślna apka, tylko ‘rails new’ i commit)
http://fabular.pl - działające (zazwyczaj) demo
email: magnax@gmail.com
skype: magnus_nox

Tyle na razie, jeszcze raz zapraszam chętnych do pomocy i do dyskusji tutaj także.

Jak daleko można się z tym projektem? Jestem pracownik programowanie Cantr. Twój projekt brzmi interesująco, i chciałbym wiedzieć, co sukces trzeba było, choć myślę, że byłoby lepiej, żeby pomóc samej gry.