2009-02-05 6 views
10

Vorrei utilizzare un motore di regole per il mio gioco. Sarà usato per AI NPC e AI GM.Java Rule Engine per Game AI

Quale potrebbe essere un motore di regole valido e veloce per questo scopo? Deve essere Java e Open Source.

Mi piacerebbe sentire da persone che hanno utilizzato Java Rule Engine per l'Intelligenza Artificiale sulla loro esperienza.

risposta

10

Ci sono due scelte che ho visto: Jess e Drools. Jess, francamente, ha problemi. Non è open source, né è gratuito. Ha una sintassi simile a Lisp, che è un plus o un meno, a seconda del punto di vista dell'utente.

Drools, d'altra parte, è gratuito, open source e sotto l'ombrello JBoss, quindi è probabile che rimanga per un po '. Le regole sono invocate usando Java diretto, ma sono scritte usando un DSL che è piuttosto intuitivo per il non programmatore.

L'unico "getcha" che ho visto con Drools è che la compilazione delle regole può essere lenta, quindi vorrete eseguire la compilation all'avvio o in un blocco statico, a volte quando l'utente non si preoccuperà di aspettare un po '

Buona fortuna!

+0

La prego di specificare che tipo di problemi ha Jess? –

+0

@hragheb Ho specificato i problemi nel primo paragrafo. 1) Non è open source, 2) non è gratuito, 3) ha una sintassi simile al lisp (che è un segno negativo per me, anche se potrebbe non essere per gli altri). Nessuno di questi è necessariamente ostaggio, tranne per il fatto che ciascuno, ritengo, metta il prodotto in una posizione di svantaggio competitivo rispetto a Drools. – rtperson

1

Cercheremo di affrontare la compilation perf entro la fine dell'anno. Non è qualcosa su cui ci siamo concentrati o profilati, concentrandoci invece sulle prestazioni di runtime.

Sarei molto interessato a conoscere i tuoi progressi. Sto pensando di fare un gioco Drools PacMan per iniziare a esplorare il modo migliore di utilizzare i motori di regole per i giochi. Dato che i giochi riguardano spesso eventi e il controllo delle relazioni tra gli oggetti, sembra che un motore di regole correttamente sintonizzato possa fornire alcuni vantaggi. La parte successiva, la "messa a punto", diventerà importante poiché in molti casi il motore potrebbe essere molto più efficiente nelle partite parziali se conosce lo spazio del problema in anticipo. Idealmente con i giochi questo è spesso il caso, quindi possiamo fornire suggerimenti al motore per adattarlo a questi casi d'uso.

Abbiamo alcune ricerche in corso per aggiungere probabilità, che dovrebbe essere anche interessante per i giochi.

In ogni caso si prega di contattarmi se hai fatto qualche progresso, mproctor a RedHat d0t com