| ECE291 | Computer Engineering II | Lockwood, Spring 1999 |
Team Members:
Dave
Kainer: Graphic Engine
Charlie
Pikscher: Game Logic
Ryan
Sawatzky: Networking
Charles
Chandler, II: Sound FX
Project Description:
Out there on the high seas several networked players will take control of the navy`s most destructive ships, battling each other for control of the map. This real time naval combat simulation will hopefully feature 320x200x256 graphics in an above 2D view. Ships will have the capability for various speeds, manouvreability, armaments, as well as AI fire-control and mapped damage. i.e. Hit the engine rooms and your enemy slows down; Hit the gunpowder storage and...well..you know. Anyone who wants to let loose with some 16" shells is welcome. High impact sound effects and graphic sequences will complement engrossing gameplay.
This is NOT a basic "shoot-em-up". Goals are to produce
a simulation that requires players to use strategy and the features of
their ship to the maximum in order to defeat others in various scenarios.
Game Description:
The game will open by asking the player how many people
will be playing (2-4). Once a number is selected, the game will wait
until it has received notification from all the other players. The
game will then begin. The playing field will be 25 320x200 screens,
with scrolling. The controls will be the following:
1: Target
Ship 1
2: Target
Ship 2
3: Target
Ship 3
4: Target
Ship 4
Up Arrow:
Speed up - There will be four speeds: stop, slow, medium, and fast
Down Arrow:
Slow down
Left Arrow:
Rotate counterclockwise
Right Arrow:
Rotate clockwise
LMB:
Fire Guns
RMB:
Fire torpedos
ESC:
Leave game
The Ship itself consists of 10 compartments--five on each side--that have differing size and damage ratings. Enemy shells and torpedoes damage these compartments. If an engine compartment is hit, your speeds will decrease proportionate to the compartment damage. Likewise, your turn rate will decrease with rudder damge. Hitting the gun or torpedo compartments will cause their reload rate to increase. When your ship is damaged enough, you will sink! Gun targeting is controlled by the mouse and the torpedoes are homing. You must select an enemy ship before you can fire a torpedo. The torpedoes home quite well, but are slow and will sink after they go so far. Have fun!
Implementation:
The game will be implemented using a loop in the main
procedure to control game flow. We will be using our own keyboard
handler (much like mp3) to get the input to control the ship. Targeting
of the guns will be done through the mouse and a mouse handler (like mp5).
The ship movement will be controled via a large information structure that
is in structs.inc. Instead of using GetTime to control when the ship
moves, the ship struct contains many timer variables that count down.
When they reac zero, they are reset and the ship then moves. When
the keyboard handler is called, the next move is stored in the ship struct
and the counter started, so there is a delay between a key press and the
actual change of the ship, whether it be moving or firing the guns.
This means that the code will have to be timed to the lab machines.
If we have time, we might use the computer's clock to make the game operate
on any machine, but this is an extra feature that we might not add.
The graphics will be done in 320x200x256 mode 13h video. We will
implement a double buffer to allow smooth scrolling across the screen.
The playing field will be the equivalent of 25 320x200 screens, so scrolling
will be necesary. Our game will be a muti-player game only, unless
we have time to develop an adequate AI. Our network will be implemented
using NetBIOS and the NetLib.lib provided to us. We will also have
sounds that will play when the ship moves, or is hit, or does anything
worthy of a sound. There will be a midi file that will play in the
background during the game and intro. This will be done using the
Sound Library that is also provided to us. More detailed explanations
of our structures and procedures follow.
Files:
Structs.inc
- Contains the main game structures. Maintained by Charlie.
Network.inc - Contains the network structures. Maintained by Ryan.
Main.asm
- The main controller of the program. Basically a loop to control
program execution.
Maintained by All, but basically written by Charlie
Logic.asm
- The procedures for all of the game logic. Controls ship movement,
firing, and damage.
Maintained by Charlie.
Network.asm
- The procedures for all the network controllers. Sends and recieves
packets so
every can see what everyone else is doing. Maintained by Ryan.
Animate.asm - The procedures for drawing the screen and controlling scrolling. Maintained by Dave.
Sound.asm - The procedures for playing all the sounds of out game. Maintained by Charles.
Other Files:
Macros.inc - all purpose macros given
available to class, basically used for debugging
Lib291.lib - 291 Library Files
NetLib.lib - Code provided for network
support
Sblib291.asm - Code provided for sound
support, written by Mike Urman
Sbcons.inc - Include file for sblib291.asm
and sound.asm