start adding engine docs
This commit is contained in:
parent
90912d2bfe
commit
1b84edfd50
|
@ -0,0 +1,69 @@
|
|||
# TaleWeave AI Engine
|
||||
|
||||
## Contents
|
||||
|
||||
- [TaleWeave AI Engine](#taleweave-ai-engine)
|
||||
- [Contents](#contents)
|
||||
- [What is a system?](#what-is-a-system)
|
||||
- [What kinds of entities exist in the world?](#what-kinds-of-entities-exist-in-the-world)
|
||||
- [What are actions?](#what-are-actions)
|
||||
- [What are attributes?](#what-are-attributes)
|
||||
- [What are rules?](#what-are-rules)
|
||||
- [What are triggers?](#what-are-triggers)
|
||||
- [What are events?](#what-are-events)
|
||||
|
||||
## What is a system?
|
||||
|
||||
In TaleWeave AI, a system refers to a predefined logical process that governs the interaction and behavior of entities
|
||||
within the game world. These systems are essential for modifying the attributes of entities based on the actions taken
|
||||
and the rules applied during gameplay. By integrating systems, TaleWeave AI facilitates dynamic and responsive
|
||||
environments where each action has a potential impact, reflecting changes in the game's state and influencing subsequent
|
||||
player decisions. Systems are designed to be modular and scalable, allowing developers to customize or extend the game
|
||||
mechanics to suit different types of adventures and narrative styles.
|
||||
|
||||
## What kinds of entities exist in the world?
|
||||
|
||||
In the immersive world of TaleWeave AI, entities are categorized into Rooms, Actors, and Items, each playing a vital
|
||||
role in crafting the narrative and gameplay experience. Rooms serve as the fundamental spatial units where the story
|
||||
unfolds, each containing various Actors and potentially multiple Items. Actors, representing characters in the game,
|
||||
possess inventories that hold Items, which are objects that can be interacted with or utilized by the Actors. Currently,
|
||||
TaleWeave AI does not support Containers—Items that can hold other Items—but the structure is designed to support
|
||||
complex interactions within and between these entity types, laying the groundwork for a deeply interactive environment.
|
||||
|
||||
## What are actions?
|
||||
|
||||
Actions in TaleWeave AI are defined as Python functions that enable both human players and AI-driven characters to
|
||||
interact with the game world. These actions, which include behaviors like taking an item or moving between rooms, are
|
||||
integral to advancing the gameplay and affecting the state of the world. Each actor is permitted one action per round,
|
||||
which can significantly alter the attributes of entities, reposition entities between rooms or actors, or modify the
|
||||
game world by adding or removing entities. This framework ensures that every turn is meaningful and that players'
|
||||
decisions have direct consequences on the game's progression and outcome.
|
||||
|
||||
## What are attributes?
|
||||
|
||||
Attributes in TaleWeave AI are key-value pairs that define the properties of an entity. These attributes can be of
|
||||
various types—boolean, number, or string—such as an actor’s mood being "happy," their health being quantified as 10, or
|
||||
an item's quality described as "broken" or quantified with a remaining usage of 3. Attributes play a crucial role in the
|
||||
game's logic system by influencing how entities react under different conditions. They are actively used to trigger
|
||||
specific rules within the game, and their labels are included in prompts to guide language model players in making
|
||||
decisions that are contextually appropriate and aligned with their character's current state.
|
||||
|
||||
## What are rules?
|
||||
|
||||
Rules in TaleWeave AI are defined mechanisms within the logic system that facilitate the updating of the game world
|
||||
based on specific criteria. Each rule describes a transition from one state of an attribute to another—for instance, an
|
||||
entity might transition from being "full" to "hungry" or from "happy" to "sad." These rules can employ set logic or use
|
||||
a rule engine to execute simple predicates, allowing for sophisticated control over how and when attribute states
|
||||
change. This structured approach ensures that the game world remains dynamic and responsive, with entities exhibiting
|
||||
behaviors that reflect their evolving conditions.
|
||||
|
||||
## What are triggers?
|
||||
|
||||
Triggers in TaleWeave AI act as the logical counterpart to actions. While actions are initiated by players (either human
|
||||
or AI) to interact with the game world, triggers are automated responses invoked by the game’s logic system based on
|
||||
specific conditions or rules. When a particular condition is met, the corresponding trigger function is executed, which
|
||||
can alter the attributes of an entity significantly. These triggered functions are powerful tools within the logic
|
||||
system, enabling the game to automate complex behaviors and interactions, thereby enriching the player’s experience with
|
||||
a more lifelike and engaging narrative environment.
|
||||
|
||||
## What are events?
|
|
@ -0,0 +1,90 @@
|
|||
# TaleWeave AI Events
|
||||
|
||||
## Contents
|
||||
|
||||
- [TaleWeave AI Events](#taleweave-ai-events)
|
||||
- [Contents](#contents)
|
||||
- [Event Types](#event-types)
|
||||
- [Player Events](#player-events)
|
||||
- [Player Join Events](#player-join-events)
|
||||
- [Player Leave Events](#player-leave-events)
|
||||
- [System Events](#system-events)
|
||||
- [Generate Events](#generate-events)
|
||||
- [World Events](#world-events)
|
||||
- [Action Events](#action-events)
|
||||
- [Prompt Events](#prompt-events)
|
||||
- [Reply Events](#reply-events)
|
||||
- [Result Events](#result-events)
|
||||
- [Status Events](#status-events)
|
||||
|
||||
## Event Types
|
||||
|
||||
- Player events
|
||||
- Joining
|
||||
- Leaving
|
||||
- System events
|
||||
- Generating the world?
|
||||
- World events
|
||||
- Things happening in the world
|
||||
|
||||
## Player Events
|
||||
|
||||
Player events use the following schema:
|
||||
|
||||
```yaml
|
||||
event: "player"
|
||||
status: string
|
||||
character: string
|
||||
client: string
|
||||
```
|
||||
|
||||
### Player Join Events
|
||||
|
||||
Player join events have a `status` of `join`:
|
||||
|
||||
```yaml
|
||||
event: "player"
|
||||
status: "join"
|
||||
character: string
|
||||
client: string
|
||||
```
|
||||
|
||||
### Player Leave Events
|
||||
|
||||
Player leave events have a `status` of `leave`:
|
||||
|
||||
```yaml
|
||||
event: "player"
|
||||
status: "leave"
|
||||
character: string
|
||||
client: string
|
||||
```
|
||||
|
||||
## System Events
|
||||
|
||||
### Generate Events
|
||||
|
||||
Generate events are sent every time an entity's name is generated and again when it has been completely generated and
|
||||
added to the world.
|
||||
|
||||
```yaml
|
||||
event: "generate"
|
||||
name: str
|
||||
entity: Room | Actor | Item | None
|
||||
```
|
||||
|
||||
Two `generate` events will be fired for each entity. The first event will *not* have an `entity` set, only the `name`.
|
||||
The second event after generation is complete will have the same `name` and the full `entity`. This helps provide
|
||||
more frequent progress updates when generating with slow models.
|
||||
|
||||
## World Events
|
||||
|
||||
### Action Events
|
||||
|
||||
### Prompt Events
|
||||
|
||||
### Reply Events
|
||||
|
||||
### Result Events
|
||||
|
||||
### Status Events
|
Loading…
Reference in New Issue