CPSC 4160 – 6160 / Invasion of London: Forkbeard’s Call
Ethan Anderson
Game Description
Invasion of London is a Viking-themed city builder set in the year 1004 A.D. An invasion is planned in 100 months and the support from your village is key to their success. However, your village is terribly small and must be strategically expanded to raise an army over the next 100 months despite limited space, time, and resources.
The objective of Invasion of London is to raise an army of 250 warriors and 10 ships over the course of only 100 turns. Each warrior needs food and weapons, so the player must build grain fields and blacksmiths. The shipyards need ore and lumber, so the player must build lumber mills and mines. However, there’s a limited amount of space within the village’s walls, so the player must prioritize specific buildings or save up resources to upgrade the walls.
Game Mechanics
Construction - The player can click-and-drag buildings from the right panel to start a new construction project at the cost of some resources.
Wall Expansion - For an exponentially rising price, the player can increase the size of their walls, making space for more buildings.
Random Events - Fires, blights, plagues, and trade caravans can randomly destroy buildings, stop food, kill warriors, and add resources.
Disabling - When a building is consuming resources to produce a lower-priority item, it can be disabled to conserve that resource.
Demolition - To make space, a demolition can be started to remove a building from the village.
War Power - The amount of ships and warriors the village has is visualized in the river and above the river respectively.
Technical Description
A future resource predictor algorithm is used to calculate how much of each resource will be produce/consumed next turn based on the current buildings. This can be seen in the main panel with + and - after each resource.
The villager’s navigation is performed using an A* algorithm on a navmesh managed using a quadtree spatial hashing algorithm allowing nearest neighbor searches to go from O(N) → O(log(N)). The quadtree package is e-pyquadtree which I developed in spring 2024.
Controls
Everything in the game can be done using the mouse. No keyboard is ever necessary.
Use middle-click-and-drag to pan around the game world or you can use WASD if your mouse/touchpad doesn’t have a middle mouse click (pushing down the scroll wheel).
Click-and-drag buildings with left-click from the right panel to start construction.
Game Limitations
Future Work
A battle scene could take place after turn 100 where you see how your army performs against the Londoners. Besides the background music, sound effects could be added for construction, fires, etc.. to make the game feel more alive. An animation could also be added to show construction progress.
Game objective
Game Screenshots
Village size - The village can only be so large before the navigation system would become too slow, so the game is limited to only 100 turns and expanding the wall becomes exponentially more expensive. The buildings’ production is balanced to only need about 50 to win.
Aesthetic Elements - Only a limited number of trees, driftwood, river ripples, and clouds can be added before their updates would cause a significant performance hit without a performance overhaul.
When hovering over a building, you can click on the disable or demolish button to either stop production or destroy the building. Click on the green fast-forward button in the bottom left to go to the next turn.