Autor Wątek: Pomysł: Questy komponowane przez graczy  (Przeczytany 2229 razy)

Offline Vault 11th

  • Użytkownik

  • +5
# Kwiecień 18, 2016, 20:48:52
http://grzegorzgolda.com/how-to-create-infinite-quest-system-for-rpg-game/
Po angielsku, bo bloga w tym języku prowadzę, niemniej może kogoś zainteresuje.

System presented here can be used as an addition to classic NPC-oriented quests, but I think it would work best in a rogue-like game, as it fits nicely into randomly generated content.

The basic idea is this: in order to earn experience and advance a character, allow the players to compose their own quests.

Let’s assume that there are no NPC quests whatsoever. When a hero is interacting with NPCs, she is gathering information about what they want, desire, fear, etc. They can of course ask the hero to help them, but that doesn’t result in formal entry in the quest system log.

Instead, player has a separate “Quest Composer” screen, where he can create (though not delete) new quests, and each quest comprises goals.
Goals can be anything – ‘become king’, ‘kill Antonio’, ‘get 1000 gold’, ‘become owner of a farm’, etc. Whenever the player adds a goal, game engine computes an experience reward appropriate for goal difficulty w/r to current game state and hero statistics. Goals can have some additonal conditions attached, like ‘in 1 hour’, ‘spending not more than 500 gold’, and so on.

However, what makes it more interesting is composition. Goals can be arranged into logical trees with ‘or’ and ‘and’ nodes.
Nodes affect likeliness of quest completion – i.e. it’s harder to complete two goals connected with ‘and’ than only one, and it’s easier to complete a quest composed of two ‘or’-connected goals than both of them considered as single. Engine takes this into account when computing rewards – multiplying rewards for ‘and’ nodes, dividing for ‘or’ nodes.



Exact algorithms for computation may not be so obvious and will require extensive testing. It’s also not very obvious if it will actually be a fun to play with such a system, but I guess answer to this question requires a good prototype.

Engine should generate some goals according to the game context, i.e. information gathered from the NPCs. Solving their problems should be rewarded as in any classic RPG, but players could also add some constraints and connected goals to create more challenge for themselves and increase rewards.

I think that it can be some solution to the problem of engaging content generation. Shifting a burden of creating story to the player’s responsibilites may at first be hard, I guess – gamers are not very used to such a system – but on the other hand it introduces new dimension in gameplay and even more possibilities for meta-game (like, “let’s see who can create and complete the hardest quest!”).

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline matheavyk

  • Użytkownik

# Kwiecień 19, 2016, 02:12:59
Mnie trochę zainteresowałeś :).

Gdybym miał implementować ten system, to prawdopodobnie położyłbym duży nacisk na element hazardowy tego rozwiązania. Czyli sugerowałbym graczowi, że może obstawić "<and> zrobię to w 5 minut" i dostać więcej expa, ale niech pamięta, że ponosi większe ryzyko porażki.
Można też dodać coś takiego, że nie wszystkie "bloczki" są dostępne lub są dostępne, ale dają mało expa lub są trudne. Jeśli masz wyskillowany handel, to możesz obstawiać korzystniejsze bloczki typu "zużyję tylko 1000 golda", a jak masz wyskillowaną obronę tarczą, to możesz wstawiać np. "sparuję przy tym 90% ataków przeciwników".

Offline smerf123

  • Użytkownik
    • Projektowanie gier

# Kwiecień 19, 2016, 09:18:05
Takie rozwiązanie wydaje mi się trochę sztuczne.
Bardziej naturalnym wydaje mi się zasygnalizowanie przez grę pewnych problemów postaci niezależnej i gra powinna udostępnić graczowi kilka metod rozwiązania tego problemu.. tak jak to miało miejsce w falloucie2.
W rogalikach taki system też powinien się sprawdzać o ile zadbamy o odpowiednie zasady budowy świata.
Czy bardziej naturalne jest dla gracza wysłuchanie postaci i zrozumienie jej pragnień, czy dodatkowo ułożenie sobie torów z których nie będzie mógł zejść?
Nieskończoność tego systemu też jest dyskusyjna, gdyż pierw musisz stworzyć odpowiedni content, którego będziesz używał i o ile będziesz mógł go używać w kółko, to z czasem gracze dostrzegą schematy. Przy okazji.. ile razy można zabijać tego Antonino...

Offline Vault 11th

  • Użytkownik

# Kwiecień 19, 2016, 14:01:59
Content jest właściwie niepotrzebny, jeśli postaci nie są z szablonu i mają wystarczającą ilość pojęć, którymi operują. Wydaje mi się nawet - ale nie mogę tego na razie udowodnić - że wystarczy, iż każdy NPC będzie miał swoją wewnętrzną (ważoną i dynamiczną, ofc.) listę 'chcę' i 'nie chcę', aby historie tworzyły się same.

Np. załóżmy, że Antonio nie chce stracić swojego kupieckiego biznesu. Kiedy w mieście pojawia się nowy kupiec Rodrigo, Antonio może stać się źródłem dość ogólnego celu: pozbyć się Rodrigo.

Rodrigo może mieć swoje 'chcę' i 'nie chcę'. Wiadomo, że prawdopodobnie nie chce umrzeć, więc zawsze zostają klasyczne groźby, ale jeśli nie chce umrzeć bardzo mocno, być może chodzi z obstawą.
Może bardzo chcieć, by jego córka dobrze wyszła za mąż - może graczowi uda się zaaranżować takie małżeństwo w zamian za odejście Rodrigo z miasta.
Może bardzo bać się bobrów i możesz to wykorzystać. Etc. etc. The point is: milion możliwych dróg.

Z jednej strony, gra mogłaby tylko wyświetlać jako quest 'pozbyć się Rodrigo, dla: Antonio'. Ale wtedy właściwie nagroda byłaby jedna, bo wydaje mi się, że gra nie miałaby realnej możliwości wyceny, które akcje jakie podjąłeś były rzeczywiście istotne dla rozwiązania problemu. W tym celu jest quest composer - bo gracz zasadniczo nie ma trudności z zaplanowaniem serii zdarzeń i zauważeniem, jak są ze sobą powiązane...

Oczywiście, to bardzo teoretyczne gadanie, dopóki nie zrobię jakiegoś prototypu, to mogę sobie tylko gdybać, być może pomysł w ogóle nie nadawałby się do grania.

Offline smerf123

  • Użytkownik
    • Projektowanie gier

# Kwiecień 19, 2016, 14:12:02
Jak opowiedziałeś o tym teraz ma to jakoś więcej sensu :)
Jednak ogólny cel w logu gracza nie determinuje drogi jaką ją osiągniesz. Wystarczy dodać odpowiednie warunki (niekoniecznie widoczne dla gracza), które o ile zostaną spełnione będą modyfikować nagrodę. Na przykład dla questa pozbądź się Rodrigo takimi warunkami mogą być: Rodrigo  jest martwy, biznes Rodrigo upadł, rodrigo wyprowadził się z rodziną, Rodrigo złamał nogę pod prysznicem i nie może prowadzić biznesu, Rodrigo oszalał po zjedzenie grzybków.
Ciągle problemem chyba jest opracowanie contentu w taki sposób aby to wszystko miało sens. Jest to jedynie przerzucenie warunków, które dasz graczowi aby sam ułożył questa w odmęty kodu gry i danie graczowi dostępu do ich wszystkich zamiast tylko do tego, które sam wybierze. Przecież te warunki i tak w którymś miejscu muszą zostać określone...

Offline Vault 11th

  • Użytkownik

# Kwiecień 19, 2016, 14:32:42
No właśnie to jest kluczowy element potrzebny do realizacji pomysłu: zaprojektować engine w taki sposób, żeby ilość rzeczy do zaprogramowania była minimalna.

Jaki zestaw może być minimalny? 3 rodzaje istotnych obiektów:
1) Przedmiot
2) Postać
3) Grupa
+ baza relacji między nimi, relacja to po prostu słowo w zdaniu ID1 REL ID2.
Silnik jest świadomy bazy relacji w każdym punkcie czasu i może śledzić zmiany.

Być może wystarczyłoby w kompozytorze pozwolić wybierać ID z listy wszystkich znanych bohaterowi obiektów i REL z listy wszystkich słów określających relacje, w postaci text fielda z typeaheadem.

Offline hashedone

  • Użytkownik

# Kwiecień 20, 2016, 11:30:26
Content i tak musisz stworzyć. Choćby jako możliwości tego co może się stać. Każdą z tych możliwości trzeba nazwać. Możliwością jest na przykład "śmierć", "utrata biznesu", "złamanie nogi" (tylko z Twojego poprzedniego posta). Do tego musisz oprogramować pary [przyczyna -> skutek], bo o ile dla Ciebie może być oczywiste że [złamana noga -> nie można prowadzić biznesu], o tyle rzecz jest bardziej skomplikowana (bo jeszcze może zatrudnić zastępce, bo może stać go na dobrego chirurga który mu usztywni dobrze nogę) - to wszystko też jest contentem. Do tego najpewniej wagi dla tych czynników dla NPCów chciałbyś generować losowo (żeby było nieprzewidywalnie) - ok, ale musisz oprogramować jakieś ograniczenia, na przykład "moja śmierć" zawsze powinna być raczej bardzo w stronę "nie chce" - chyba że NPC ma problemy z depresją, za to "śmierć X" jest zależna od relacji między NPCami (pamiętaj, że jeśli NPC Y chce "śmierć X" na 90% i jednocześnie "wzbogacenie się X" na 70% to jest to bardzo dziwne - ale jeśli na przykład X ma coś na sumieniu, a wzbogacenie się przyciągnie uwagę straży, to nawet możliwe). Tobie się wydaje, ze to rozwiązanie minimalizuje content, ja Ci mówię, że wymaga dużo, dużo więcej contentu niż tradycyjne podejście.

Offline Vault 11th

  • Użytkownik

# Kwiecień 20, 2016, 13:14:39
Jeśli chodzi o nazwanie możliwości, to jasne, jakiś content trzeba stworzyć. Raz.
Ale nie trzeba się rozdrabniać aż tak, jak piszesz - przede wszystkim związki przyczynowo-skutkowe da się wydedukować automatycznie z odpowiedniego opisu.

Podobnie z 'duszą' NPCa i wagami - biorąc pod uwagę, że ludzie w realu raczej kurczowo trzymają się życia, też użyłbym raczej jakiegoś algorytmu ewolucyjnego do stworzenia zestawu osobników (z jakimś warunkiem gwarantującym, że będą 'problemogenni'. ;)

Ofc. to tylko hipoteza, jak znajdę czas, to postaram się ją udowodnić. Mam (mniej, więcej) plan, jak to wszystko zrobić, ale nie mam czasu. ;(

Offline Xenox93

  • Użytkownik

# Kwiecień 20, 2016, 14:45:15
Z tego co wyczytałem, jest to pierwsze podejście/pierwszy krok w stronę rozwiniętego AI - NPC.
Z twojego opisu wynika, że idziesz w dobrą stronę, jeśli chodzi o przeniesienie behawiorystyki do gier. I masz rację, że nie musisz każdej mikro przyczyny programować na sztywno. Owszem potrzebny będzie Ci pewien opis/nadanie cech postaciom, ale gdy to się zrobi reszta należy do algorytmów.

Wydaje mi się że wystarczy zaprogramować cechy charakteru/osobowości, które każdy z nas ma. Do tego losowanie chorób jak i chorób psychicznych, które odgrywają również kluczową rolę w decyzjach postaci. Jeśli jest naukowe badanie, które podaje w % na jakie choroby może cierpieć postać to sprawa uproszczona ;)

Na pewno nie musisz skupiać się na synonimach, przez które każdy z nas myśli, że to nieskończona praca. Do tego odpada sporo fachowych terminologii, czyli pozostaje Ci tylko te pozostałe potrzebne do egzystencji.

Z pewnością sporo pracy czeka Ciebie przy przeniesieniu zachowań psychologicznych do gry. Ale gdy Ci się to uda przynajmniej w 30% to gra na pewno nie będzie statyczna.

Tak więc, wszystko zmierza w dobrym kierunku oraz mam nadzieję, że pomysł będzie dalej rozwijany ^^
« Ostatnia zmiana: Kwiecień 20, 2016, 15:22:10 wysłana przez Xenox93 »