From f785079bda2999254ce3bb764390660b6d5239fa Mon Sep 17 00:00:00 2001 From: austin Date: Wed, 1 Jan 2025 20:18:19 -0500 Subject: [PATCH] notes --- docs/game/agent/goals.txt | 26 +++++++ docs/game/character_description.txt | 33 +++++++++ docs/game/character_motivations.md | 71 +++++++++++++++++++ docs/game/mechanics_goals.txt | 9 +++ docs/justification/player_motivations.txt | 39 ++++++++++ .../sim/character/Character.java | 8 +++ .../{ => sim}/schedule/Event.java | 2 +- .../{ => sim}/schedule/EventScheduler.java | 2 +- .../{ => sim}/schedule/Time.java | 2 +- 9 files changed, 189 insertions(+), 3 deletions(-) create mode 100644 docs/game/agent/goals.txt create mode 100644 docs/game/character_description.txt create mode 100644 docs/game/character_motivations.md create mode 100644 docs/game/mechanics_goals.txt create mode 100644 docs/justification/player_motivations.txt create mode 100644 src/main/java/org/studiorailgun/sim/character/Character.java rename src/main/java/org/studiorailgun/{ => sim}/schedule/Event.java (96%) rename src/main/java/org/studiorailgun/{ => sim}/schedule/EventScheduler.java (96%) rename src/main/java/org/studiorailgun/{ => sim}/schedule/Time.java (98%) diff --git a/docs/game/agent/goals.txt b/docs/game/agent/goals.txt new file mode 100644 index 0000000..41b48c2 --- /dev/null +++ b/docs/game/agent/goals.txt @@ -0,0 +1,26 @@ + +For each action that the agent can take in the game space, need to program a motivator from the hierarchy of needs that would cause the agent to take that action + + + +Have a set of pre-scripted behavior trees for the ai to actualize each level of the hierarchy of needs +Assuming the player doesn't abuse them (ie order the ai to place all its food outside of view while it's not hungry), this could work decently well on not triggering the uncanny valley + + + +Alternative approach is to have an "action chain generator" +Gets a requirement from the needs heirarchy, then solves for an action tree that it needs to take to satisfy that need + + + + + +Osmosis cup example +Lets say that you can absorb water via osmosis while holding a cup +The first order motivator would be to pick up the cup to satisfy the thirst meter +Why would the first agent to pick up the cup of water ever place it back down? + +Could evaluate other agent's view of the first one. If the first one thinks other agents will threaten it, drop the cup + + + diff --git a/docs/game/character_description.txt b/docs/game/character_description.txt new file mode 100644 index 0000000..c174f87 --- /dev/null +++ b/docs/game/character_description.txt @@ -0,0 +1,33 @@ + + +What are the aspects of a character that we want to be available to the simulation? + - Physical appearance + - General body shape + - Height + - Weight + - Musculature + - Hair + - Style + - Color + - Eyes + - Color + - Mental state + - Physical markers + - Pain + - Pleasure + - Perception (Knowledge of things observable) + - Beliefs (Knowledge of things not observable) + - Desires + - Intentions (A commitment to an actionable goal) + - Emotional state (Valence-Arousal-Dominance model) + - Valence + - Arousal + - Dominance + - Memory (Stored knowledge of previous state of the world) + + + + + + + diff --git a/docs/game/character_motivations.md b/docs/game/character_motivations.md new file mode 100644 index 0000000..c2439d4 --- /dev/null +++ b/docs/game/character_motivations.md @@ -0,0 +1,71 @@ + + +Essentially just going to use Maslow's hierarchy for the moment + +Physiological + - Food + - Water + - Shelter + - Clothing + - Sleep + +Security + - Health + - Employment + - Property + - Social Stability + +Belonging + - Friendship + - Family + - Intimacy + +Self Esteem + - Confidence + - Achievement + - Respect + - Desire for uniqueness + +Actualization + - Morality + - Creativity + - Meaning + - Potential + + + + +# Evaluate ascending the pyramid to determine the AI's current goal. As an entity in the world, these will manifest themselves as +## Physiological +### Food & Water +A bar that the ai tries to keep above a thresholdA bar that the ai tries to keep above a threshold +### Shelter +A boolean that the ai tries to set to true +### Clothing +A boolean that the ai tries to set to true +### Sleep +A bar that the ai tries to keep above a threshold + +## Security +### Health +A bar that the ai tries to keep above a threshold +### Employment +A boolean that the ai tries to set to true +### Property +TBD +### Social Stability +TBD + +## Belonging +### Friendship +A set that the ai tries to keep populated +### Family +A set that the ai tries to keep populated +### Intimacy +A value that the ai tries to keep populated + +## Self Esteem +### Confidence +A bar that the ai tries to keep above a threshold + + diff --git a/docs/game/mechanics_goals.txt b/docs/game/mechanics_goals.txt new file mode 100644 index 0000000..af2aaaf --- /dev/null +++ b/docs/game/mechanics_goals.txt @@ -0,0 +1,9 @@ + + + + - Characters that you can talk to in the world + - Move into different spaces in the world + - Interact with items in the world + - Combat + + diff --git a/docs/justification/player_motivations.txt b/docs/justification/player_motivations.txt new file mode 100644 index 0000000..281386b --- /dev/null +++ b/docs/justification/player_motivations.txt @@ -0,0 +1,39 @@ + +What motivations should I want to encourage with this game? + + - Exploration, if the world is interesting, the player will be naturally curious and that could lead to the player interacting with characters to ask them about the world. + Functionally, when this is happening, the characters are largely question-and-answer chatbots. + + - Creativity, the player will try to change aspects of the world to represent a creative vision. + This can manifest as building structures, clothing characters, etc + + + + + + + +What player actions do we want the ai to be able to support? + + - Learn about the world + Should be able to query for any piece of information in the game space + + - Inform a character about the world + + - Instruct a character to perform an action + Essentially we want the player to be able to instruct the ai to perform any action that the game space will allow + + - Receive instructions from a character + + + + + + + + + + + + + diff --git a/src/main/java/org/studiorailgun/sim/character/Character.java b/src/main/java/org/studiorailgun/sim/character/Character.java new file mode 100644 index 0000000..0251fa2 --- /dev/null +++ b/src/main/java/org/studiorailgun/sim/character/Character.java @@ -0,0 +1,8 @@ +package org.studiorailgun.sim.character; + +/** + * A reasoning entity being simulated in the game world + */ +public class Character { + +} diff --git a/src/main/java/org/studiorailgun/schedule/Event.java b/src/main/java/org/studiorailgun/sim/schedule/Event.java similarity index 96% rename from src/main/java/org/studiorailgun/schedule/Event.java rename to src/main/java/org/studiorailgun/sim/schedule/Event.java index 4b6b96f..62eda20 100644 --- a/src/main/java/org/studiorailgun/schedule/Event.java +++ b/src/main/java/org/studiorailgun/sim/schedule/Event.java @@ -1,4 +1,4 @@ -package org.studiorailgun.schedule; +package org.studiorailgun.sim.schedule; import java.util.LinkedList; diff --git a/src/main/java/org/studiorailgun/schedule/EventScheduler.java b/src/main/java/org/studiorailgun/sim/schedule/EventScheduler.java similarity index 96% rename from src/main/java/org/studiorailgun/schedule/EventScheduler.java rename to src/main/java/org/studiorailgun/sim/schedule/EventScheduler.java index 45e444c..5c1a6b8 100644 --- a/src/main/java/org/studiorailgun/schedule/EventScheduler.java +++ b/src/main/java/org/studiorailgun/sim/schedule/EventScheduler.java @@ -1,4 +1,4 @@ -package org.studiorailgun.schedule; +package org.studiorailgun.sim.schedule; import java.util.PriorityQueue; diff --git a/src/main/java/org/studiorailgun/schedule/Time.java b/src/main/java/org/studiorailgun/sim/schedule/Time.java similarity index 98% rename from src/main/java/org/studiorailgun/schedule/Time.java rename to src/main/java/org/studiorailgun/sim/schedule/Time.java index a366289..e38e0f3 100644 --- a/src/main/java/org/studiorailgun/schedule/Time.java +++ b/src/main/java/org/studiorailgun/sim/schedule/Time.java @@ -1,4 +1,4 @@ -package org.studiorailgun.schedule; +package org.studiorailgun.sim.schedule; /** * A time in the simulation timeline