Schwierigkeitsgrade #28

Open
opened 2026-04-16 20:44:55 +00:00 by sebastian · 0 comments
Owner

Problem: Alle KI-Spieler verhalten sich identisch. Es gibt keine Möglichkeit, einfache vs. schwere Gegner zu konfigurieren.
Lösung: Factory-Funktionen für vordefinierte Schwierigkeiten:

// game/ai/AiDifficulty.h
namespace AiDifficulty {
    AiConfig easy();    // niedrige Utility-Gewichte, lange Denkpause, gelegentlich suboptimale Entscheidung
    AiConfig medium();  // Standardwerte
    AiConfig hard();    // höhere build/upgradeBias, kurze Denkpause
}

easy() kann z.B. per Zufall 30% der Zeit eine zufällige statt der optimalen Aktion wählen (Epsilon-Greedy):

// In AiDecisionMaker::decide():
if (config.randomness > 0 && randomFloat() < config.randomness)
    return randomValidAction(...);

Acceptance Criteria:

  • AiDifficulty::easy/medium/hard() sind in MainMenuScene oder GameScene wählbar
  • easy() macht spürbar schlechtere Entscheidungen als hard()
  • Schwierigkeit wird beim Erstellen der GameScene konfiguriert
Problem: Alle KI-Spieler verhalten sich identisch. Es gibt keine Möglichkeit, einfache vs. schwere Gegner zu konfigurieren. Lösung: Factory-Funktionen für vordefinierte Schwierigkeiten: ``` // game/ai/AiDifficulty.h namespace AiDifficulty { AiConfig easy(); // niedrige Utility-Gewichte, lange Denkpause, gelegentlich suboptimale Entscheidung AiConfig medium(); // Standardwerte AiConfig hard(); // höhere build/upgradeBias, kurze Denkpause } ``` easy() kann z.B. per Zufall 30% der Zeit eine zufällige statt der optimalen Aktion wählen (Epsilon-Greedy): ``` // In AiDecisionMaker::decide(): if (config.randomness > 0 && randomFloat() < config.randomness) return randomValidAction(...); ``` Acceptance Criteria: - AiDifficulty::easy/medium/hard() sind in MainMenuScene oder GameScene wählbar - easy() macht spürbar schlechtere Entscheidungen als hard() - Schwierigkeit wird beim Erstellen der GameScene konfiguriert
sebastian added this to the AI-System milestone 2026-04-16 20:44:55 +00:00
sebastian added the
enhancement
engine
labels 2026-04-16 20:44:55 +00:00
sebastian added this to the Dicewars project 2026-04-16 21:03:46 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sebastian/Dicewars-Siedler#28
No description provided.