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? ;))
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: