Relacja z 48H maratonu Node Knockout w siedzibie Gadu-Gadu
W miniony weekend setki osób na całym świecie zamiast pójść na imprezę lub odespać męczący tydzień, siedziało dwa dni (i dwie noce) bez przerwy przy swoich laptopach kodując w Node.js gry i programy. Druga edycja Node Knockout już za nami, zobaczmy więc jak to wszystko wyglądało od środka.
Nie głosujcie na tą grę, nie warto. Nie próbujcie też zbyt długo grać, bo i tak Wam się nie uda. Nie patrzcie także na liczniki osób online czy punktów, bo i tak nie zobaczycie poprawnych wartości. Tak na dobrą sprawę mogłem tego nawet nie zgłaszać, ale szkoda byłoby odpuścić po dwóch dniach kodowania. Mimo wszystko tą wersję Dune vs Tron można uznać co najwyżej za wczesną pre-alphę lub pokraczne tech-demo. Chociaż i z tym ciężko, bo specjalnie zostawiłem Express w spokoju i pisałem w czystym Node.js wspierając się jedynie Socket.io. Docelowa wersja będzie korzystać z frameworka aplikacji Express, komunikacji za pomocą Socket.io, jakiejś bazy danych (MongoDB?) i z wykorzystaniem frameworka do tworzenia gier (Mibbu lub ImpactJS).
Pozostałe aplikacjeDwie aplikacje (Logion autorstwa Badasses oraz ExtStats.js autorstwa K:line) logujące statystyki, mój pseudoSnake, kolejna gra z ciekawym pomysłem, która ostatecznie nie została zgłoszona z powodu nieukończenia wszystkich funkcjonalności (a która zostanie podobno dokończona w najbliższym czasie, a więc nie będę zdradzał szczegółów - no, może poza faktem, że zamiast WebSocketów komunikacja będzie realizowana emacsem przez sendmail), a także trzecia gra z interesującą koncepcją porzucona na rzecz niekonwencjonalnego, abstrakcyjnego pomysłu zrealizowanego w ciągu ostatnich kilku godzin: Awesome File Downloader (głosujcie!). Rewolucyjna aplikacja umożliwiająca ściąganie plików z Internetu - wystarczy wkleić link, a cała magia dokona się sama po stronie serwera w Node.js! To zdecydowany faworyt do nagrody Abstrakcja Roku, powala swoją oryginalnością, jest pozytywnie zakręcona i ma ogromne szanse wygrać kategorię Popularity. Mówiłem już, by na nią głosować?
Zasady konkursu
Zadanie polegało na tym, by w czasie 48 godzin w zespole 1-4 osobowym stworzyć działającą aplikację lub grę w oparciu o serwerowy Javascript (najpopularniejszym jest niewątpliwie Node.js i na nim opiera się cały ten konkurs, ale istnieją także inne). Do dyspozycji zawodnicy (ponad 300 zespołów) mieli różnego rodzaju technologie i narzędzia, dzięki którym mogli poradzić sobie z takim zadaniem. Całość kodu trzymana była w repozytoriach GitHub, a organizator zapewniał miejsce na serwerze (kilku usługodawców do wyboru: Joyent, Heroku lub Linode) i skrypty ułatwiające budowanie oraz zarządzanie aplikacją.Miejsce
Siedziba Gadu-Gadu w Warszawie przy ulicy Kamionkowskiej 45 była jedynym oficjalnym miejscem w Polsce potwierdzonym przez organizatorów Node Knockout. Oczywiście można było siedzieć w domu, lub zebrać się nieoficjalnie w dowolnie wybranym miejscu, jednak opcja wspólnego kodowania w siedzibie GG (gdzie już raz się pojawiłem na szkoleniu z tworzenia gier w Javascript) i to w doborowym towarzystwie była bardzo kusząca. Do tego mieliśmy zapewnione jedzenie i picie, a także nocleg. No i dostaliśmy na dzień dobry koszulki z bajeranckim nadrukiem!Ludzie
Zebraliśmy się w kameralnym gronie pięciu osób. Oprócz mnie byli także: Kamil, Kuba, Michał oraz Adam (nazwiska znane redakcji). Nie będzie linków do ich profili - w końcu fanki nie śpią, a nikt nie chce przecież być męczony i dręczony przez napalone szesnastki. Ekipa zacna, przez te 48 godzin nie opuszczał nas dobry humor. Mimo, że każdy zajęty był swoją grą lub aplikacją, to i tak bez problemu pomagaliśmy sobie podczas testów lub rozwiązując co ciekawsze problemy programistyczne.Aplikacje konkursowe
Na początku plan zakładał trzy gry i dwie aplikacje, jednak drugiego dnia trochę się pozmieniało. Wszystko przez to, że tak na dobrą sprawę można się było do tego wszystkiego lepiej przygotować. W moim przypadku poszedłem praktycznie na żywioł - chciałem zainteresować się dokładniej serwerowym Javascriptem wcześniej, ale jakoś nie było czasu lub okazji. Przez to grubo ponad połowę czasu straciłem przebijając się przez przykłady i dokumentację, oraz rozwiązując teoretycznie proste problemy. Gdyby zająć się tym wcześniej, napisać już jakąś prostą testową aplikację, to na pewno na maratonie można by się skupić tylko na konkretach. Skończyło się na tym, że moja gra jest praktycznie niegrywalna.Dune vs Tron
Postanowiłem zająć się czymś bardzo prostym, wejść w temat na zasadzie poznania technologii, a nie stawiania przed sobą niewykonalnych zadań. Plan był prosty: klasyczny Snake w wersji multiplayer z podziałem na dwie drużyny rywalizujące na jednej planszy - tak powstało Dune vs Tron. Gracze zbierają jedzenie z planszy jednocześnie blokując przeciwników i próbują zdobyć więcej punktów niż drużyna przeciwna. Ciężko było dorobić fabułę do tak klasycznej gry jaką jest Snake, więc skończyło się na dwóch tematach zamiast jednego, w których występuje coś, co może działać jak chodząca po planszy glizda. Z tego powodu wężopodobne stwory z Diuny ścigają wirtualne pojazdy z Trona. To była teoria, w praktyce pojawiały się problemy z odpowiednim napisaniem komunikacji serwer-klient, niepotrzebnie także zostawiłem sobie na sam koniec kolizje poszczególnych graczy, przez co gra okazała się być wersją pacyfistyczną: gracze mogli przez siebie przechodzić nie czyniąc sobie żadnej krzywdy. Odrębnym problemem do rozwiązania będzie kwestia lagów, która wydaje się nadzwyczaj istotna przy chociażby trzech graczach i przesyłaniu jednej tablicy z kilkoma elementami. Lagi bywały tak duże, że każdy gracz inaczej widział ruchy przeciwników. Cóż, jest to problem, nad którym trzeba się będzie dłużej zastanowić. Na pewno będę chciał napisać tą grę od początku, tym razem porządnie, ze wszystkimi pierwotnymi założeniami.Nie głosujcie na tą grę, nie warto. Nie próbujcie też zbyt długo grać, bo i tak Wam się nie uda. Nie patrzcie także na liczniki osób online czy punktów, bo i tak nie zobaczycie poprawnych wartości. Tak na dobrą sprawę mogłem tego nawet nie zgłaszać, ale szkoda byłoby odpuścić po dwóch dniach kodowania. Mimo wszystko tą wersję Dune vs Tron można uznać co najwyżej za wczesną pre-alphę lub pokraczne tech-demo. Chociaż i z tym ciężko, bo specjalnie zostawiłem Express w spokoju i pisałem w czystym Node.js wspierając się jedynie Socket.io. Docelowa wersja będzie korzystać z frameworka aplikacji Express, komunikacji za pomocą Socket.io, jakiejś bazy danych (MongoDB?) i z wykorzystaniem frameworka do tworzenia gier (Mibbu lub ImpactJS).
1sasklacz dnia 30.08.2011 o 12:10: