OpenFrontIO Logo

[OpenFront.io](https://openfront.io/) is an online real-time strategy game focused on territorial control and alliance building. Players compete to expand their territory, build structures, and form strategic alliances in various maps based on real-world geography. This is a fork/rewrite of WarFront.io. Credit to https://github.com/WarFrontIO. ![CI](https://github.com/openfrontio/OpenFrontIO/actions/workflows/ci.yml/badge.svg) [![Crowdin](https://badges.crowdin.net/openfront-mls/localized.svg)](https://crowdin.com/project/openfront-mls) [![CLA assistant](https://cla-assistant.io/readme/badge/openfrontio/OpenFrontIO)](https://cla-assistant.io/openfrontio/OpenFrontIO) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![Assets: CC BY-SA 4.0](https://img.shields.io/badge/Assets-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/) ## License OpenFront source code is licensed under the **GNU Affero General Public License v3.0** Current copyright notices appear in: - Footer: "© OpenFront and Contributors" - Loading screen: "© OpenFront and Contributors" Modified versions must preserve these notices in reasonably visible locations. See the [LICENSE](LICENSE) for complete requirements. For asset licensing, see [LICENSE-ASSETS](LICENSE-ASSETS). For license history, see [LICENSING.md](LICENSING.md). ## 🌟 Features - **Real-time Strategy Gameplay**: Expand your territory and engage in strategic battles - **Alliance System**: Form alliances with other players for mutual defense - **Multiple Maps**: Play across various geographical regions including Europe, Asia, Africa, and more - **Resource Management**: Balance your expansion with defensive capabilities - **Cross-platform**: Play in any modern web browser ## 📋 Prerequisites - [npm](https://www.npmjs.com/) (v10.9.2 or higher) - A modern web browser (Chrome, Firefox, Edge, etc.) ## 🚀 Installation 1. **Clone the repository** ```bash git clone https://github.com/openfrontio/OpenFrontIO.git cd OpenFrontIO ``` 2. **Install dependencies** ```bash npm run inst ``` Do NOT use `npm install` nor `npm i` but instead use our `npm run inst`. It runs the safer `npm ci --ignore-scripts` to install dependencies exactly according to the versions in `package-lock.json` and doesn't run scripts. This can prevent being hit by a supply chain attack. ## 🎮 Running the Game ### Development Mode Run both the client and server in development mode with live reloading: ```bash npm run dev ``` This will: - Start the webpack dev server for the client - Launch the game server with development settings - Open the game in your default browser (to disable this behavior, set `SKIP_BROWSER_OPEN=true` in your environment) ### Client Only To run just the client with hot reloading: ```bash npm run start:client ``` ### Server Only To run just the server with development settings: ```bash npm run start:server-dev ``` ### Connecting to staging or production backends Sometimes it's useful to connect to production servers when replaying a game, testing user profiles, purchases, or login flow. > To replay a production game, make sure you're on the same commit that the game you want to replay was executed on, you can find the `gitCommit` value via `https://api.openfront.io/game/[gameId]`. > Unfinished games cannot be replayed on localhost. To connect to staging api servers: ```bash npm run dev:staging ``` To connect to production api servers: ```bash npm run dev:prod ``` ## 🛠️ Development Tools - **Format code**: ```bash npm run format ``` - **Lint code**: ```bash npm run lint ``` - **Lint and fix code**: ```bash npm run lint:fix ``` - **Testing** ```bash npm test ``` ## 🏗️ Project Structure - `/src/client` - Frontend game client - `/src/core` - Deterministic game simulation - `/src/server` - Backend game server - `/resources` - Static assets (images, maps, etc.) ## 🤝 Contributing Contributions and translations are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for the workflow, the approved-issue process, project governance, and translation info.