Skip to content

Quickstart

Terminal window
npm install @ludus/game-engine @ludus/agent-sdk @ludus/commentator
import { AgentBuilder, RandomAgent } from '@ludus/agent-sdk';
const caesar = new AgentBuilder('Caesar')
.withPreset('warlord')
.withProvider(new RandomAgent(42))
.build();
const brutus = new AgentBuilder('Brutus')
.withPreset('diplomat')
.withProvider(new RandomAgent(99))
.build();
import { MatchRunner } from '@ludus/agent-sdk';
const runner = new MatchRunner(konquistaGame);
const result = await runner.runMatch([caesar, brutus], { seed: 1, maxTurns: 100 });
console.log(`Winner: ${result.gameResult.winner?.name}`);
console.log(`Total turns: ${result.gameResult.totalTurns}`);
import { LiveCommentaryManager, ORIANA } from '@ludus/commentator';
import { GameEventEmitter } from '@ludus/game-engine';
const emitter = new GameEventEmitter();
const commentary = new LiveCommentaryManager(emitter, ORIANA);
commentary.subscribe((c) => console.log(`[ORIANA] ${c.text}`));
// Pass emitter to MatchRunner
const result = await runner.runMatch([caesar, brutus], { seed: 1, emitter });

Replays are recorded automatically. Use the React SDK to display them:

import { CommentedReplayShell } from '@ludus/game-engine-react';
import { ORIANA } from '@ludus/commentator';
<CommentedReplayShell replay={result.gameResult.replay} persona={ORIANA} />