Daj Się Poznać 2017 - start!

Postanowiłem w tym roku wziąć udział w konkursie "Daj Się Poznać", który startuje dzisiaj. A zatem, słowem wstępu:

O co chodzi?

W skrócie, konkurs polega na rozwijaniu przez 10 tygodni projektu programistycznego i pisaniu o nim na blogu. Od dawna chciałem tchnąć w ten blog trochę życia, jednak brakowało mi motywacji. Kiedy usłyszałem o tym konkursie, pomyślałem, że to może być coś, co pomoże mi się przełamać i w końcu dać mi trochę materiału do pisania. Pomysłów na projekty leżących odłogiem trochę mam, więc wybrałem jeden z nich i postanowiłem się zarejestrować. Zatem - do dzieła!

Projekt

Moim pierwszym pomysłem na projekt konkursowy było pchnięcie w końcu do przodu generatora proceduralnego wszechświata (który opisywałem w kilku notkach jako "Projekt Universe"). Obawiałem się jednak, że w 10 tygodni nie zdołam stworzyć czegoś wartego uwagi. Wtedy moją uwagę zwrócił jeden z innych projektów, który kiedyś zacząłem, ale którego nigdy nie dokończyłem - Ktulu Online.

Należałoby najpierw wyjaśnić, czym jest Ktulu (i nie, nie chodzi o bardzo spolszczone Cthulhu) - jest to mianowicie gra towarzyska podobna do Mafii, ale daleko bardziej rozwinięta. Dla osób, które nigdy nie grały w Mafię, przedstawiam skrót zasad:

Kilkanaście osób siada w kółku i jedna z nich przyjmuje rolę prowadzącego grę. Następnie wśród graczy rozlosowywana jest przynależność do frakcji - zwykłych obywateli, mafii lub policji. Przynależność do poszczególnych frakcji jest sprawą tajną i gracze nie powinni ujawniać jej innym, z wyjątkiem szczególnych sytuacji, o których za chwilę. Jedyną osobą z pełną świadomością stanu gry jest prowadzący.

Gra toczy się w cyklu dni i nocy. W dzień wszyscy gracze dyskutują i usiłują wykryć, kto wśród nich należy do mafii. W toku rozmowy oskarżają się nawzajem i starają się bronić. Pod koniec dnia odbywa się głosowanie, w którym wybrana zostaje jedna osoba, którą miasto skazuje na śmierć - ta osoba zostaje wyeliminowana z gry, a jej tożsamość zostaje ujawniona. Obywatele wraz z policją dążą do wyeliminowania w ten sposób mafii. Mafia natomiast stara się wybić wszystkich pozostałych, lecz działa głównie w nocy. Gdy zapada noc, gracze zamykają oczy, a następnie prowadzący pozwala "obudzić się" mafii. W ten sposób jej członkowie poznają siebie nawzajem, a następnie gestami wybierają osobę, którą zabiją. Ofiara, podobnie jak po dziennym głosowaniu, odpada z gry i jej tożsamość jest ujawniona. Po mafii swoją turę ma policja - może ona wybrać jedną osobę, której tożsamość pozna. Dzięki tej wiedzy będzie mogła nakierowywać praworządnych obywateli w dzień. Gra trwa, dopóki któraś z frakcji (mafia lub praworządni) nie osiągnie swojego celu.

Gra jest bardzo prosta, ale niesamowicie wciągająca i dająca zabawę na długie godziny. Ktulu działa na tej samej podstawie, jednak jest o wiele bardziej skomplikowane. Jako że pełny opis zasad zająłby bardzo wiele miejsca, podam tylko link do źródła: klik
[Drobna zmiana: postanowiłem jednak zamieścić opis w trzeciej notce].

Ktulu Online

Przeniesienie Ktulu w świat wirtualny jest pomysłem, który przewija się chyba od powstania gry. Podjąłem się próby realizacji tego zadania z kolegą, gdy obaj byliśmy jeszcze w liceum. Poczyniliśmy pewne postępy, jednak mój udział został mocno przyhamowany, gdy dysk twardy w moim komputerze uległ awarii (rada: róbcie backupy!). Kolega ciągnął projekt jeszcze jakiś czas sam, rozwinął go nawet do punktu, w którym dało się rozgrywać bardzo ograniczone partie, ale potem chyba wszystko umarło (tak po prawdzie, to nie wiem dokładnie, jak ta historia się skończyła - kontakt z kolegą mi się urwał).

Pomysł powracał do mnie kilka razy w ciągu ostatnich lat, jednak nigdy nie zebrałem w sobie dość motywacji, żeby go zrealizować. Mam nadzieję, że ten konkurs ostatecznie mi to umożliwi ;)

W kwestii technologii, w której zamierzam tworzyć projekt - wybrałem Rusta. Główny powód jest taki, że kiedy poznałem ten język, niemal natychmiast stał się moim ulubionym - łączy niski poziom i szybkość C++ z wygodą języków dynamicznych i bezpieczeństwem języków zarządzanych. Drugi, choć mniej ważny dla mnie powód to ten, że kod pisany w Ruście jest praktycznie z automatu przenośny. Abstrakcje dostępne w tym języku bardzo dobrze izolują programistę od szczegółów systemu, na którym uruchamiany jest program, dzięki czemu tworzenie kodu działającego na wszystkich popularnych platformach nie wymaga wysiłku praktycznie wcale.

Podsumowując, z przyjemnością zawiadamiam, że swój start w konkursie uważam za dokonany i zapraszam do śledzenia postępów projektu :)