The Map: Cities and Geography

The game is intended to be played on procedurally-generated maps. Every game happens on a new and unique map.

However, we also support hand-crafted pre-made maps.

Map Geography

The game map is a procedurally-generated fully-contiguous island/continent.

There are several types of tiles:

Water is everything outside of the playable area. Non-interactive.

Land is an interactive tile, forming the playable area.

Fertile Land gives extra resources. Otherwise, it plays like Land.

Foundation is a land tile that has been used up by the player (via harvesting or construction). This tile generates no resources. Otherwise, it plays like Land.

Destroyed Land is a tile where an explosion has occured (from a mine or strike). Once a tile is converted into destroyed land, it generates no resources. Otherwise, it plays like Land.

Mountains and Forests are generated in random clusters of multiple adjacent tiles. They can only be indirectly captured as an entire cluster, by capturing all adjacent land. They give large amounts of resources when owned by players. No gameplay actions can happen on these tiles, and they do not display digits.

Generation

The whole playable area must be contiguous. Everything outside of the playable area is Water.

There may be rivers, which are single-tile-thick strips of water. They must not divide the land / break the contiguity of the map.

Lakes/Mountains/Forests, can be generated by creating small clusters of water/mountain/forest tiles.

Land next to Water can be converted to Fertile Land.

Cities

At map generation time, a number of cities are placed randomly. The generation algorithm aims to position them in diverse geographical locations, with a large distance between cities.

All tiles adjacent to the city tile must be land; cities cannot be located next to mountains, forests, or water.

The location of cities, and a visualization of the extents of their regions, is always visible to all players, even behind fog of war. Everyone knows how many cities each player owns at all times – it is important to judge the progression of the game and to plan strategies. The exact cities (who owns what cities) is not known, except for neighboring regions.

Every player knows the owner of foreign cities in regions neighboring the regions that are controlled by the player.

Starting Cities

Given the random nature of the map, it is important that players are not left feeling like they (or another player) got an unfair spawn location.

Because of this, we need a solution to give players some agency over the randomness, to prevent someone spawning with a large unfair advantage.

Current proposal:

Ban Stage (no pick)

At the start of the session, before the game begins, there is a ban stage.

Players are shown an overview of the map and all the city locations.

Players are given 15 seconds to place a vote for up to 2 cities.

The votes are revealed to other players after the time elapses.

The highest-voted city is banned. Nobody will spawn there.

If a player does nothing during this stage, they just do not contribute any votes. If all players do nothing, no cities get banned.

The process may be repeated multiple times depending on game mode, to ban multiple cities.

Spawn locations are picked randomly from the remaining cities.

Regions

Each tile on the map is associated with a city. All tiles that are associated with a given city are collectively known as that city's region. The region is the city's "area of responsibility".

The city's resource points are accumulated from all the tiles in its region that are owned by the same player that owns the city. The city generates income for the player, based on the amount of available resources.

Regions are generated with the map, ahead of time, and cannot change during the course of a game.

Out-of-region vs. In-region gameplay

In foreign regions (where the player does not own the city):

  • owned tiles do not generate resources
  • disconnected (non-contiguous) land ownership is not allowed

Generation

Due to the randomness and geographical diversity of the map, some cities will naturally be considered more attractive to players, which could lead to power imbalances. To counteract this, the map generation algorithm strives to keep cities balanced in resource availablitity. Regions will be computed so that similar amounts of total resources are available in each region.

The algorithm starts from the location of each city and gradually expands the region in the area around it, similar to a "floodfill" or "breadth-first-search" algorithm, until every playable tile on the map has been assigned to a city. At every iteration of the loop, the region with the fewest total available resources is selected for expansion.

When there are multiple candidate tiles (the search frontier), they are prioritized as follows:

  1. Any ResClusters (Mountain/Forest), sorted by closest distance to the city
  2. Any Regular (or other) land, sorted by farthest distance from other cities

Land tiles are assigned one-at-a-time. Mountain/Forest tiles are assigned as a whole cluster (clusters are never split between regions).

Starting Mines and Decoys

On world generation, a large number of mines and decoys are randomly scattered around the map, in all the neutral unexplored areas. Other items are not generated.

This serves to impede the initial expansion of players' territories. It also allows players to capture them and potentially sell them for precious early-game money, while their cities' income is still rather low due to a lack of territory.

The early-game stage of MineWars, before encountering another player, is hence more like a glorified single-player minesweeper experience, as each player tries to form some initial territory and prepare for their first PvP encounter, while being mindful and trying to figure out the randomly-placed initial mines.