Fall 2006 Gamesman++ Rethinking the Gamesman Core
Total Page:16
File Type:pdf, Size:1020Kb
Gamescrafters – Fall 2006 Gamesman++ Rethinking the Gamesman Core David Eitan Poll Fall 2006 Fall Gamesman++ 2006 Introduction Gamesman – Game-independent Automatic Move/position-tree Exhaustive-Search, Manipulation and Navigation Gamesman is and has been at the core of the Gamescrafters project. Originally written by Dr. Dan Garcia, Gamesman has provided a C-based framework for the expression of abstract strategy games, allowing them to be solved, analyzed, and played. Through the years, Dan and his Gamescrafters have expanded Gamesman, developing various modules for solving and analyzing games as well as adding a plethora of games to the system. Gamesman has been an incredible piece of software, but much of its expansion was not and could hardly have been planned for. As a result, its expansibility is becoming limiting and cumbersome. Gamesman++ is an effort to rethink the design of Gamesman from top to bottom to make it the best software for two-person abstract strategy game theory research, analysis, and application. This document will outline the goals and propose solutions and features for the revamped system. Future documents will go into further detail regarding the actual design of the system, broken down by feature. Throughout this document, the original version of Gamesman will be referred to as Gamesman Classic. ii Fall Gamesman++ 2006 Table of Contents Introduction ................................................................................................................................................ ii Table of Contents ........................................................................................................................................iii Commitment ............................................................................................................................................... 1 Breakout ..................................................................................................................................................... 1 Model Overview...................................................................................................................................... 1 Gamesman Runtime (GR) ....................................................................................................................... 2 Gamesman Framework (GF) ................................................................................................................... 3 Gamesman++ Core Classes ................................................................................................................. 3 Solvers ............................................................................................................................................. 3 Games ............................................................................................................................................. 3 Positions ...................................................................................................................................... 4 Moves ......................................................................................................................................... 4 Hashers ....................................................................................................................................... 4 Data................................................................................................................................................. 5 Gamesman Built-in Libraries (GBiL) ........................................................................................................ 5 Gamesman Built-in Modules (GBiM) ...................................................................................................... 5 Gamesman Shells (GS) ............................................................................................................................ 5 Gamesman Test Framework/Libraries (GTFL) ......................................................................................... 6 Gamesman Documentation (GD) ............................................................................................................ 6 Goals ........................................................................................................................................................... 6 Gamesman++ Meta................................................................................................................................. 6 Brainstorming Results ......................................................................................................................... 6 Gamesman Runtime (GR) ....................................................................................................................... 7 Brainstorming Results ......................................................................................................................... 7 Gamesman Framework (GF) ................................................................................................................... 7 Brainstorming Results ......................................................................................................................... 7 iii Fall Gamesman++ 2006 Gamesman Built-in Libraries (GBiL) ........................................................................................................ 8 Brainstorming Results ......................................................................................................................... 8 Gamesman Built-in Modules (GBiM) ...................................................................................................... 9 Brainstorming Results ......................................................................................................................... 9 Gamesman Shells (GS) ............................................................................................................................ 9 Brainstorming Results ......................................................................................................................... 9 Gamesman Test Framework/Libraries (GTFL) ....................................................................................... 11 Brainstorming Results ....................................................................................................................... 11 Gamesman Documentation (GD) .......................................................................................................... 11 Brainstorming Results ....................................................................................................................... 11 Design ....................................................................................................................................................... 12 Deciding on C++ .................................................................................................................................... 12 Proposed API......................................................................................................................................... 13 Gamesman Framework (GF) ............................................................................................................. 13 Gamesman Runtime (GR).................................................................................................................. 14 Scenarios and Pseudocode ................................................................................................................... 15 Shell Hits Runtime for Tier Solving, Playing, and Analysis of Bagh Chall ........................................... 15 Runtime initializes a solver ............................................................................................................... 16 Loopy Solver uses dependency on Inverted-Tree Solver and a Game .............................................. 16 Gamesman++ Developer Scenarios .......................................................................................................... 17 New game ............................................................................................................................................. 17 New Solver ............................................................................................................................................ 17 GUI Creation ......................................................................................................................................... 18 Customization of the Console Input ...................................................................................................... 18 Plan of Attack ............................................................................................................................................ 18 Conclusion ................................................................................................................................................ 19 iv Fall Gamesman++ 2006 Commitment From now on, (and ideally), adding a feature to Gamesman should not require a change to the core, nor should it break any old code. Breakout In the past, Gamesman has been divided mainly into three branches: Core o All solvers o Game engine o Common libraries o Basically, everything but the games and GUI GUI Modules o All of the games I propose that we begin to think of Gamesman as being more granular, breaking out the core into a variety of pieces and clearly drawing lines regarding the purposes of each component. Note that these divisions are conceptual