CSC 460 -- Spring 2006 -- Bomberman Project Time-stamp: <2006-04-19 11:39:47 shade> Major change: there are no "lives", just shields. Players never respawn. There are no +/- life items. Overview: Multiplayer client/server bomberman-style game with one server and 2-16 simultaneous players in 2-4 teams of 1-4 players each. BASIC GAME PLAY 1. Someone starts a server with a port number, map file, and timeout on the command line, like 'bombserv 41000 level1 45'. Clients must be notified if the timeout has elapsed and/or the game is full, and the client must display a suitable error message. 2. Players join in by running the client with the port number, team name, and player name. There must be feedback as to whether a connection was successfully established. If so, there must be some estimate of how long before the game starts. 3. Basic rules: * 20x20 grid (one "pixel" is 1x3 characters) * last team standing * players start with + carrying capacity 1 (range: 0 or more) + shielding 3 (range: 0 or more) + skill 0 (range: any, including negative) * friendly fire (bombs will affect teammates) * "touching" a bomb or item means actively attempting to move into its square, not merely being in an adjacent square * players, walls, and bombs are solid * players must pick up bombs from spawn points * bombs are dropped under the player * two or more bombs can't appear at the same place * if an item is picked up and a bomb dropped at the same place, the bomb replaces the item * items appear at spawn points, and remain until picked up or destroyed * items are "mysteries" - unknown until picked up (by touching them) * command keys for up, down, left, right, stop, drop bomb, quit * bombs have an animated 3s fuse * bomb blasts trigger other bombs within the blast radius * bomb blasts have an animated explosion: increasing radius, then decreasing radius * bombs have a circular blast, but the blast is blocked by walls, and the explosion doesn't flow around walls * bombs affect all players and destroy all items in the blast * a shield protects the player from one bomb blast, and is used up * a bomb blast kills an unshielded player * positive skill means you can defuse a lit bomb by touching it (uses one skill point) * negative skill means you can't pick up a bomb, but instead light it when you touch it (removes a negative skill point) * if you have capacity 0 and skill 0, then bombs act like walls TECHNICAL REQUIREMENTS * Client redraw time must be proportional to the number of variable game elements on the screen (players, bombs, items, status indicators, etc.), NOT to the screen size. It is not acceptable to redraw the entire screen from scratch on every refresh. * The client may never busy-wait; it should either be updating the screen, or blocked waiting for input either from the keyboard or from the server. * Packets to/from the client should be as small as possible without resorting to evil bit-fiddling tricks. It is not acceptable to send clients full screen contents (even in compressed form): only send enough for the client to know HOW to redraw the screen. * The server may never busy-wait; it should either be computing updates to send to the clients, sending data to the clients, or blocked waiting for an alarm or input from the clients. The server must be multithreaded with one thread per player. * Game play must be fluid and independent of the number of clients or CPU speed. * There must be enough information on the screen for a total novice to be able to play the game without instruction, other than being told (if necessary) which keys control the player. MAP FILE FORMAT 20 lines of 20 nonblank characters, as defined below, followed by one or more item spawn point definition lines. The same item spawn point character can be used in more than one place on the map. . open space * wall 0-9A-Z item spawn point: definition follows map abcd player start location: team 1, players 1-4 efgh player start location: team 2, players 1-4 ijkl player start location: team 3, players 1-4 mnop player start location: team 4, players 1-4 qrst player start location: team 5, players 1-4 (future use) uvwx player start location: team 6, players 1-4 (future use) Item letters: b small bomb (radius 1) B big bomb (radius 3) c decrease capacity by 1*, dropping a lit bomb if necessary C increase capacity by 1 k decrease skill by 1 K increase skill by 1 m small megabomb (radius 5) M big megabomb (radius 7) s decrease shielding by 1 S increase shielding by 1 * if capacity is already 0, you lose 1 skill AND 1 shielding point Spawn point definition examples: 4=b2M1B4,2,6 2/7 chance of small bomb 1/7 chance of big megabomb 4/7 chance of big bomb 2-6sec delay before (re)spawning Q=C3s6c2k9,5,5 EXTENSIONS Teams may implement extensions to the basic game as long as they do not conflict with it. Extensions will be awarded bonus points based on their cleverness and implementation difficulty.