Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Huge thumbs up for making the effort to share a simulated environment.

Having these kinds of "toy" environments can result in more research into some interesting problems.

Over the course of years I taught or helped teach several classes and I implemented a bunch of one-off systems for evaluating AI agents.

Feedback on the system:

   * Implementation:
     * I encourage a more modern use of C++, certain choices
         unnecessarily complicate the code and make it less
         flexible.
     * Example:

  	Piece *p = new Piece(curPiece->getPieceID());
        ...
        delete p;

      * (use unique_ptr instead)

     * Example 2:
       in game/Piece.h you do not advertise constness on
       simpler getter accessors.

     * Example 3:
       * the constants in game/Constants.h make
         experimentation in Runtime not flexible enough.
         There's no reason why most if not all of these 
         constants should not be configuration parameters
         for a game.

     * Example 4:
       * Instead of documenting some errors with cerr,
         consider using exceptions. 

   * Include a proper build file. I recommend CMake as it is
     available for all popular platforms and easy to read for
     simple projects like this. Otherwise a simple Makefile 
     will do.

 * Features:
   * Provide a way to automatically evaluate:
     * A single agent performance using one or more proposed
       scores.
     * Agents against each others using the ELO system
   * Simulate all nuances of the Tetris game
   * Compare agent performance to that of human players
   * Provide bindings to other languages that are fun to hack
     in, such as Python and Lua. Extra credits to make the 
     bindings accessible to languages that do not share the 
     same machine model, such as JVM-based Scala/Java/Clojure
     or functional languages such as Haskell or O'Caml.
     ... maybe Arc or Racket bindings as well? ;))


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: