Witajcie, nazywam się Kamil i zajmuje się designem oraz programowaniem. Opowiadam wam dziś o zapachu.

Polowanie to podstawowy koncept w naszej grze i chcieliśmy oprzeć go na podstawowych zmysłach. Wzrok i słuch są podstawowymi zmysłami które pierwsze przychodzą na myśl, natomiast chciałem mieć w grze również węch. To nie jest coś często spotykanego w grach, ale wydaje się integralną częścią polowania (bardziej po stronie zwierząt).

Świetnie, dodajmy więc zmysł węchu, ale… od czego zacząć? Siadłem do (e)książek, zacząłem od zaznajamiania się z tematem. Przeczytałem kilka poradników dla myśliwych, obejrzałem kilka interesujących wykładów o wykrywaniu zapachów i przeczytałem wiele artykułów o nerwach węchowych, rozprzestrzenianiu się cząstek zapachów, dyfuzji, adwekcji, schematach pogodowych i o wietrze. Z całą tą wiedzą mogą wam teraz powiedzieć, że nasza gra nie będzie zbyt realistyczna, ale zrobię co mogę, żeby była najfajniejszą jaką możemy stworzyć 🙂
Sadly I do not, I try though!
A więc zapach sam w sobie był mniejszym problemem, jego rozchodzenie się to inna kwestia. Pierwszą przeszkodą była dyfuzja molekularna, czyli pozornie losowy ruch cząsteczek. Ten ruch jest strasznie POWOLNY, cząsteczki zapachu potrafią pokonać około 10 cm w ciągu godziny – biedne wilkołaki nie spostrzegą się co je napadło. Z drugiej strony mamy adwekcję, czyli unoszenie przez masy płynu, gdzie cząsteczki zapachu przenoszone są przez powietrze i tajemnicze siły termodynamiki nim zarządzające – czyli generalnie wiatr. Jest to lepsza metoda, ale nie pozwoli ona rozprzestrzenić zapachu równomiernie po całej planszy, a ta “tajemnicza” część nie będzie występowała w ogóle w grze.

Postanowiłem poprawić trochę parametry dyfuzji, żeby zapach wyrównał swoje stężenie na sąsiadujących heksach dużo szybciej. Dodałem też symulację wiatru dla całej planszy (więc niestety nie będzie lokalnych efektów Venturiego czy wirów powietrznych). Dodałem również efekt dyspersji dla zapachu, żeby tracił on stopniowo część swojego stężenia. Parę parametrów później i możemy teraz łatwo symulować różne środowiska. Na przykład spokojną, bezwietrzną noc, gdzie zapach powoli pochłonie całą planszę, albo deszczową noc, gdzie zapach zostanie szybko rozproszony przez spadającą wodę lub nocny przesmyk z ciągle wiejącym w jednym kierunku wiatrem, przepychającym zapachy głównie w jednym kierunku. Zgadza się, świat jest spowity wieczną ciemnością, stąd każda plansza jest w nocy 🙂

A wiec teraz możemy już przenosić zapachy, ale czym jest “zapach”? Generalnie są to cząsteczki chemiczne unoszące się w powietrzu lub opadające na ziemię. Możemy powąchać grunt, wsysając takie spoczywające cząsteczki lub wessać je z powietrza, żeby dotarły do naszych nerwów węchowych. Chemiczny skład cząstki jest później tłumaczony na zapach jak go potocznie rozumiemy. W naszej grze nie ma potrzeby na tak duże skomplikowanie, więc uprościłem to do ilości cząstek zapachu na heks. Tą ilość później rozpraszamy po mapie, żeby każdy mógł sobie powąchać.

I to zaprowadziło nas do wykrywania zapachów w naszym systemie. Wilki mają całkiem zawalisty zmysł węchu, potrafią wyczuć już kilka cząsteczek i jest to ich główny zmysł podczas polowania. Nasze wilkołaki mocno na nich bazują, więc i one będą polowały korzystając głównie z powonienia, tylko z bardzo blisko korzystając ze wzroku.

Możemy ustawić minimalną ilość cząsteczek jaką każde stworzenie może wykryć, jeżeli heks zawiera więcej cząstek, wtedy stworzenie staje się świadome źródła zapachu, nie jego pozycji, tylko że gdzieś on się znajduje. Tutaj nasze mechaniki żegnają się z realizmem. Nie ma sposobu wykrywania zapachu zdalnie (przynajmniej nie dla zwierząt). Trzeba te cząsteczki umieścić w jamie nosowej, a żeby to zrobić, trzeba być w miejscu gdzie te cząsteczki się znajdują. A więc jeśli jednostka nie poruszy się na dany heks, nie będzie wiedziała jakie zapachy się tam znajdują, tak przynajmniej wyglądałoby to w rzeczywistości. To jest tak na prawdę oddzielny problem z Łowcami, ale wrócę do niego później. Pozwoliliśmy przeciwnikom być świadomymi zapachów na przylegających heksach, to pozwoliłoby im podążać za tropem i taki był plan dla systemu ruchu opartego o staminę. Gdy przenieśliśmy się na ruch oparty o punkty akcji, musieliśmy pozwolić przeciwnikom na… no na oszukiwanie generalnie :). Będą teraz świadomi stężenia zapachów na wszystkich heksach planszy, ale podążać będą tylko za najwyższymi stężeniami. Z perspektywy gracza nic się nie zmieni, wciąż będzie mógł przeciwników oszukać i zaskoczyć.

Cóż za wspaniałe przejście do generowania zapachów w naszym systemie. Możemy ustawić ile cząsteczek dowolny obiekt ma generować co turę. Możemy też określić dodatkowe generowanie zapachu przy zużywaniu staminy czy poruszaniu się. Wszystko po to, żeby Łowcy zawsze zostawiali za sobą smakowity ślad dla wilkołaków. Suma zapachów Łowców będzie traktowana jako po prostu zapach stronnictwa ludzi. Więc stawianie swoich Łowców blisko siebie na dłuższy czas, spowoduje powstanie dużego stężenia ich zapachu na małej przestrzeni, które ściągnie okoliczne wilkołaki. Rozproszenie Łowców obniży średnie stężenie zapachu stronnictwa na jeden heks, ale niefortunny Łowca może wciąż zostać wykryty i pozbawiony bezpośredniego wsparcia. Na pewno będziemy znacznie modyfikowali ten system w czasie produkcji bo daje nam on dużo miejsca na wprowadzenie fajnych umiejętności jak przynęty, wyposażenie maskujące zapach czy pułapki.

Niestety to zadziała tylko dla przeciwników, nie chcielibyśmy, żeby gracze mogli oszukiwać w ten sam sposób. Tak jak wspomniałem wcześniej, zapach nie może być wykryty zdalnie, więc gracz nie będzie świadom zapachów poza bezpośrednim otoczeniem swoich Łowców. Dodaliśmy pewnego rodzaju mapę-zapachu stronnictwa ludzi, żebyśmy wiedzieli gdzie może być on wykryty i jaką ścieżką przeciwnicy mogą za nim podążyć. Wprowadzenie tego samego dla zapachów przeciwników, pozwoliłoby graczowi poznać dokładne pozycje wszystkich przeciwników na planszy. Natomiast ograniczanie tego tylko do bezpośredniego otoczenie Łowców nie będzie zbyt pomocne. Pracujemy jeszcze nad tym, ale możemy być zmuszeni zostawić to tak jak jest. Jeśli macie jakieś pomysły, którymi chcielibyście się podzielić, nie krepujcie się, chętnie was wysłucham 🙂

Dołącz do naszego Discorda, by podzielić się z nami swoimi przemyśleniami!

Share: