Skip to content

bug: opening-narrative always returns generic stub — ignores campaign setting, name, and character #722

@Sealjay

Description

@Sealjay

Summary

POST /campaign/{campaign_id}/opening-narrative always returns a hardcoded template regardless of the actual campaign content:

{
  "scene_description": "You find yourself in a Dark dungeon world during the start of a new adventure. The atmosphere is charged with possibility as your adventure continues.",
  "quest_hook": "Dark omens have troubled the land...",
  "suggested_actions": ["Look around", "Speak with nearest person", "Check equipment"]
}

This is a stub implementation that:

  1. Only uses the campaign tone field for minimal customisation
  2. Completely ignores: campaign name, world description, plot hooks, key NPCs, setting
  3. Returns identical suggested_actions for every campaign
  4. Returns the same sentence structure regardless of campaign context

The opening narrative is the first thing a player sees when entering the game — this stub immediately breaks immersion and makes all campaigns feel identical.

Confirmed via API test

Running on 4 different campaigns with different names, settings, and tones all returned the same template structure with only the tone keyword substituted.

Files

  • backend/app/api/routes/session_routes.pyget_opening_narrative()

Fix

Call NarratorAgent.generate_scene_description() or DungeonMasterAgent.process_input() with the campaign context to generate a real AI narrative. Use the campaign's world_description, plot_hooks, key_npcs, and setting as context.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggame-engineGame mechanics/rulespriority:criticalBlocking/broken functionality

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions