schrum2 / MM-NEATv2

MM-NEAT version 2.0 is no longer supported. Please get MM-NEAT 3+ from https://github.com/schrum2/MM-NEAT
Other
11 stars 5 forks source link

General Game Playing #351

Closed schrum2 closed 7 years ago

schrum2 commented 7 years ago

There used to be (still is?) a General Game Playing competition in which board games are described using a formal description language that allows them all to use the exact same interface for interacting with the game. The code seems to be available at this GitHub repository: https://github.com/ggp-org/ggp-base

Rather than try to implement every game we can think of from scratch, we could relay on this framework and take advantage of many board games, some of which are very unusual and novel (not well known).

Tackle this issue by first downloading the GitHub code into a separate Eclipse project. Mess around with the code and see if you can get the GUI and some of the basic pre-packaged agents to work. If you are successful, then import the code into MM-NEAT and integrate it with you code for evolving board game players. See if you can create a general GGPBoardGame class that implements our BoardGame interface, but also loads a game described in the GGP description language.

This would give us a big library of games to evolve in.

DarwinJohnson commented 7 years ago

I cloned the specified repository into the workspace, but the Project didn't appear in Eclipse. Looking into the actual files, I found only a few scattered Java files and several KIF and JScript files. Importing through Eclipse doesn't have much better results; the Project will appear, but the src folder will be empty. It also appears that the only implemented games in the Project are TicTacToe, Connect Four, and a Maze. They are all JScript files.

schrum2 commented 7 years ago

Other games are available in a variety of places throughout the internet, but we have to get the base software working in order to take advantage of it.

DarwinJohnson commented 7 years ago

Imported the GGP-Base into Eclipse. Will spend tomorrow coping the important files into a package in MMNEAT. So far, the only information we really have is from the Quick Start Guide found here: https://github.com/ggp-org/ggp-base I ran the Server class currently found in ggp-base/src/main/java/org.ggp.base.apps.server , and a GUI window popped up. It appears to have controls for choosing which repository of games to use, which game to run, "Start Clock," "Play Clock," and "Repetitions" Settings, and several checkboxes that control whether or not the GDL is scrambled, the Match is queued, the Match Details are shown, the Match is saved to the Disk, or if the Match is published to the Web. There is a Player List that defaults to having two Players, which are added by typing in the address of that Player with the format "host:port". The best way to get a game to run is to not have the Match queued and then click the button labelled "Start a new match!". I'm not sure how to get the match queue to work yet. In addition, it appears that some games aren't set up to be visualized yet. For each Match, it saves a History Log, an Error Log, a Visualization Log, and a State Log. Each of these Logs stores information about each Game State in the Match. It looks like the way to create a new Player is to have a Class inherit from the StateMachineGamer class. More information is available in the Quick Start Guide. More information will be documented as it is discovered.

DarwinJohnson commented 7 years ago

Create a Parameter that defines which game is played. A new Java Task needs to be created for use with the GGP code, or there needs to be a way to have the GGP games implement the Board Game Interface. Find a way to make our current Board Game Players compatible with the GGP games. If there is a GGP Player Interface, implement that. Otherwise, see if there's a way to extend the GGP Player class.

schrum2 commented 7 years ago

Closing this because we are giving up this summer, but revert the previous commit to bring the files back