35

A scuola, uno dei miei professori aveva creato un gioco 3D (non solo un motore), in cui tutti i giocatori erano interamente controllati dall'IA, ed era nostro compito programmare l'intelligenza artificiale di un singolo giocatore. Fondamentalmente abbiamo fornito una API per interagire con il mondo di gioco.Parco giochi per l'intelligenza artificiale?

Le nostre implementazioni di IA sono state gettate nel gioco insieme, e abbiamo visto i nostri programmi andare a battersi l'uno contro l'altro.

Era come robot soccer, ma virtuale, con un sacco di grandi cannoni e senza pallone da calcio.

Ora sto cercando qualcosa di simile (e open source) con cui giocare. (Preferibilmente in Java, ma sono aperto a qualsiasi lingua.) Sono non alla ricerca di un motore di gioco, o di un framework ... Sto cercando un gioco completo che semplicemente manca del codice AI ... preferibilmente istituito per questo tipo di esercizio. Suggerimenti?

risposta

21

Sembra molto simile a Robocode.

Robocode è un gioco di programmazione, in cui l'obiettivo è sviluppare un robot da combattimento per combattere contro altri carri armati in Java o .NET. Le battaglie dei robot sono in esecuzione in tempo reale e sullo schermo.

+11

La mia unica lamentela su RoboCode è che si trasforma rapidamente in un progetto di apprendimento trigonometrico piuttosto che in un progetto di apprendimento di API o AI. Una volta sviluppato un set di librerie per astrarre il trig, puoi iniziare a programmare l'intelligenza artificiale. IMHO dovrebbe venire con una tale libreria come parte dell'API. –

+2

@Chris Nava: Sto scrivendo questo nel mio taccuino di idee per progetti open source. –

+2

Fammi sapere se lo fai decollare. –

6

La mia classe di intelligenza artificiale ha utilizzato l'open source BZFlag, che si è rivelato piuttosto divertente e informativo.

2

Si può iniziare con this game

Alcuni AI è già implementata in modo che si può prendere esempio

9

Partenza Mario AI. Devi programmare un'IA per controllare Mario. C'è una competizione e alcuni documenti associati ad esso. Molto semplice da configurare e da utilizzare con Java o qualsiasi linguaggio JVM.

1

Check out ORTS.

+0

Questo è solo un motore di gioco. – Dolph

+0

ORTS è un framework di gioco RTS open-source. Lo configuri, definisci il gioco e poi scrivi agenti IA che usano l'API per giocare. –

2

So che hai indirettamente indicato RoboCup nella tua domanda, ma penso che valga la pena menzionare qui dato il titolo. Ci sono entrambe le versioni 2D e 3D:

Il campionato 2D è più astratto con comandi come mossa, presa, calcio.

La lega 3D è più complessa in quanto è necessario controllare gli angoli di ogni cerniera nel corpo di un robot 3D (22 di loro con il modello Nao).

Entrambi sono esercizi ugualmente validi per l'intelligenza artificiale. Probabilmente dipende da quale area dell'IA vuoi giocare.

Entrambi possono essere programmati da qualsiasi lingua/piattaforma che supporti socket TCP. Troverai codice di esempio in Java online per iniziare. Ho mantenuto un elenco di librerie esistenti per 3D RoboCup su SimSpark Wiki here.

Se si desidera utilizzare.NET per il campionato 3D, puoi usare lo TinMan library che ho creato.

10

Si consiglia di controllare AIIDE nel 2010, dove ospiterà uno Starcraft Broodwar AI competition. Puoi scaricare il software, le API e i proxy per permetterti di connettere il tuo IA homegrown alla simulazione di Broodwar.

A differenza di altre piattaforme come 3D Robocup, il motore Broodwar gestirà la fisica e probabilmente permetterà di concentrare la maggior parte del tempo su aspetti di livello superiore come pianificazione del percorso, strategia, allocazione delle risorse, ecc. Ci sono anche forme base di IA che puoi inserire come segnaposto mentre lavori sul tuo specifico miglioramento, ad esempio un AI melee.

+0

+1 BWAPI. Mi sono completamente dimenticato di questo. –

+0

+1 bella chiamata, non so come non me lo ricordassi. una nota a margine: quando dici "A differenza di altre piattaforme come Robocup" stai parlando del campionato 3D dal momento che il campionato 2D è, come ha detto Drew Noakes, "più astratto". –

+0

Sì, mi riferivo al campionato 3D. Hai ragione che la lega 2D è più astratta. Nella lega 2D gli operatori di base sono "move, dash, turn and kick". – Eric

1

Torcs è un motore di gioco di corse che consente di creare i propri driver in C++.

0

Il gioco del prof mi ricorda molto il vecchio gioco Macintosh Assassin, che ha sprecato molte delle mie ore di doposcuola nel corso della giornata. È stato un interessante gioco a turni in cui i giocatori inseriscono le loro mosse all'inizio di ogni turno, e quindi le loro mosse vengono eseguite simultaneamente. Le IA del gioco erano un po 'stupide, e ho sempre desiderato poter andare in giro e migliorarle, ma non ho mai trovato una versione open source del gioco.

4

Si potrebbe considerare Open NERO ("(Preferibilmente in Java, ma sono aperto a qualsiasi lingua.)") Ma è scritto in Python. Se nessuno dei suggerimenti Java appello a voi, date un'occhiata qui:

http://code.google.com/p/opennero/

non "mancare" Codice AI, esso contiene. Forse guardare a una protesi di intelligenza artificiale in Python potrebbe darti un po 'di ispirazione per i tuoi sforzi in Java.

Modifica: Per rispondere al commento di vidstige, provare: http://aichallenge.org/ - Programmare formiche per raccogliere cibo e combattere il nemico. Sembra che ci sia un'implementazione Java lì.

+0

risponde veramente alla domanda? Sta cercando qualcosa in cui devi riempire l'intelligenza artificiale ... – vidstige

+0

@vidstige - buon punto - post originale modificato per includere qualcosa di più focalizzato sulla domanda. – robrambusch

+0

@vidstige: Ha anche esercizi che sono buoni per praticare l'algo di intelligenza artificiale.Contiene esempi tratti dal famoso libro AI Russell e dal libro di Norvig Artificial Intelligence: A Modern Approach. – darshan