OpenLearningQuest / game

An educational game where players build competencies as part of an interactive story.
GNU Affero General Public License v3.0
0 stars 0 forks source link

Integrate NPC Dialogue System #7

Open brylie opened 1 year ago

brylie commented 1 year ago

We will want to have dialogues in our game to convey the story.

This feature aims to implement a robust NPC dialogue system that supports interactive and dynamic conversations within the game. This system will be integral for quests and general NPC interactions, with the capability to respond to game states, such as player achievements or changes triggered by other in-game actions.

Design Goals

Key Components

  1. Dialogue Management:

    • Utilize a robust dialogue editor that allows for branching conversations based on player choices and game states.
    • Include support for conditions and effects, enabling dialogues to trigger changes in the game environment or update the player's status.
  2. Integration with Game State:

    • Ensure dialogues can access and modify global game states, such as quest progress or inventory items, to allow for conditions like "if player has item X, say Y."
  3. NPC Scripting:

    • Each NPC should have scripts that define their dialogue paths and the conditions under which different paths are taken.
    • Support for multiple languages and voiceovers would be considered for future updates.

Existing Framework Consideration

Implementation Considerations

Development Tips

Action Items

References

Original Task

Create a dialogue experiment such as the following.

brylie commented 2 months ago

After reviewing current options for Godot 4.2 dialogue management, two main options stand out:

Dialogic looks fairly mature, but has had a long delay in releasing version 2.0 with Godot 4.x support. So, it's not currently a viable option.

Dialogue Nodes is newer, but supports Godot 4.2. It provides a simple interface for creating branching dialogues, defining variables, creating characters, and simple text effects. For now, I recommend we work with Dialogue Nodes.