przez smoq2 w 01 Paź 2012, 23:42
@ trojan - Tak już mega mega mega upraszczając sprawę, to zamierzam połączyć bardzo szybką i dynamiczną walkę razem z animacjami chowania się. Wszystko ma właśnie dziać się bardzo szybko, i mieć nawet takie bajerki:
Załóżmy, że mamy postawioną skrzynie w taki sposób, że każda z jej ścian jest skierowana odpowiednio na północ, wschód, południe, zachód. My stoimy ze 20m od południowej ścianki skrzyni a stalker, który nas atakuje (idzie złowrogo w naszą stronę strzelając seriami) akuratnie jest zaraz obok skrzyni. Posyłamy w jego stronę kulkę, obrywa w nogę i już nie ma takiego zapału, wskakuje za skrzynie odgrywając odpowiednią animację (po otrzymaniu obrażeń przechodzi tymczasowo w tryb chowania się). Naturalnie najlepszą stroną skrzyni do schowania się jest północna (bo przecież po bokach dalej będziemy go widzieć). No ale my nie chcemy czekać aż stalker nabierze znowu chęci do walki i staramy się obejść skrzynie od zachodniej strony. Jednak TFWowy stalker nie będzie taki durny, i tak szybko jak wyjdziemy z pola kąta przypisanego do północnej ścianki, stalker na nowo oceni, która ścianka najlepiej go osłoni (w tym przypadku wschodnia) i szybko przekuca za właśnie tą ściankę. Mówiąc technicznie, stalkerzy będą nie tylko szukali osłony, ale też ją dynamicznie modyfikowali w zależności od obiektu za którym się chowają.
Ze strony kodowania... Obecnie używamy (chyba wszystkie mody) funkcji silnikowej, która najzwyczajniej zwraca nam level vertex, który po jakichś tam obliczeniach jest uznawany za najlepsze miejsce osłony przed wrogiem. Działa jak działa... Na dalekie odległości jest całkiem ok, ale czasami ustawia NPC tuż przed wrogiem, bo akurat przy wrogu stoi sobie drzewo. W każdym razie działa "jednopunktowo". Ja planuje stworzyć funkcje, która nie będzie zwracała jednego punktu do osłony, a zbioru punktów. Takim zbiorem punktów będzie np. nasza skrzynia. Moja funkcja nie będzie wyszukiwała punktu za skrzynią, a całej skrzyni, czyli 4 punkty osłony, każdy o określonym kącie działania.
Zbieraniny nie będzie dużo, bo sobie stworzę toola do zbierania tych danych. Np. w taki sposób:
Hotkey'e w Main Menu:
O - Otwórz zapisywanie nowego zbioru Z
Później podchodzę do zachodniej ściany takiej skrzyni, ustawiam kamerę na wschód i naciskam, któryś z tych klawiszy:
C - zapisz punkt osłony do zbioru Z o kącie 30*
V - zapisz punkt osłony do zbioru Z o kącie 45*
B - zapisz punkt osłony do zbioru Z o kącie 60*
N - zapisz punkt osłony do zbioru Z o kącie 90*
M - zapisz punkt osłony do zbioru Z o kącie 180* (dla ścian budynków)
Powtarzam dla wszystkich ścian skrzyni i naciskam:
P - Zapisz zbiór do pliku ze zbiorami obecnej mapy
Oczywiście będzie trzeba dorobić jakiś indykator wizualny, który będzie wyświetlał wszystkie punktu podczas tworzenia zbioru.
Proste? Proste...
P.S. Nasze AI już w obecnym stadium ma różne typy zachowań w zależności od trzymanej przez stalkera broni. Klasa stalkera tylko lekko modyfikuje te zachowania. Czyli jeżeli zabierzemy snajperowi karabin snajperski i damy go szturmowcowi, to szturmowiec zacznie zachowywać się tak samo jak snajper, tylko nie będzie strzelał aż tak celnie.
Co do paniki, to jak najbardziej można go napisać od nowa. Bułka z masłem. Pytanie tylko po co? Stalkerzy zamiast pilnować się oddziału rozbiegną się po całej mapie i jeszcze jakieś błędy będą, bo stalker będzie albo zbyt daleko od swojego dowódcy albo od przypisanego punktu kontrolnego (smarta).


-
Za ten post smoq2 otrzymał następujące punkty reputacji:
duty.