ECE291 Computer Engineering II Lockwood, Spring 1999
BATTLE IN THE BLUE
 
 

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