Threelab.
Gra 3D* oparta na three.js, w której gracz ma za zadanie opuścić labirynt. Urozmaiceniem rozgrywki jest to że gracz porusza się po labiryncie równocześnie w różnych miejscach (dzielony ekran).
* Może i grafika jest 3d, ale plansza pozostaje 2d.
Gracz porusza się po labiryncie w wielu instancjach równocześnie. Różnią się one pozycją lub orientacją w przestrzeni.
Jeśli w jakiejś instancji ruch jest niedozwolony (nachodziłby na ścianę), nie jest on tam wykonywany. Ruchy w pozostałych instancjach mogą się odbyć jeśli tylko są dozwolone.
Zadaniem gracza jest opuszczenie planszy. Poza planszą muszą się znaleźć wszystkie instancje. W tym momencie zostanie uruchomiony kolejny poziom.
Gdyby w trakcie rozgrywki dwie instancje osiągnęły taki sam stan (pozycja + orientacja), jedna z nich zostanie usunięta jako duplikat.
Uruchom game.html
w swojej ulubionej, nowoczesnej przeglądarce.
Klawiaturą.
w
,s
- naprzód, do tyłuq
,e
- obrót w lewo, w prawoa
,d
- ruch w lewo, prawo
1
..9
- uruchom dany poziomspacja
- oddalenie widoku
Implementacja objęła głównie:
- wczytanie mapy z postaci tekstowej (
maps.js
) - utworzenie na tej podstawie sceny
- obsługę sterowania, poruszania się (animacja)
- i inne pomniejsze funkcjonalności
Następujące biblioteki zostały użyte w projekcie
- three.js
- THREEx.KeyboardState - do sprawdzania stanu klawiatury
Na kod gry składają się następujące klasy:
MapLoader
- obsługuje pobieranie danych mapyMap
- obsługuje stworzenie mapy z danych oraz pobieranie informacji o mapie (polach), wykrywanie kolizji, ...TransitingProperty
- pomocnicza klasa do przechowywania wartości, na podstawie których będzie dokonywana animacja w czasiePlayerControl
- reprezentacja pojedynczej instancji gracza. Przechowuje pozycję, orientację (jakoTransitingProperty
). Aktualizuje na ich podstawie obiekty sceny (kamerę, światła)PlayerControls
- obsługuje instancjePlayerControl
, pozwala na zbiorowe operacje na nichSceneBuilder
- tworzy scenę na podstawie obiektówMap
orazPlayerControls
. Obejmuje to utworzenie podstawowych obiektów, ustawienie parametrów sceny, jak i utworzenie geometrii mapy- Plik
game.html
zaś składa te elementy razem i odpowiada za logikę gry.