Tetris dev diary #1

W związku z tym, że do końca #DSP2017 został niecały miesiąc chciałbym się podzielić z Tobą wynikami mojego małego sub-projektu, który ostatnio napisałem. Na podsumowanie całego konkursu przyjdzie jeszcze czas, ale nie chciałbym go zakończyć nie mając na koncie zrealizowanego projektu. Tak więc jest, oto i ona: moja wariacja na temat klasycznego Tetrisa, napisana z wykorzystaniem Phasera, ES6 i webpacka.

Sam projekt można oczywiście jeszcze dopracować, zarówno pod względem samej architektury kodu, dorzucenia odpowiednich assetów do gry, systemu kontroli na urządzeniach mobilnych, kończąc na dodatkowych elementach urozmaicających rozgrywkę. Jednak główna mechanika gry jest już zrobiona – klocki są generowane losowo, mają odpowiednie kolizje zarówno z planszą jak i z innymi klockami, kiedy jest to możliwe można zmienić orientację klocka. Jak na około tydzień pracy to jestem zadowolony z osiągniętego efektu.

Szczególnie jestem zadowolony z konfiguracji projektu. Dzięki temu, że przy “TheKoder” spędziłem trochę czasu nad rozpracowaniem webpacka teraz cały setup poszedł mi dużo sprawniej, bez nadmiarowych elementów w samym configu zaciemniających jego czytelność. Ponadto dzięki napisaniu kilku linijek kodu w package.json mam prosty automat do wysyłania plików na GitHub Pages. Mała rzecz a cieszy i przyspiesza pracę.

Mniej udane rzeczy w tym przypadku to między innymi architektura systemu. Generalnie uważam, że nie jest źle, ale jak wiadomo zawsze może być lepiej. O ile elementy interfejsu użytkownika, stany gry i prefaby są od siebie w większości dobrze oddzielone, tak w jednym przypadku działa to trochę gorzej. Już na pierwszy rzut oka patrząc na kod w Shape.js i Play.js widać że mają one za dużo odpowiedzialności. Wszystko przez brakującą klasę Board. To dobra nauczka na przyszłość – zanim napiszesz jakąś linijkę kodu przemyśl to 10 razy i jeżeli czujesz, że coś można zrefactorować w tym momencie to nie odkładaj tego na później, najlepszy moment jest właśnie teraz a im później tym ciężej. Brakuje również testów ale jako projekt typu ‘proof of concept’, który chciałem napisać w miarę szybko nie były one dla mnie priorytetem.

Podsumowując – napisanie klasycznej gry jaką jest Tetris było dla mnie dobrą zabawą. Bawiłem się na tyle dobrze, że wszystko wskazuję na to, że będę dalej rozwijał ten projekt, który początkowo miał być tylko małym wyzwaniem 🙂
Kod gry jest dostępny tutaj, a małe demo tutaj.

Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *