General Board Game Engine

Map Engine

Overview

The map consists of zones arranged in a pattern and having properties and influence on adjacent or surrounding zones. Some of the properties are an image, elevation, line of sight, units therein, etc.

Data Structure

Map

Zone List

Image List

rows

cols

number_zones

Zone

ID

Image ID

Name

Type

Adjacent List

Zone ID (of adj zone)

Boundary List

LOS modifier

Movement modifier

Movement Cost List

Different units might have a different value for each terrain type

Combat Modifier

LOS Modifier

Stacking Limit

Stacking Penalty

Level (ground, upper, roof)

Ground Elevation

Effects List

ID (of effect, like smoke)

State (normal, smoke, destroyed)

Display

Interface

Editing Tool

Need a to have a tool to load an image, section it off, and define a map with zones. These are either regular rectangular or random overlapping rectangular.

Storage Format

Need a binary format to store the image and map information.

Units Engine

Overview

Data Structure

Order of Battle List

Units List (first turn, reinforcements, etc)

Unit

ID

Image File

Image Struct List

Name

Type

Attack Value

Defense Value

Attack Range

Morale

Movement

State

State Struct List

ID

Type (normal, broken, stunned, dispersed, etc)

Image Struct ID

Interface

Editing Tool

Storage Format

Image Engine

Image Struct List

Image File

Image Struct

ID

State

x

y

w

h

Turn Sequence

Overview

All turn based board games have a ‘turn sequence'. It is often as simple as A move, A combat, B move, B combat, repeat. But many games are much more complicated than that with many more interactions.

Integrating Sequence to Event Loop

Need a way to define a data structure for the turn sequence.

Data Structure

Game State List

Game State Struct

Zone ID

Units ID List

Sequence Position (last incomplete turn)

Memory

Saving and Restoring the Game

Need binary method of saving game state information

Network

Network Play

Multiplayer Play

UI

Keyboard

Mouse

Joystick

Scripting

What level of scripting might be useful or required for a flat, 2d game?