A General’s View – Complete Game

Author’s Note: I mentioned in my last post that I had been working on my final year project for college. Just wanted to share what I came up with in the end. The project is a two-player game based on A General’s View, the tabletop strategy game that I designed in 2015 and is written using the Allegro 4 game library. The game is not particularly sophisticated and there are a few interface bugs that need to be ironed out, but it works and could be used for the basis of a more sophisticated game in the future.

The game is played by two human players with the following controls:

Map keys

Up, Down, Left, Right – move cursor

Enter – enter menu

Menu keys

Up, Down – move cursor

Enter – select menu option highlighted by cursor

For full rules and objectives of the game, please see A General’s View: Rules (Alpha Version). Please note that in this version of the game, at most one unit from each player can occupy a tile at once.

The game (in both Windows executable and source code forms) can be downloaded from the following link: https://drive.google.com/folderview?id=0B_lGPZTjA4fzbHN4YVExelBEejA&usp=sharing



A General’s View – Rules (Alpha Version)

Author’s Note: I’ve been rather preoccupied with other things at the moment, including the Rugby World Cup and getting to work on my final-year college project. With respect to the latter, the following post illustrates some of the work that I have had to do for this project.

An industrial era turn-based strategy game for 2 players.

Section 1: Play Rules

  • The game is played between two players, one who is identified as the red player and the other who is identified as the blue player.

  • The game is played on a square grid, called the battle map, where each square on the grid has one of three states of ownership: neutral (or no ownership), owned by the red player, or owned by the blue player.

  • At least 2 of the squares on the battle map are identified as –city– squares. The same ownership rules apply for these squares as any other squares.

    • Each player starts with an equal number of the city squares on the map, where the number of city squares owned by a player at the start of the game is at least 1.

    • A player wins the game when all city squares on the map are owned by that player.

  • The game is played in turns, where one of the two players acts and is referred to as the acting player, with the other player referred to as the opposing player. At the end of their turn, the current opposing player becomes the acting player and vice versa.

    • Before the game begins, both players roll a 6-sided dice. The player who gets the highest value on the dice chooses whether they wish to act first or second. If the value rolled on the dice by both players is the same, the players reroll the dice until the values that each player receives are different.

  • The ownership of the squares on the map is contested by units controlled by each player.

    • A unit is a single game entity representing a company-sized group of 100 soldiers of a specified type and represented by a single game piece.

    • A unit possesses several characteristics which will be discussed in more detail below: ownership, cost, attack value, defence value and movement points.

    • Units may be put into play on a player’s turn. In order to put a unit into play, they must pay the specified cost for that unit type and then place that unit on one of the city squares which they own. The player who put the unit into play is its owner.

  • Each player starts with a predetermined and equal amount of gold, which is called their total gold value.

    • Gold is used to pay for new units, with the cost of each unit specified in gold and subtracted from the total gold that a player possesses when that unit is put into play.

    • If the cost of a unit is greater than the total gold possessed by a player, they may not put that unit into play.

    • Each city square on the map has a specified gold generation value which is determined before the start of the game. This is used during the gold collection phase of a player’s turn, discussed below.

  • Each player’s turn is composed of four phases: Gold collection, unit movement, attack and cleanup.

    • During the gold collection stage, the acting player adds the sum total of all of the gold generation values of the cities which they own to their total gold value.

    • During the movement phase, the acting player may move any number of their owned units (including zero units).

      • A unit may be moved a number of squares adjacent to each other horizontally and/or vertically across the battle map. The number of squares that a unit may be moved is determined by the unit’s movement points, which represent a unit’s movement capability in a single turn. For each square that a unit is moved, 1 point is deducted from the unit’s movement points for that turn if the square into which the unit is moving is either not owned or owned by the acting player, while 2 points are deducted if the square into which the unit is moving is owned by the opposing player. A unit may move any number of squares horizontally or vertically until they do not have enough remaining movement points to move into any adjacent squares. These rules are illustrated in Figure 1.1.


Figure 1.1: For a unit with three (3) movement points, the green squares represent squares into which the unit can move during one turn if the squares are either not owned or owned by the unit’s controller. The squares marked with yellow crosses represent squares into which the unit can move if the squares are owned by the opposing player. The red squares represent squares that are always outside of this unit’s movement range for this turn.

      • If a unit moves through a square which is not owned by the acting player and which contains no units owned by the opposing player, the ownership of that unit is transferred to the acting player.

      • If a unit moves through a square which contains one or more units owned by the opposing player, the unit may move no further squares during that turn.

    • The attack phase involves all squares in which units owned by both the acting and opposing player are present.

      • For each square containing units owned by both players, the acting player selects the unit in that square which they own with the highest attack. The opposing player selects the unit in that square which they own with the highest defence. If two or more units owned by either player has the same attack or defence value respectively, they may choose any of the units with that value.

      • The attack value of the acting player’s selected unit and the defence value of the opposing player’s selected unit are added together. This value is referred to as the reference value.

      • A suitable random number generator or fair pseudorandom number generator is used to generate an inclusive integral value between 1 and the reference value. If this value is below or equal to the attack value of the acting player’s unit, that unit wins and the opposing player’s unit is removed from the battle map and from the game. Otherwise, the opposing player’s unit wins and the acting player’s unit is removed from the battle map and the game.

      • If the acting player’s unit wins, the opposing player selects the unit in that square which they own with the next highest defence. Otherwise, the acting player selects the unit in that square which they own with the next highest attack.

      • The above steps continue until all units remaining in that square are owned by a single player. If that player does not own that square, the ownership of the square is transferred to that player.

    • During the cleanup phase, 1 supply point is subtracted from all units owned by that player and not currently receiving supplies as per the supply point system, described below.

  • Each unit when created starts with 3 supply points, representing ammunition, provisions and other military supplies.

    • A unit receives supplies every turn if there is at least one adjacent square owned by that unit’s owner and if, from that square, an unbroken, direct line can be drawn in horizontal or vertical steps from square to square in a manner similar to unit movement to a city owned by the unit’s owner. This is illustrated in Figure 1.2.


Figure 1.2: In the first example, there are two squares adjacent to the unit which are owned by the unit’s owner. From both of these squares, one can trace a direct line in horizontal or vertical steps from square to square to a city owned to the unit’s owner. In the second example, there is one square adjacent to the unit which is owned by the unit’s owner; however, as one cannot draw a direct line from this square to a city owned by the unit’s owner, it is not supplied through this square. Similarly, the squares to which direct lines can be drawn from the city are either not adjacent to the unit or are not owned by the unit’s owner and therefore the unit is not supplied through these squares.

    • A unit that does not receive supplies at the end of the unit owner’s turn subtracts 1 from that unit’s current supply points until the number of supply points for that unit is 0.

      • A unit which has 0 supply points is treated as having an effective attack and defence value of 1 rather than its usual values until it receives supplies again.

    • A unit that receives supplies at the end of the unit owner’s turn does not subtract from that unit’s supply points and if that unit has less than 3 supply points, it adds 1 to its number of supply points.

Section 2: Unit types

  • Militiamen: Poorly armed and poorly trained, this unit represents an impromptu group of irregulars, such as a volunteer town militia or a set of conscripts pressed into action.

    • Cost: 50 gold

    • Attack: 2

    • Defence: 2

    • Movement Points: 5

  • Line Infantry: The core of an early industrial era army, line infantry represent a significant step up from militia, being drilled to stay in lockstep along rectangular formations designed to present a coordinated line of fire to the enemy. With their discipline and morale, they present a strong defensive line.

    • Cost: 100 gold

    • Attack: 2

    • Defence: 5

    • Movement: 5

  • Skirmishers: This infantry unit forms looser formations than line infantry and, armed with more accurate muskets than other units, their goal is to harry oncoming formations and break their coordination by attacking their officers. However, their loose formations can also represent a weakness, as a committed and concentrated attack can easily divide them into units too small to effectively fight back.

    • Cost: 100 gold

    • Attack: 5

    • Defence: 2

    • Movement: 5

  • Hussars: A type of light cavalry, hussars are most regularly used for reconnaissance and raiding, but can, if an opportunity arises, attack effectively against a vulnerable and coordinated foe, using their sabres to great effect. Lacking armour or long-range weaponry, hussars lack the ability to effectively defend themselves if they are outmanoeuvred.

    • Cost: 120 gold

    • Attack: 4

    • Defence: 2

    • Movement: 7

  • Dragoons: More like mounted infantry than true cavalry, dragoons ride to battle but will usually dismount when the fighting starts, forming a rectangular formation similar to line infantry and attacking with their shortened carbines. Not as effective as line infantry, but able to provide support where necessary, dragoons can, nevertheless, be used as cavalry in a pinch.

    • Cost: 120 gold

    • Attack: 2

    • Defence: 4

    • Movement: 7

  • Lancers: While the style of lancers may have changed drastically from the armoured knights of the medieval era to the altogether more lightly equipped troopers of the industrial era, the lancer has lost none of its potential to destabilise an entire front if used properly. With a devastating attack that can shatter enemy infantry formations, lancer squadrons represent the shock troops of the age, but are no less susceptible than any other light cavalry unit.

    • Cost: 160 gold

    • Attack: 6

    • Defence: 2

    • Movement: 7

  • Cuirassiers: The elite of the battlefield, cuirassiers are one of the few armoured units on the industrial era battlefield. Wearing a metal breastplate and backplate, the armour of a cuirassier does little to protect him against musket shots or artillery, but provides an extra layer of defence against sabres or bayonets. Slower and more cumbersome than other cavalry units, cuirassiers nevertheless possess an élan which can be hard to overcome.

    • Cost: 160 gold

    • Attack: 5

    • Defence: 3

    • Movement: 6

  • Artillery: The so-called “King of Battle”, artillery batteries have the biggest guns with the greatest power. Used effectively, an artillery strike can have terrifying effect, smashing through infantrymen and cavalry alike. However, its immobility – even with the use of horse-drawn limbers and caissons – means that it is particularly susceptible to attack if not appropriately protected by other forces.

    • Cost: 120 gold

    • Attack: 10

    • Defence: 1

    • Movement: 3

Hostile Space – A Preliminary Attempt at Tabletop Game Design

Editor’s Note: I’m back after a month’s break – trying among other things to consider an appropriate topic for a new blog post!

A few months back, I was ruminating on a discussion I’d had with my friends regarding game design. Game design is a field which always seems easy when first encountered, but many hidden issues show themselves after a deeper look. Many of these issues concern the concept of game balance, whereby one player has an insurmountable advantage (or at least an advantage that is difficult to surmount) over the opposing player. Occasionally, it’s a fun exercise to try to beat the odds against you, but if the game gives a consistent advantage to certain strategies or choices to the detriment of others, it makes a lot of the game designers’ efforts redundant.

Keeping this in mind, I set myself the task of creating a game that had limited complexity in terms of setting up the game, but with the potential for complex strategies and rules once the game began. As a template, I used a concept that I had conceived of for a computer game that I wish to write; as a result, I could get a twofer where I could test the rules with human players before trying to transfer it to the computer screen. The game uses a quasi-Newtonian concept of movement, similar but probably inferior to the likes of Triplanetary. Nevertheless, if I can figure out how to refine these rules, I will endeavour to do so.

I’m making these rules available under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License; specific details are available in the copyright details underneath the rules themselves. Any suggestions for rules changes or updates would be appreciated.

HOSTILE SPACE – A game for 2 or more players
:Setting Up:

Each player begins with a set number of spacecraft (probably 4-8 in total). Each spacecraft, in turn, starts with a set number of missiles (probably 8) and a set delta-v value (probably 12-24 hexes).

The players throw a die to determine turn precedence. If two or more players receive the same amount on their die roll, these players roll again, and the order of these players is determined by this roll. The player that rolled the highest may pick a hex within the grid and place a marker there. The mark denotes an initial “zone of control” for that player, whereby the player may place their spacecraft anywhere within six hexes of that marker, and no other player may place a marker so that its zone of control would overlap that player’s zone of control. This process continues in descending order of the die rolls.

Once the spacecraft are placed, the players should remove their markers and mark their spacecraft numerically in the order they were placed. All missiles should in turn be marked with the number of the spacecraft which fired them followed by the number identifying the order in which they were fired.

:Game Rules:

Once all spacecraft have been placed and numbered appropriately, the game begins. In the first phase of each turn, the players may adjust the velocities of each of their spacecraft. Each spacecraft has a set beginning delta-v value, which determines how much they may change their velocity.

An increase or decrease in velocity in either the direction that a spacecraft is pointing or the direction opposite to the one in which the spacecraft is pointing (a “linear change” in velocity) can be resolved by subtracting the value of the difference between the number of hexes that the spacecraft would move otherwise and the number of hexes the player wishes the spacecraft to move.

For instance, if the spacecraft is travelling at a velocity of four hexes in a given direction and the player wishes the spacecraft to only travel at a velocity of two hexes in that direction, the player will spend two hexes of delta-v to decelerate the spacecraft. This may be calculated as such:

[current] 4 hexes – [proposed] 2 hexes = [delta-v cost] 2 hexes.

This rule is also applied to linear changes in velocity that would result in the spacecraft travelling in the direction opposite to the one that it is pointing. For instance, if the spacecraft is travelling with a velocity of three hexes in the direction that it is pointing, and the player wishes it to have a velocity of three hexes in the direction opposite to the direction of travel, the player will spend three hexes of delta-v to bring the velocity to zero, then three more hexes to accelerate the spacecraft in the other direction. This may be calculated as such:

[current] 3 hexes – [proposed] (-3 hexes) = [delta-v cost] 6 hexes.

If the velocity of a spacecraft is zero, the player may change the direction in which it is facing for no cost. If, however, the velocity of the spacecraft is non-zero, a change in direction costs one hex for each hex between the place where the spacecraft would end its movement at the current velocity and the proposed target, calculated in a manner of “concentric circles”. [NOTE: I’ll have to put in rules illustrating this better, if not completely rethink this section of the rules.] Calculate velocity change costs for linear velocity change first, then for directional change.

After all players have chosen their changes in velocity, the movement phase begins. Each player in order of turn precedence repositions their spacecraft in accordance with their new velocity. If at the end of movement, two spacecraft or a spacecraft and an object which occupies only a single hex are in the same hex, destroy both entities. If at the end of movement, a spacecraft is in the same hex as an object that occupies more than one hex, destroy the spacecraft. If during movement, a spacecraft would travel outside the borders, place the spacecraft at the corresponding position at the opposite side of the map and continue its movement in the current direction. [NOTE: This leads to a toroidal game area, but short of awkward rules concerning the “halfway point” of a hex grid, this is a necessary expedient.]

After the movement phase, the firing phase begins. Each player in order of turn precedence may choose to fire one missile from each of their spacecraft as long as that spacecraft has at least one missile remaining. The missile is placed in any of the hexes surrounding the spacecraft and will continue in that direction at a fixed velocity at least slightly higher than the maximum velocity of a spacecraft (approximately 15-30 hexes, based on proposed delta-v limits). Once all players have declared which spacecraft, if any, will fire, resolve the movement of each of the missiles, first by order of the players’ turn sequence, then by the order in which they were fired.

If, during movement, a single missile would pass through the hex occupied by a spacecraft or an entity occupying a single hex, destroy that missile and resolve damage if appropriate. An entity occupying a single hex is immediately destroyed, while damage to a spacecraft may be resolved under two systems: the “Brutal” system where a single hit from a missile will destroy a spacecraft, and the “Fortified” system where a spacecraft has three hit points, and on each hit from a missile, a D6 is rolled and the result modulo 3 is taken away from the spacecraft’s hit points.

If a missile would pass through a hex occupied by an entity occupying more than one hex, destroy that missile.

If, during movement, multiple missiles would pass through a hex occupied by a spacecraft or an entity occupying a single hex, determine the missile that was fired first, and on which turn it was fired. That missile, along with any others fired on the same turn, are considered to have hit and may resolve damage as normal. The remainder of the missiles pass through the hex and continue movement as normal.

The winner may be determined by the last remaining player, or by the player with the most spacecraft, or in the case of a tie, most missiles remaining after a number of turns.

:Entity placement rules:

At the beginning of the game, the players may choose to place additional game entities such as asteroids on the game map. If they choose to do so, roll either one or two D6s to determine the number of additional entities to place.

The entities are then placed on the map after the players have positioned their spacecraft. Each entity is placed one at a time on the map by the players in order of turn precedence. An entity may be placed on any hex or series of hexes on the map as long as it does not occupy or overlap a hex that is already occupied and as long as it does not overlap a player’s zone of control established by their marker or base.

:Base Defence – an alternate play style:

In the Base Defence play style, each player begins with a base, a game entity consisting of seven tokens: The central token, which occupies a single hex, and six peripheral tokens which occupy the hexes surrounding the central token. Instead of placing a marker at the start of the game, the players place their bases instead, and the central hex determines the centre of the player’s zone of control.

The objective in Base Defence is to destroy your opponent’s bases by attacking them with missiles and destroying the central token, while simultaneously defending your own. A player whose base is destroyed is considered to be defeated; any remaining base tokens, spacecraft and missiles owned by that player remain in play and all spacecraft and missiles continue at the velocity they were travelling. However, a defeated player may not change the velocity of any of their spacecraft, nor may any of their spacecraft fire any missiles.

A base does not follow the usual Hostile Space rules for entities occupying more than one hex. If a spacecraft or missile would pass through a hex occupied by a base token, both the spacecraft or missile and the base token is considered to be destroyed, and the hex occupied by the base token is then considered to be empty for the purposes of other objects passing through that hex. Once the central token of a base is destroyed, the player owning that base is defeated; see above for the consequences of defeat.

If a spacecraft ends its turn at zero velocity beside a base token owned by either the same player that owns that spacecraft or a player allied to the owner of the spacecraft, that spacecraft regains all of its expended delta-v and up to two of its expended missiles, effective on the next turn.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.