sobota, 4 marca 2017

Eksploracja - poruszanie się - część 1.

Cześć Wam!

Po opisanym wcześniej kryzysie udało się wrócić na z projektem na właściwe tory. Na GitHubie możecie już zobaczyć pierwsze skrypty, a w tym poście napiszę co nie co o ich powstaniu.

Na początek warto byłoby zadbać, by gracz miał jakąś postać i mógł ją widzieć. 

Zacznijmy więc od kamery. Standardowo wykorzystuje się kamerę pierwszo- lub trzecioosobową (Trochę zbaczając z tematu - jak miałaby wyglądać kamera drugoosobowa? Tak teoretycznie? Może poteoretyzuję sobie i popuszczę wodze fantazji w innej notce ;) ) Tak więc, którą wybrać?

Głównymi aktywnościami, na których ma się skupić gracz w Przywoływaczach są taktyczne walki, kolekcjonowanie i rozwijanie jednostek oraz eksploracja stworzonego świata. Priorytetem nie jest możliwe maksymalne wczucie się w postać, zobaczenie wydarzeń jej oczami, co może nam zagwarantować kamera pierwszoosobowa. W tym przypadku widok z zewnątrz powinien się sprawdzić lepiej.

Na tym nie koniec decyzji. Gdzie powinna być ulokowana kamera? Czy powinna podążać za postacią gracza, czy być od niej niezależna? Czy możemy ją obracać, przybliżać itd?

Kolejna sprawa - dobrze by było dać graczom możliwość sterowania postacią. Na początek poruszanie się. Tu też należy zastanowić się nad kilkoma kwestiami.

Czy będziemy kontrolować postać bezpośrednio, np. WSADem lub gałką kontrolera, czy może wskazywać jej, gdzie ma się udać kliknięciem myszy na mapie? Czy te dwa rozwiązania się wykluczają? Czy powinien móc biegać, skakać, kucać?

I dalej - w przypadku sterowania bezpośredniego - czy "przód" jest tam, gdzie zwrócona jest postać, czy kamera? Czy powinna obracać się płynnie czy natychmiast? Czy powinna zatrzymywać się w miejscu?

Niby najprostsze rzeczy, zwyczajne chodzenie, a tu już tyle decyzji do podjęcia!

W Przywoływaczach, w chwili powstawania tej notki, wygląda to tak:


Kamera znajduje się w tym samym obiekcie co postać gracza, oddalona o dziesięć metrów, zawsze skierowana w jego stronę. Jest umieszczona na dwóch pustych obiektach, jednym odpowiedzialnym za obracanie jej w poziomie i drugim za obracanie w pionie. Pozwala to uniknąć dziwnych przekręceń świata podczas poruszania kamerą w różne strony - horyzont zawsze pozostanie poziomy. Kamera obraca się niezależnie od postaci gracza.

Postać gracza może poruszać się w dowolnym kierunku. Przód jest skierowany zgodnie z widokiem kamery. Postać obraca się płynnie, a zatrzymuje praktycznie w miejscu.

Co będzie się działo dalej z poruszaniem?

Chcę dodać możliwość obsługi kamery przy pomocy klawiatury i myszki -  w tej chwili obraca się ją przy pomocy prawej gałki pada. Chcę dodać ograniczenia do ruchu kamery, żeby nie wchodziła w ściany czy pod podłogę. Chcę też dodać możliwość przybliżania i oddalania kamery. 

Chcę dodać możliwość biegania, skakania, kucania i skradania dla postaci. Te elementy znacznie urozmaicą nam eksplorowanie świata i pozwolą na dodanie bardziej różnorodnych wyzwań do tego elementu rozgrywki.

Chcę też zrefaktoryzować kod, by był możliwie najbardziej prosty, czytelny i łatwy do dalszego rozwijania. 

To wszystko ważne rzeczy, jednak nie są konieczne na tym etapie powstawania gry. Teraz najcenniejszy będzie dla nas działający prototyp, dzięki któremu zdobędziemy nową wiedzę, a ta pozwoli nam lepiej podejmować bardziej szczegółowe decyzje. 

Może się okazać, że część z już istniejących rzeczy trzeba będzie wyrzucić do kosza i zrobić zupełnie inaczej. Gdybyśmy już na początku poświęcili dużo wysiłku na dopieszczenie wszystkich mechanizmów, to byłoby tej pracy znacznie bardziej szkoda i moglibyśmy chcieć ją, wbrew dobru rozgrywki, zostawić niezmienioną.

Dzięki za lekturę i proszę o feedback - czy taka forma opisu powstających funkcjonalności Wam pasuje? Czy może jest zbyt mało / za bardzo szczegółowa? Będę wdzięczny za wszelkie uwagi!

Trzymajcie się ciepło!

Brak komentarzy:

Prześlij komentarz