Procedural RPG OT: every action has consequences

Viewing single post

Started by Legend, Apr 20, 2019, 09:02 PM

previous topic - next topic

Legend

Apr 25, 2019, 01:08 AM Last Edit: Apr 25, 2019, 01:22 AM by Legend
I think I've figured out a knowledge system.

A central database of facts exist. These could be written in the internal language to make it pretty straightforward. A creature/human has a list referencing all of the facts that they know. Outdated/wrong facts are dereferenced as new information comes in and older facts can be dereferenced as they are forgotten. Once a fact is known by no one, it can be deleted from the central database.


This system is incredibly powerful and allows facts to truly spread through the game world conversation by conversation. For example say a king dies. That fact goes into the database and then the people near the king can spread it out. One person will tell another person until the whole city knows. Messenger birds and people can be sent to pass the fact to other cities. Traders could also spread the fact. Like a virus, the fact would spread out until almost every person knows.

For simpler facts it is just as useful. If the player sends an NPC companion off on a quest to assassinate someone, then that fact is stored in their memory. The player does not know what the NPC is up to until they learn an updated fact. If the player has no facts mentioning the NPC, then the player doesn't remember the NPC existing.

There are two unsolved problems though. The first is that this does not cover opinions and feelings towards other objects. I still need to have another data system for keeping track of who every NPC likes and dislikes. The second is that this system doesn't support lying. I might not want to support lying since that could be frustrating as a player, but at the same time it does increase the world possibilities. I think initially I will treat everyone as 100% honest. I can change this later on during development.


EDT: I think I will just use this system for likes and dislikes too. A person will remember their actions with another player so I can look through that data to generate an opinion when needed. This is the best approach because then it can work for people that have never met. Say the player does a good dead for someone. A person in another town might hear of it and offer better prices once the player gets there.