Manning Logo
Home | Ordering Info | Shopping Cart | Manage My Account | Login
Attention customers: online shopping is now available exclusively through our main website: http://www.manning.com. Thank you.
Developing Games That Learn

Inside the book

Sample Chapters Table of Contents Index Introduction

Manning Blog

Why small is sweet?

Author Blogs

Dave Crane more...

Author Calendar

Upcoming Events

Catalog

Java .NET Perl XML All by Subject All by Title

About...

Manning Contact Us Ordering FAQs ebooks Covers Sandbox Forums Distributors Manning Early Access Program (MEAP) Affiliate Program Academia/Publicity User Group Program Press Releases Jobs

Manning Publications Co.
209 Bruce Park Avenue
Greenwich, CT 06830

Developing Games That Learn
Leonard Dorfman and Narendra K. Ghosh

1996 | 300 pages
ISBN: 135696178
  $34.95 Softbound print book Out of print (?)

Index

A
add_list(...) function 229-231
add_pattern_list(...) function 250-251
artificial intelligence, objective. See objective artificial intelligence
awareness, definition 3

B
balance, program learning and program instinct 60

C
check_for_loss(...) function 155-157
check_for_pattern(...) function 203-205
check_for_win(...) function 154-155
close_data_base(...) function 272-273
coffin[] array, role in move generation in Drop Four 101-114
coffin_corner( UCHAR turn ) function 113
coffin_pattern(turn) function 111-112
consciousness models, human and computer 2-5, 7, 12
create_coffin(...) function 105-107
create_coffin_o(opponent) function 108-109
create_setup2(...) function 157-159
create_win_board() function 110-111

D
disk access functions 269-273
do_positional_move(...) function 166-167
double wins 150
Drop Four (game). See also forced move algorithm
     adding a move to the move list 229-231
     coffin[] array, role in move generation 101-114
     double wins, determining 150
     evaluation_first_ply[8] array 206
     first-move selection 115-143, 231-236
     function map 75-80
     functions. See functions
     getting number of pieces in a game board column 149
     implementation overview 52-59, 70
     initializing ghost boards 148
     level-two analysis support function 233
     levels of play 116-118
     marker disruption implementation 239-250
     move generation, basic concepts 101-114
     move generation, positional 201-227
     move selection implementation 73-100
     move selection sequence design 68-69
     option settings for game play 80-86
     overview and analysis 49-60
     pattern matching 165-199
     ply searching 145-163
     positional moves, non-ply 166-199
     program learning 1-2, 70-71, 229-267
     raw_score array 206
     relocating data between boards 148-149
     searching for wins 152-155
     second move computer analysis 235
     three-filled patterns 202-205
     weights[8] array 206
     wins on ghost boards, determining 151

E
evaluate_board(...) function 205-227
evaluation_first_ply[8] array 206

F
find_winning_pattern(...) function 253-256
first-move analysis in Drop Four game 231-236
first_human_win(...) function 259-260
first_move_analysis(...) function 231-232
first_move_check(...) function 256-257
first_pat_analysis(...) function 239-250
first_ply_move(...) function 205-207
forced move algorithm. See also program learning; objective artificial intelligence
     coding 16-28
     conditions for failure 13
     conditions for success 53
     synergy with three-filled marker disruption algorithm 253
     theoretical basis 63-65, 70-71
     use 100, 229, 231, 237
forced move, definition 15, 63
forced-win search 157-159
forks, blocking 161-163
four-in-a-row games 50. See also Drop Four
function
     add_list(...) 229-231
     add_pattern_list(...) 250-251
     check_for_loss(...) 155-157
     check_for_pattern(...) 203-205
     check_for_win(...) 154-155
     close_data_base(...) 272-273
     coffin_corner( UCHAR turn ) 113
     coffin_pattern(turn) 111-112
     create_coffin(...) 105-107
     create_coffin_o(opponent) 108-109
     create_setup2(...) 157-159
     create_win_board() 110-111
     determining double wins 150
     determining wins on ghost boards 151
     disk access 269-273
     do_positional_move(...) 166-167
     evaluate_board(...) 205-227
     find_winning_pattern(...) 253-256
     first_human_win(...) 259-260
     first_move_analysis(...) 231-232
     first_move_check(...) 256-257
     first_pat_analysis(...) 239-250
     first_ply_move(...) 205-207
     get_computer_move(...) 115
     get_computer_move_first(...) 115-143
     getting number of pieces in column 149
     init_coffin() 105
     initializing ghost boards 148
     input/output 269-273
     look_ahead_opp(...) 161-163
     map 75-80
     off_first_human_win(...) 262-263
     off_first_move_analysis(...) 236
     off_first_move_check(...) 265-266
     off_second_human_win(...) 263-265
     off_second_move_analysis(...) 237
     off_second_move_check(...) 266-267
     off_second_move_comp_analysis(...) 238
     open_data_base(...) 269-271
     opening_book_defensive(...) 171-190
     opening_book_first(...) 167-170
     opening_book_offensive(...) 191-199
     opponent_type_move(...) 233
     pattern_search_board(...) 202
     ply search 145-163
     relocating data between boards 148-149
     searching for wins 152-155
     second_human_win(...) 260-262
     second_move_analysis(...) 234
     second_move_check(...) 258-259
     second_move_comp_analysis(...) 235
     start_game(...) 86-99
     stop_setup2(...) 159-161

G
game design. See Drop Four; Tic Tac Toe
get_computer_move(...) function 115
get_computer_move_first(...) function 115-143
ghost boards 146-155, 203

H
human consciousness, model 2-4

I
init_coffin() function 105
initializing ghost boards 148
input/output functions 269-273
instinct, program. See program instinct

K
kiss of death move theory 63-65, 229

L
learning, program. See program learning
level-two analysis support function 233
look_ahead_opp(...) function 161-163
loss analysis 229-267

M
marker disruption 53, 71, 239-250
memory
     definitions 2
     markers 2, 5-6, 66-67, 229
     role in program learning 1
move elimination algorithm 13, 31-47. See also objective artificial intelligence
move generation 201-227

O
objective artificial intelligence
     analysis 11, 14-15, 53-59
     definition 1-2, 6
     design overview 11-12, 15-16, 61-72
     implementation overview 9-16, 52-59
     problem statement 10-11, 14, 52
     suitability for application 7-9, 14, 51-52
off_first_human_win(...) function 262-263
off_first_move_analysis(...) function 236
off_first_move_check(...) function 265
off_second_human_win(...) function 263-265
off_second_move_analysis(...) function 237
off_second_move_check(...) function 266
off_second_move_comp_analysis(...) function 238
open_data_base(...) function 269-271
opening book moves in game design 167-199
opening_book_defensive(...) function 171-190
opening_book_first(...) function 167-170
opening_book_offensive(...) function 191-199
opponent_type_move(...) function 233

P
pattern analysis after game completion 229
pattern recognition and matching 71, 165-199, 202-203, 239-256
pattern_search_board(...) function 202
ply searching 145-163
position evaluation in board game theory 201-102, 205-227
positional moves in game design 166-199
program consciousness 4-5, 7, 12
program instinct
     basic concepts 101-114
     coffin[] array 101-114
     definition 7
     design and implementation 29-31, 54-59, 69-70
     move decision scheme 115-143
     non-ply positional moves 166-199
     opening book defensive moves 171-190
     opening book offensive moves 191-199
     pattern matching 165-199
     ply searching 145-163
     positional move generation 201-227
     purpose 13
program learning. See also objective artificial intelligence; forced move algorithm; marker disruption algorithm; move elimination algorithm
     analyzing a loss 229-252
     definition 7
     design principles in Drop Four 70-71
     effectiveness in Drop Four 1-2
     implementation in Drop Four 253-267
     role of memory 1
programming environment and tools 67

R
raw_score array 206

S
second-move analysis in Drop Four 231-236, 238
second_human_win(...) function 260-262
second_move_analysis(...) function 234
second_move_check(...) function 258-259
second_move_comp_analysis(...) 235
start_game(...) function 86-99
stop_setup2(...) function 159-161
subconsciousness, computer 5, 12

T
three-filled marker disruption algorithm 71, 100, 253. See also objective artificial intelligence; program learning
three-filled patterns 202-205, 250-251
Tic Tac Toe 13-48

U
unconsciousness, computer 5, 12

W
weights[8] array 206
win_board array 110-111

DESCRIPTION

If you've ever wondered how to empower your software with the ability to learn from experience, this book is for you. Developing Games That Learn shows in detail how to implement single-trial learning, illustrating its approach in board games Tic Tac Toe and a more complex game called Drop Four. The authors discuss the learning algorithms and present the source code that implements them.

The program learning techniques are presented in sufficient detail to be useful for practical software design. They are particularly suited to computer game development, but can also be used in other areas. This book provides valuable guidance for programmers, project leaders, and game designers.

Existing approaches to program learning are often of the "dumb" type-the program simply learns not to repeat any sequence that led to failure. Authors Dorfman and Ghosh take a more powerful path: for each example of failure, their method first finds the point of no return-the point after which the game was certain to be lost. Then that point is prevented from being reached via any of a number of different (but equivalent) paths, not just the single path actually played, thus accelerating the learning.

If you are interested in using these techniques in applications other than games, the authors discuss ways to do that.

ABOUT THE AUTHORS...

Leonard Dorfman, Ph.D., is the author of 22 computer science books, concentrating on C, C++, and Assembly language, a black comic novel, and four commercial software products. He has a strong background in educational research, and interest in psychology, philosophy, and Buddhist studies. He's a teacher and writer, and keeps shop at MultiGrain Solutions, a software development company.

Narendra K. Ghosh is currently obtaining a degree in computer science from Harvard University. He worked cooperatively with Len in developing Objective Artificial Intelligence and the learning algorithms, and in implementing the code used in the demonstration programs.

Home | Catalog | Privacy Policy | About Manning

© 2003-2006 Manning Publications Co.