The information in this file is the non-formatted version of the Windows 3.1 (tm) Help File. Object of the Game What are Personalities? Registration Basic Personality Concepts Personality Factor Definitions About the Author The #1 Beta Man *** Object of the Game *** Span-It! is a two-player connect-the-dot game. Each player is assigned an orientation at the start of the game. One player is horizontal and the other is vertical. Players alternate turns placing connectors on the board. The object of the game is for each player to span the board in the direction of his/her favored orientation by completing a path from one end to another. The challenge is to block your opponent while still making progress. A game will never end in a draw. Someone always wins (or quits!) By default, Span-It! assumes the horizontal player is human, and the vertical player is the computer using a default personality. Any combination of human and computer players is allowed. *** What are Personalities? *** Span-It! has an exciting option that is not available in many games. Not only is it possible to play against the computer, but you may define virtually every aspect of how the computer plays. Like many game playing programs, Span-It! assigns a number to the perceived importance of every empty position on the game board. This number is called the weight. The board position (node) with the best weight is the one Span-It! will select for the next move. The computer assigns the weights based on a well-defined set of factors. For example, Span-It! will add the value of the PathIsWinner factor to the weight of an empty position that can win the game. There are several factors that influence the weight of a node. A personality is a set of values assigned to the factors used by the computer during auto-play mode. When you press one of the "Load Personality" buttons in the new game dialog box, you may select different personalities. Some personalities are more "intelligent" than others. You also may edit or create your own. Remember that personalities only influence the way the computer plays. Human players probably use different methods to "calculate" moves. The selected personality for a human player is the one that the HINT menu option uses. The way to tell the computer to play instead of a human is by checking the "computer plays" box in each player definition section of the new game dialog box. It is possible to have the computer play itself using two different personalities. The "referee" is a completely different part of the program. The opposing personalities are not allowed to cheat! *** Registration *** Span-It! Copyright (c) 1993, Mark T. Chapman All Rights Reserved Span-It! is shareware. You may try the program free of charge and may make copies for others. If you continue to play Span-It!, a $15 registration fee is required. This program may be distributed freely or for a nominal media charge (less than $5) provided that no modifications are made to any files. Authenticity may be verified for free by the program's author via. SASE for a limited time. For registration information, see the file REGISTER.TXT or REGISTRATION under the HELP menu. THE PROGRAM IS PROVIDED "AS-IS". NO WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, ARE MADE AS TO IT OR ANY MEDIUM IT MAY BE ON. NO REMEDY IS PROVIDED BY THE AUTHOR FOR INDIRECT, CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES ARISING FROM IT, INCLUDING SUCH FROM NEGLIGENCE, STRICT LIABILITY, OR BREACH OF WARRANTY OR CONTRACT, EVEN AFTER NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. USE AT YOUR OWN RISK. For $15 registration (plus shipping) you will receive: 1. Your own personalized copy of this and the next release of Span-It! 2. Prototypes of Span-It! on alternate operating systems. 3. The Span-It! Toolkit. Several programs that will help you create better personalities. 4. One entry per person in the free Span-It! Ultimate Personality Competition. (Registration is not required to enter the competition. Just mail a disk or printout of your best Span-It! personality to the registration address below. Winning personalities will be included in the next release of Span-It!) Registration Forms can be printed via. the help screen (FILE | PRINT TOPIC) or else you may copy the file REGISTER.TXT to the printer from DOS by: C:\SPANIT\> COPY REGISTER.TXT PRN: Please send registration of $15 U.S. (plus $2 shipping in Continental United States, $5 elsewhere) to: Mark Chapman Span-It! Registration 1126 Wauwatosa Rd. Cedarburg, WI 53012 Your name and shipping address: Media type (3.5" or 5.25" floppy disk): Your Span-It! handle (the name to appear on the personalized "About" screen): Don't forget to enter your best personality in the Span-It! Ultimate Personality Competition. For academic discussion, my Internet address is chapman@miller.cs.uwm.edu. Your suggestions are always welcome. Watch for the I.B.M. OS/2 2.1 version soon! Thank You for trying my game. *** Personality Factor Descriptions *** Before reading this section, please make sure you are familiar with the material in Basic Personality Concepts This is a step-by-step description of how the value of a trial node is computed. Part A describes how the weight of a single trial node is computed. Part B describes how all trial nodes on the board are compared to select the best move. Part A: Compute the weight of a single trial node 1. Determine the initial weight of the trial node. NodeMajor: If the trial node is a major node, assign NodeMajor to the initial weight of the trial node. NodeMinor: If the trial node is minor node, assign NodeMinor to the initial weight of the trial node. NodeRandom: Always add a random number between 0 and NodeRandom to the weight of the trial node. 2. Add the change in path weight to the weight of the trial node. The path weight may be computed for any Path. It does not matter if the path is a Real Path or a Resultant Path. All we care about are the characteristics of the connected set of nodes. The order the nodes were connected will not change the path weight. A path weight PW is computed as follows: PathMajorSpan: Assign variable PS to the number of rows or columns the path spans in the major direction. Assign the initial path weight to: PW = (Sign of PathMajorSpan) * (AbsoluteValue of PathMajorSpan)^PS. PathMinorSpan: Assign variable ps to the number of rows or columns the path spans in the minor direction. Add the PathMinorSpan factor into the path weight by the following formula: PW = PW + (Sign of Path Major Span) * (Absolute Value of PathMinorSpan)^ps. PathIsAnchored: If the path is connected to a major edge, add PathIsAnchored to the value of PW. (Note: If a path is anchored at two opposite major edges, the path is a winner). if the path is connected to a major edge, PW = PW + PathIsAnchored PathIsWinner: If a path spans the board in the major direction, add PathIsWinner to W. (The value of PathIsWinner usually is very large compared to every other factor.) If the path wins the game PW = PW + PathIsWinner PathMemberCount: Assign M to the total number of nodes in a path. PW = PW + PathMemberCount ^M . Now that we know how to compute the weight of a path, let's see how path weight influences the value of the trial node. A. Identify the real paths that the current player owns that are adjacent to the trial node. B. Compute the Existing Path Weight (EPW) as the sum of the PW of the paths identified in (A). C. Generate the resultant path. D. Compute the Resultant Path Weight (RPW). E. Add the change in path weight (RPW minus EPW) to the weight of the trial node. 3. Add the change in board weight to the weight of the trial node. BoardPathCount: Assign np = the number of new paths created by selecting the trial node. NP = 1 (When a new path is started) NP = 0 (When an existing path is expanded) NP = -1 (When two paths are merged) Now add NP times BoardPathCount to the trial node weight. Part B: How all trial nodes are compared to select the next best move GamePredictability%: Let MyW = value of selecting the trial node. Let YourW = weight if the auto-player uses the current personality to assess the value if the other player were to select the trial node. (The referee does not allow "cheating". To calculate YourW, the auto-personality has to use its own weights.) The final value W of the trial node is computed by: W = MyW + (GameTreePredictability% * YourW) / 100 GameTreeMaxBreadth: The computer attempts to "look ahead" a certain number of moves to help decide the weight of each free node. It could take a very long time to evaluate every possible outcome of a single game. GameTreeMaxBreadth is the factor that limits the breadth of the beam search used for the game tree. GameTreeMaxDepth: GameTreeMaxDepth is the maximum number of moves ahead the computer looks. KEEP THIS VALUE SMALL. The total number of moves that the computer will look at has an upper bound of: GameTreeMaxBreadth ^ GameTreeMaxDepth abbreviated to: b ^ d. A 486-33 can compute about 1,000 moves in a reasonable amount of time. 2,000 moves takes about twice as long. The important thing to realize is that the number of moves is exponential with respect to d. If b = 10 and d = 3, the computer already will examine up to 1,000 moves per turn. If you let b = 10 and d = 6, the computer will examine up to 1,000,000 moves per turn! Let b and d remain small! Otherwise the computer will just take to much time to respond. It will be interrupted at the Maximum Auto Move time; thus, the personality will not get a chance to finish the calculations anyway! GameTreeBreadthTrim%: In addition to the maximum auto move time function, each personality has an option to trim or increase the breadth of the search as it descends levels in the game tree. It is most likely that you would want this factor to be a positive number. Otherwise the breadth at each level will increase and the time to select a move will grow very quickly. GameTreeValueFade%: If you read this far, you deserve to find out that the personalities don't really use an actual "game tree" to look ahead moves. I made my own algorithm to allow experimentation into how important the value of the perceived weights change as we look deeper into the game tree. This factor is used to fade or increase the value of the possible moves when looking ahead. It is applied as the values are passed back up each level. A positive value means that the value of each level decreases based on the level of the game tree. *** Basic Personality Concepts *** The information in this section is crucial to the understanding of the Factor Definitions, It is assumed that you have played a few games of Span-It! It may be helpful to examine the Board Diagram. Vocabulary: Node Major Node Minor Node Orientation Owner Path Trial Node Resultant Path Real Path Path Major Span Path Minor Span *** About the Author *** Education: Bachelor of Science University of Wisconsin, Milwaukee 1992 (Computer Science.) Programmed in C and C++ in a UNIX environment. Worked on a wide variety of projects, including parallel processing and infinite precision arithmetic. Currently a graduate student at UWM studying Cryptography and Data Security. Work Experience Overview: Worked at least five years at a local consulting firm. Managed projects and coordinated personnel. Supplied primary customer contact for several major accounts. Prepared and presented custom sales and training seminars. Designed and programmed a wide range of applications. Developed software for UNIX, DOS, WANG VS and other operating systems. Programmed in C, COBOL, Paradox(TM), Informix(TM), and more. Helped install and administer Novell(TM), LanTastic(TM), and UNIX Networks. Distributed data collection applications with hand-held computers. "Downsized" several operations from old minicomputers to UNIX or PC's. Self-study highlights: Artificial intelligence and game playing. Windows 3.x (tm) API (obvious!) OS/2 (tm) PM Programming (Span-It! is on the way...) *** Thank You *** A quick thanks to my good friend, Jay Dittmann. His persistence and detailed criticism pushed the limits of his free time, my compiler, our modems, and most wonderfully -- the quality of the final product. Node: a position on the board. Major Node: a position on the board that always connects in the direction of the owner's orientation. (See "maj" in the diagram) Minor Node: a position on the board that always connects in the opposite direction of the owner's orientation. (See "min" in the diagram) Orientation: the direction in which a player is trying to connect nodes to win the game. The player who is trying to connect top to bottom has the vertical orientation. The player who is trying to connect left to right has the horizontal orientation. The orientation does not refer to any specific node. It only refers to the players and the object of the game. Owner: the player who has placed a connector in a node is the owner of that node. Path: a connected set of nodes owned by the same player. The horizontal player owns two paths in the diagram. Path Major Span: the number of major nodes spanned by a path. In the diagram, the horizontal player's path in the upper-left hand corner has a major span of three. The horizontal player's other path has a major span of zero. If the vertical player moves in the major node highlighted in purple, the Resultant Path will also have a major span of three. Path Minor Span: the number of minor nodes spanned by a path. In the diagram, the horizontal player's path in the upper-left hand corner has a minor span of 1. The horizontal player's other path also has a minor span of 1. Trial Node: a single empty node that is the target of the current weight evaluation during auto play. Resultant Path: the path that would be created if the Trial Node were selected as the next move. In the diagram, consider the "if vertical goes here" node as the trial node. The PathMajorSpan and PathMinorSpan graphed in green is that of the resultant path. Real Path: a path that is already visible on the board.