Wednesday, February 22, 2006

Pierwszy duży projekt w Ruby

Postanowiłem wstrzymać wszystkie moje prace Open Source, na rzecz jednego projektu, który w moim przekonaniu jest najlepszym projektem w całym moim życiu (życiu krótkim, acz niewzykle ciekawym;) ). Framework (albowiem projekt będzie szkieletem aplikacji) ten ma jako jeden z pierwszych umożliwić szybkie i bezbolesne tworzenie gier MMOG (ang. Massive Multiplayer Online Game) oraz aplikacji RIA (ang. Rich Internet Application) działających w "czasie rzeczywistym" (czyt. automatycznie aktualizowanych po stronie klienta)

Tego rodzaju aplikacje stawiają bardzo duże wymagania przed programistą. Tworzy je się zupełnie inaczej niż standardowe web-aplikacje. Jest tu znacznie więcej technik AJAXowych i DHTMLa (co przy dużej liczbie metod podmieniających fragmenty stron może być niezwykle uciążliwe). Programista musi zaimplementować skomplikowane mechanizmy aktualizacji danych u użytkowników. Użycie standardowych frameworków jest tu zupełnie nie na miejscu, ze względu na zbyt duże obciążenie procesora i pamięci (w tego typu aplikacjach ilość użytkowników naraz korzystających z aplikacji mierzy się w tysiącach). Ponadto trudo jest coś takiego sklastrować. Zadaniem frameworka będzie więc ułatwienie życia programisty poprzez dostarczenie mu gotowych mechanizmów, po to, aby mógł się skupić jedynie na implementacji rozgrywki i zaprojektowaniu GUI.

Projekt jest dość śmiały technologicznie choć nie nazbyt przesadzony. Aby mówić o wersji gotowej do użytku będę musiał stworzyć własny serwer WWW, nieco różniący się od istniejących rozwiązań (obecnie zrobiony w 20%), pseudo obiektową bazę danych (coś na wzór prevlayera, ale trochę z innym zastosowaniem), mechanizm "dirty templates" (moja kodowa nazwa na szablony dynamicznie zmieniające się w czasie) oraz parę innych równie ważnych mechanizmów.

Oczywiście użytą technologią będzie Ruby, ze względu na to, że do takich zastosowań jak prototypowanie język ten nadaje się znakomicie.

W ciągu najbliższych kilku dni dodam projekt, na którymś z portali Open Source (Sourceforge albo RubyForge). Ponadto stworzę jakieś wiki (prawdopodobnie na swik.net) oraz blog (mam własnego VPSa więc nie będzie z tym problemu).