G2F3

G2F3 project is a generic framework for strategy games.
Download

G2F3 Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Frank Boehme
  • Publisher web site:

G2F3 Tags


G2F3 Description

G2F3 project is a generic framework for strategy games. G2F3 project is a generic framework for strategy games.G2F3 (Generic Game Framework in eiFFel) aims to simplify the development of two player zero sum strategy games by separating game specific code from reusable generic code. So far, abstract board games are best supported. This software is written using GNU SmartEiffel. The package comes with six example games.What's New in This Release:Dependencies- A current snapshot of SmartEiffel-2.2 is now required. 2.2-beta and earlier will not work anymore with this code.New Features- Added Tanbo (GTK UI only), an excellent abstract strategy game invented by Mark Steere (http://www.marksteere.com, http://www.tanbo.com). Thanks to Mark for sharing his idea under a very clear copyleft license. At the moment, the computer plays weak, though not absolutely dumb. I think I already know how to improve the evaluation function. Will try that soon.- Tanbo and Breakthrough can now be built for different board sizes. Those game directories have subdirectories for each board size. To compile, cd to one of these and use the normal build commands (see doc). Currently, the board size cannot be changed at runtime. Improvements- More improvements in the evaluation function in Breakthrough.- Node explorer: Now using monospace font for the two state views. Game positions stored in BIT_2_BOARD_STORAGE and decendants are now shown in ASCII art.- 'Undo' is now unlimited. Modified NODE_HISTORY and UNDO_REDO_BUFFER now using linear memory instead of circular. This was done in anticipation of REPOSITORY which will be used for load/save of games. With unlimited undo/redo, games can be saved by storing moves only (rather than saving moves plus the oldest game position).- New class BIT_LARGE in e-lib. Used in the code for Tanbo.Code Changes and Cleanup- New feature {GEOMETRY_RECTANGLE}.rook_neighbors.- Removed special loadpath files that were supposed to trick eiffeldoc into running without errors. Eiffeldoc assumes no conflicts in the whole type universe. This is not the case with the current state of this framework...- Added 'insert ANY' to BIT_2_BOARD_KEY and BIT_1_BOARD_KEY to get the body of is_equal (now deferred in HASHABLE).- Added 'insert PLATFORM' to STORAGE_HASHABLE to get Maximum_integer.- FILE_FINDER now uses {FILE_TOOLS}.is_readable instead of {ANY}.file_exists which is now obsolete.- New feature {BOARD_GAME_DISPLAY}.flash_cell and changed {BOARD_GAME_DISPLAY}.animate_from_to to make use of this.- New feature {SERVER}.int_move_input to simplify games where move_dim = 1. Added precondition to incremental_move_input and incremental_set_move_input.- {ALPHA_BETA_TT}.main_search and {ALPHA_BETA_TT}.alpha_beta_tt: Now using new local variable dict_key which avoids calling {STORAGE_HASHABLE}.hash_key twice (which is *not* an attribute). Gives some tiny speed improvement.- New feature {BIT_BOARD_STORAGE}.occupier (was needed to remove hard coded board sizes in Breakthrouigh). TODO: remove overlap with display_code.Bugfixes- Fixed an embarassing bug in the evaluation function of 'Breakthrough' (forgotten 'not' in line 220 of STORAGE_BREAKTHROUGH) that caused the AIs to play very weak moves.- Fixed a self-made memory leak in {DICTIONARY_MANAGER}.clean_up: collection was off when full_collect was called. Since collection is always off when the computer AI is busy, I can hardly blame SmartEiffel for not automatically calling the GC within the relatively few lines of code when collection was on. Thus, the programs consumed more and more memory as soon as a TT based algorithm was used. - Removed usage of 'twin' in {DICTIONARY_MANAGER}.add_useful_to_shadow. I have no idea why I had used twin there in the first place. This was not really a bug but it caused unneccessary memory consumption in addition to the collection bug mentioned above.Build System- ACE files and top level makefile moved to the new directory scripts.- ACE files and the top level makefile now expect a new variable G2F3 which must point to the root directory of the G2F3 package. This variable is used to locate non-Eiffel files. Also, all Eiffel files which are not part of the SE standard library are now always located using 'loadpath.se' in the current directory. All example programs still compile out of the box as the application specific makefiles take care of setting the G2F3 variable. These changes allow for more flexibility in the game directories (which may now contain subdirectories).- ACE files: added "${path_lib}/kernel/internal" to cluster sections (required by SE-2.2).


G2F3 Related Software