Knight Hawks Online

Document container for project design documents.

Assembly Summary

KnightHawks.Rules
The base for all rules. This contains the base classes and interfaces necessary to allow plug and play addition of rules engines. An abstract class named RulesIdentity will be used to allow the GUI to determine what to display for rule selection. This class must be implemented in all other rule assemblies.

KnightHawks.Rules.Basic
The Basic boardgame rules. Inherits from KnightHawks.Rules.

KnightHawks.Rules.Advanced
The Advanced boardgame rules. Inherits from KnightHawks.Rules.Basic.

KnightHawks.Rules.RolePlaying
The RPG add-ons to the advanced boardgame rules. Inherits from KnightHawks.Rules.Advanced.

KnightHawks.Net
Handles all TCP/IP traffic.

KnightHawks.Graphics
Handles all specialized graphic processes (creation of hex grid, rotating images, etc.).

KnightHawks.UI
The graphical user interface. This will dynamically load any assembly titled KnightHawks.Rules.* -- using the RulesIdentity class to display a dialog to the user allowing rule selection.

Basic Game XML - Scenario

Quote:
<scenario name="Assault on Fortress Kid'Kit" rules="Basic">
  <side name="UPF">
    <ships>
      <ship name="UPFS Scimitar" adfF="5" mr="4" hullPoint="15">
        <weapons>
          <weapon name="Laser Battery" ammunition="-1" />
          <weapon name="Assault Rocket" ammunition="4" />
        </weapons>
        <defenses>
          <defense name="Reflective Hull" isActive="-1" isLimited="0" />
        </defenses>
      </ship>
    </ships>
  </side>
  <side name="Sathar">
    <ships>
      <ship name="Fighter A" adfF="5" mr="5" hullPoint="8">
        <weapons>
          <weapon name="Assault Rocket" ammunition="3" />
        </weapons>
        <defenses>
          <defense name="Reflective Hull" isActive="-1" isLimited="0" />
        </defenses>
      </ship>
    </ships>
  </side>
</scenario>


Notes:
  1. scenario/rules designates which rules assembly to use. Valid values are:
    1. Basic: use KnightHawks.Rules.Basic
    2. Advanced: use KnightHawks.Rules.Advanced
    3. RolePlaying: use KnightHawks.Rules.RolePlaying
  2. defense/isActive of -1 means always on, 0 means off, 1 means on.
  3. weapon/ammunition < 0 means unlimitted; all others are the ammunition count.

Basic Game XML Document - Weapon Chart

Quote:
<weaponChart>
  <weapon name="Laser Cannon" damage="2" modifier="0" range="10" forwardFiring="1" rangeDiffusion="1" mpo="0" limited="0" icmModifier="0">
    <hitChart>
      <defense name="Reflective Hull" toHit="60" halfDamage="0" />
      <defense name="Masking Screen" toHit="20" halfDamage="1" />
    </hitChart>
  </weapon>
  <weapon name="Laser Battery" damage="1" modifier="0" range="9" forwardFiring="0" rangeDiffusion="1" mpo="0" limited="0" icmModifier="0">
    <hitChart>
      <defense name="Reflective Hull" toHit="50" halfDamage="0" />
      <defense name="Masking Screen" toHit="10" halfDamage="1" />
    </hitChart>
  </weapon>
  <weapon name="Torpedo" damage="4" modifier="0" range="4" forwardFiring="0" rangeDiffusion="0" mpo="1" limited="1" icmModifier="10">
    <hitChart>
      <defense name="Reflective Hull" toHit="70" halfDamage="0" />
      <defense name="Masking Screen" toHit="70" halfDamage="0" />
    </hitChart>
  </weapon>
  <weapon name="Assault Rocket" damage="2" modifier="4" range="4" forwardFiring="1" rangeDiffusion="0" mpo="1" limited="1" icmModifier="5">
    <hitChart>
      <defense name="Reflective Hull" toHit="60" halfDamage="0" />
      <defense name="Masking Screen" toHit="60" halfDamage="0" />
    </hitChart>
  </weapon>
  <weapon name="Rocket Battery" damage="2" modifier="0" range="3" forwardFiring="0" rangeDiffusion="0" mpo="0" limited="1" icmModifier="3">
    <hitChart>
      <defense name="Reflective Hull" toHit="40" halfDamage="0" />
      <defense name="Masking Screen" toHit="40" halfDamage="0" />
    </hitChart>
  </weapon>
</weaponChart>


Notes:
  1. damage is number of d10s to roll for damage
  2. modifer is the number to add to the total rolled for damage
  3. halfDamage of 0 means the weapon will not do half damage against this defense.  A value of 1 means the weapon will do half damage against this defense.

Screenhots

Screenshots of the developing UI.



Screenshot 1: The main windows with all controls collapsed. This is full screen with all Windows artifacts hidden (including the start bar). The user will have the ability to minimize to the task bar and restore to the full-screen view.

Screenshot 1



Screenshot 2: The same windows with the ship controls shown. Users will be able to select their ships from the icon list shown at the bottom. In this shot the Sathar Frigate SAV Stinger is selected.

Screenshot 2

When a ship is selected the statistics for that ship will be shown. The first column shows hull points, ADF, and MR. The second shows available weapons. I'm working out targeting, but the idea is the user can check off the weapons he wishes to fire upon a target and commit them all at one time.

The third column shows defenses. Those checked are active. As you can see, Reflective Hull is always active.

Finally comes the movement controls. They are, starting from the left and moving clockwise, turn port, move forward, turn starboard, and enter/leave orbit.

Basic Game XML - Defenses Chart

Quote:
<defenses>
  <defense name="Reflective Hull" isLimited="0" />
  <defense name="Masking Screen" isLimited="1" customClass="KnightHawks.Rules.Basic.MaskingScreen" />
</defenses>


Notes:

  1. isLimited is used to designate if the defenses has a limited supply
  2. customClass is used to designate a custom class for those defenses that do not have simple on/off functionality. In this case the custom class is used to determine whether or not the masking screen and its creating ship are in the same hex.  If not the masking screen is removed from the board.