Joined: 05 Mar 2005
|Posted: Thu Oct 29, 2009 6:28 am Post subject: General sequence of events when developing a game
|This is how I do it, your mileage may vary. Thjis is the general order of events, but of course in practice everything is iterative.
(1) duplicate and mutate the sources for one of the other games, usually Hex, to get a new (but identical) game that compiles and runs under Eclipse. Change indidental occurrences of "Hex" to your new game, etc.
(2) Get the images in shape for the board and pieces. Substitute movable bits for the new game for the movable bits in the old game. Substitute the new board for the old board. Hack up some temporary code in the initialization to place all the pieces on the board. This gets me a "pretty picture" with the real pieces and the real board, and I feel like I've accomplished something. Tune the approximate size and positioning of the pieces to make an even prettier picture.
(2a) tweak the layout based on the actual board and auxiliary controls you'll need.
(3) set up the initial board position and the other reservoirs where the real pieces will appear. change the "legaltoHitxx" functions to allow anything in "puzzle" state and nothing in any other state. Then start trying to manipulate the pieces and adjusting the gestures user interface to allow all and only legal gestures. When the "puzzle" mode manipulation is fairly complete, click on "start" and continue, only now working on legal gestures for use in actual play. At the end of this process, you'll have a user interface that lets you make legal (and only legal) moves and actually play a game. Another milestone!
(4) At this point, actually playing games is pretty tedious, so click on "start robot", which will cause you to create a move generator. You'll hit problems with un-making moves and probably have to invent some new data structures to support it. I usually try a monte-carlo robot first, but if that seems too weak, code a static evaluator and use alpha-beta. You'll only have to store information to undo the moves that the robot makes. Generally, the robot and humans end up using different moves, because the robot says "move a-b" in one go, whereas the human says "pick up a" and "drop b" as two separate gestures.
(5) once the robot is able to make moves, play it against you as well as itself, tweak the behavior, work out glitches in the UI as they appear.
When you get to the point where you can play complete games against the robot, you're ready to get a server involved and actually try multiplayer games.