Skip to content

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

View the deployed map archive

Sid Meier's Colonization Map Archive

Ship leaving Europe

A community-maintained archive of custom maps for the original Sid Meier's Colonization. The project is intended to preserve maps from websites that have disappeared and to accept community contributions.

The easiest way to add a map is to open a map submission issue. The form collects the map file, source, permission notes, and metadata so a maintainer can review it and add it to the archive. If you are comfortable with Git, you can also submit the files directly with a pull request; see CONTRIBUTING.md for both paths.

Archive layout

Each map has a stable, lowercase ID and exactly three files. Most maps use a direct MP file:

maps/
└── new-world/
    ├── new-world.mp
    ├── new-world_preview.png
    └── new-world_full.png
  • *.mp is the playable Colonization map, extracted from its original download without modifying the map data.
  • *.zip may replace the MP file when the map depends on supporting scenario files. Such a ZIP must contain exactly one playable MP file.
  • *_preview.png is a smaller image suitable for indexes and galleries.
  • *_full.png is the full-size map image.
  • maps.json is the machine-readable catalog.
  • maps.schema.json documents the catalog format.

Links in the catalog are repository-relative, so they work in local clones and can be converted to raw GitHub URLs by consumers.

Catalog format

{
  "catalog_version": 3,
  "maps": [
    {
      "id": "new-world",
      "name": "New World",
      "author": "Jane Doe",
      "release_date": "1996-08-14",
      "size": {
        "width": 56,
        "height": 70
      },
      "tags": ["historical", "large"],
      "source_link": "https://web.archive.org/web/20010101000000/https://example.com/new-world",
      "file_link": "maps/new-world/new-world.mp",
      "preview_link": "maps/new-world/new-world_preview.png",
      "full_preview_link": "maps/new-world/new-world_full.png"
    }
  ]
}

size is the playable map size in tiles, not the MP or ZIP file size. For preserved maps whose exact date is unavailable, release_date may be a year ("1996") or a year and month ("1996-08"). Use null only when no reliable date can be found. source_link is optional, but strongly encouraged for archived maps.

Render the preview images

The two PNGs beside each map are drawn from the map file itself, by colwin map-preview from the sibling win-tools repository. It paints each square the way the game does — terrain and its seams, forests, hills and mountains, rivers and their mouths, coastlines, roads — so the picture is what a player would see rather than a colour per tile.

COLWIN_GAME=~/games/colonization tools/render_previews.sh

That walks the catalog, takes each entry's file_link (a .mp, or the one playable .mp inside a .zip), and writes <id>_full.png at 32 pixels a square and <id>_preview.png at 8. --only ID does one map, and --check re-renders into a temporary directory and compares instead of writing, which is how to tell whether the committed images are still current.

The artwork comes out of the game's own COLDATA1.DLL, so a retail install has to be to hand: pass --game DIR or set COLWIN_GAME. Neither this repository nor win-tools contains the game. --colwin PATH points at colwin.py if the checkout is not beside this one.

Update map dimensions

The size fields in maps.json can be refreshed from the playable map files:

tools/update_maps_metada.sh

That crawls maps/**/*.mp and maps/**/*.zip, reads each .MP file's raw grid, records the playable interior width and height, and updates the matching catalog entry. --check reports whether the committed metadata is current without writing.

Validate the archive

Python 3.9 or newer is the only requirement:

python3 tools/validate_archive.py

The same validation runs automatically on pushes and pull requests. It checks catalog structure, naming, broken links, MP headers and dimensions, PNG signatures, ZIP integrity and safety, duplicate IDs, and unlisted map folders.

Website

GitHub Pages is rebuilt from maps.json on every push to main. Build it locally with:

python3 tools/build_site.py
python3 -m http.server --directory _site 8000

The generated site is written to _site/ and is not committed. It contains the catalog, map downloads, previews, and a searchable static index. The build downloads col.min.css and its checksum manifest from the pinned web-ui release, verifies the stylesheet, and includes it in the Pages artifact so it is served with the correct CSS media type. For an offline build, pass an existing release asset with --web-ui-css path/to/col.min.css.

The site uses the pinned @colonization-re/web-ui release named in site/WEB_UI_VERSION. To upgrade the design system, change that one line and rebuild. Archive-specific CSS lives in site/assets/site.css. Reusable components that are still missing from the shared design system are described in site/WEB_UI_GAPS.md.

Before the first deployment, make sure the repository's Settings → Pages → Build and deployment → Source is set to GitHub Actions.

Preservation and rights

Please preserve provenance: link to the original page or a Wayback Machine snapshot, and do not modify the extracted map data. Contributors must only submit files they are permitted to redistribute. Copyright remains with each map's creator; inclusion in this archive does not place a map in the public domain or apply a repository-wide license to it.

About

Archive of community-created maps and scenarios

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages