Opracowałem silnik gry w c / c ++ i DirectX.
Mam silnik kafelkowy map, animowane duszki gracza / NPC, rozmawiam z NPC, menu i zmieniającymi się poziomami, ale nie ma gry, po prostu wydaje się pusta.
Rozglądałem się i wciąż słyszę modne odpowiedzi, ale chcę wiedzieć, jak zaimplementować historię w mojej grze.
Niektórzy ludzie powiedzieli, że plik zapisu zawiera flagi regulujące każdą możliwą akcję / stan dostępny w grze, ale to brzmi absurdalnie.
To trochę ambitne, ale staram się uzyskać grę podobną do starszych gier Pokemon / Final Fantasy.
Czy ktoś wie, jak działają te gry lub jaka jest teoria?
Szukałem od dłuższego czasu i naprawdę doceniłbym każdy wkład ludzi.
Możesz użyć zestawu możliwych stanów, w których znajduje się Twoja gra. Twoi NPC i twój świat będą świadomi tych stanów i odpowiednio zareagują / pokażą się. Możesz także zdefiniować zestaw wyzwalaczy, które będą aktywowane przez niektóre akcje / zdarzenia.
Na przykład pokonanie określonego przeciwnika aktywuje wyzwalacz A, który doda stan S do twojego świata, aw stanie S twoja postać zostanie porażona prądem, gdy wyjdzie z legowiska przeciwnika. Lub pada deszcz na zewnątrz. Lub znajdziesz rzadki cukierek. Dostajesz punkt.
Dzięki tym dwóm prostym dodatkom do gry możesz sprawić, że będzie o wiele bardziej „żywy”.
Upewnij się również, że utworzysz bogate tło dla swojego świata, postaci i fabuły oraz upewnij się, że gra jest spójna z tym tłem. Najpierw zaplanuj swoją historię.
Spróbuj także Gamedev
źródło
Jak wspomniano w sftrabbit, jest to idealna aplikacja dla maszyny stanów.
Zasadniczo masz strukturę drzewa. Każdy liść / węzeł zawiera informacje o bieżącym stanie oraz zasady przechodzenia do następnego stanu. Każdy węzeł może zawierać wiele wyjść, w zależności od stopnia złożoności potrzebnego przepływu fabuły / gry.
Dobrym, bardzo luźnym analogiem jest książka Wybierz własną przygodę . Każda strona zawiera tekst opisujący część historii oraz decyzje, które może podjąć gracz. Każda decyzja prowadzi do innej strony. Niektóre strony mogą zawierać linki do wcześniej odwiedzonych stron itp.
Stare tekstowe gry przygodowe, takie jak Zork i Leather Goddesses of Phobos , oraz niesławne gry Sierra * Quest ( SpaceQuest z Rogerem Wilco, woźny kosmiczny jest jednym z moich ulubionych ) używały bardzo prostej wersji tego typu systemu. Każdy pokój na mapie był stanem, z wyjściami połączonymi z innymi stanami lub pokojami. Pozyskanie elementu powoduje ustawienie flagi w globalnym obiekcie stanu. Każdy pokój sprawdzi te flagi, aby ustalić, które postacie lub przedmioty były dostępne w każdym pokoju.
Twoje stany mogą być zaimplementowane jako klasa lub struktura, każda z właściwościami dla:
Lista zasobów - lista wskaźników do grafiki w tle i wszystko, czego potrzebujesz, aby wyświetlić pokój / stan / poziom.
Warunki wejścia - osiągnięcia, które musiały zostać osiągnięte, aby wejść na poziom
Wyjścia - linki do każdego możliwego „następnego” wyjścia. Przykładami tego są północ, południe, wschód i zachód, ale możesz także włączyć drzwi1, teleportację itp. Podczas próby wyjścia z pokoju lub ustalenia, czy wyjście / drzwi są „otwarte”, gra może sprawdzić następny stan aby sprawdzić, czy warunki wejścia zostały spełnione, i zmienić sposób wyświetlania wyjścia na ekranie, lub po prostu nie pozwolić graczowi poruszać się w tym kierunku.
Jeśli chcesz się spodobać, możesz dołączyć inną wersję stanu z różnymi warunkami wejścia, co zmieniłoby sposób prezentacji pokoju graczowi lub działania dostępne w tym pokoju.
Twój ekran startowy, śmierć / gra nad ekranem itp. Mogą być stanami w systemie, podobnie do sposobu poruszania się między ekranami menu. W rzeczywistości, jeśli masz taki system menu, możesz go do tego użyć. Zamiast strzałek w górę / w dół i „enter”, aby poruszać się po menu, szukałeś określonych wydarzeń w obszarze gry, takich jak nadepnięcie na teleportację, zejście z prawej strony ekranu itp.
Z administracyjnego punktu widzenia zastanów się, czy możesz skorzystać z narzędzia administratora, które pozwoliłoby Ci utworzyć maszynę stanu. Dodawaj pokoje do mapy, twórz łącza między nimi, przypisuj zasoby, takie jak obrazy tła itp. Prawdopodobnie jest to przesada przy pierwszej próbie; zbyt łatwo jest zaabsorbować się budowaniem narzędzi administracyjnych i nigdy tak naprawdę nie ukończyć gry. Pamiętaj - nie piszesz oprogramowania pośredniego, ale grę.
Mam nadzieję że to pomoże.
źródło
Kiedyś korzystałem z tego silnika gry o nazwie VERGE . Baw się z tym i zobacz, jak radzi sobie z wydarzeniami, bardzo mi się podoba. To zbyt open source, dzięki czemu można zobaczyć, w jaki sposób jego realizacji, tutaj . Oto krótki opis.
Każda mapa ma różne warstwy. Warstwy graficzne, których może być kilka. Warstwa niedrożności. A potem jest warstwa strefy. Warstwa strefy jest tutaj ważna. *
Każdy kafelek ma numer wskazujący, do której strefy należy. Każdą strefę można aktywować na dwa podstawowe sposoby. Albo strefa jest aktywowana po wejściu do niej gracza, albo ma tak zwaną aktywację sąsiadującą. Aktywacja sąsiednia oznacza, że gdy gracz stoi obok jednego z kafelków strefy i naciska klawisz określony jako klucz aktywacyjny, strefa jest aktywowana.
Kiedy strefa jest aktywowana, wywołuje funkcję ze skryptu. Musisz więc osadzić jakiś język skryptowy. VERGE ma swój własny język o nazwie VergeC, a także pozwala lua. Sam wolę używać Pythona.
Po pokonaniu tej przeszkody masz teraz ogromną moc w skryptowaniu zdarzeń. Masz w pełni rozwinięty język programowania, w którym możesz przechowywać dane i zarządzać nimi, takie jak statystyki graczy, flagi historii itp.
* Istnieje również warstwa Entity. Istoty działają jak ruchome sąsiadujące aktywowane strefy.
źródło