Skip to content

Repository files navigation

Open Northland

CI License: GPL v3

Open Northland is an independent, cross-platform engine for Cultures - 8th Wonder of the World, a Viking-era strategy game. It combines a deterministic TypeScript simulation, a PixiJS renderer, and an offline asset pipeline.

The repository does not include game files or decoded assets. To play with the original maps, graphics, and audio, provide your own copy of Cultures - 8th Wonder of the World (available on Steam and GOG) and generate a local content/ directory.

To test it out, try:

A settlement rendered by Open Northland using locally decoded game data

Status

Open Northland is pre-alpha. The current build has a playable settlement economy, building, gathering, production, progression, combat, fog, population systems, and a basic computer player. It can load decoded maps and render terrain, buildings, settlers, effects, and the HUD.

Campaign scripting, save games, and multiplayer are not complete. Desktop development builds exist, but stable signed releases do not. Current actionable work lives in docs/tickets/.

Requirements

  • Node.js ^20.19.0 or >=22.12.0
  • A legally obtained copy of Cultures - 8th Wonder of the World for playable content. It is sold on Steam and GOG.
  • The free CulturesNation mod; CnMod 1.3.1 is the current verified input

Build and test

npm ci
npm run build
npm test
npm run check

The source, tests, and headless scene checks work without the original game. npm run build typechecks the workspaces and creates the browser bundle in packages/app/dist/. The playable browser entries need generated content (next section); without it they show a notice explaining how to generate it.

Generate local content

npm run pipeline -- --game "../Cultures 8th Wonder" --out content
npm run dev

The pipeline detects the CulturesNation DataCnmd/ folder inside the game directory. If the mod is elsewhere, add --mod-root <dir>. A newer mod release must be verified before replacing the 1.3.1 baseline.

Generated content is ignored by Git. Do not commit or redistribute it.

The development server opens on the main menu. Useful direct entries are:

  • ?scene=sandbox for the main acceptance scene
  • ?map=<id> for a decoded map
  • ?anim for character animations
  • ?icons for decoded sprite frames
  • ?sounds for the sound gallery

See docs/DEVELOPMENT.md for commands, diagnostics, and local content tests.

Repository layout

packages/
  app/               Browser shell, input, menus, HUD, and scenes
  audio/             Sound selection and Web Audio playback
  content-resolver/  Shared routing for generated content
  data/              Validated schemas and content loaders
  desktop/           Electron shell and first-run content setup
  render/            PixiJS isometric renderer
  sim/               Deterministic simulation
tools/
  asset-pipeline/    Converts an owned game installation into local content
content/             Generated locally and ignored by Git
docs/                Design notes, format research, and open tickets

Start with the documentation index for the design and data flow.

Contributing

Contributions are welcome. Read CONTRIBUTING.md before opening a pull request. Coding agents must also read AGENTS.md.

License and trademarks

Open Northland is licensed under GPL-3.0-or-later. See LICENSE.

This is an independent community project. It is not affiliated with or endorsed by Funatics Software, Daedalic Entertainment, or another rights holder of the Cultures series. Game names are used only to describe compatibility. The full notice is in docs/LEGAL.md.

About

A modern, open-source reimplementation of the Cultures game series

Topics

Resources

Contributing

Stars

5 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages