mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 12:00:44 +00:00
ac63315449
Consolidate the contribution workflow, governance, and translation sections from README.md into CONTRIBUTING.md, leaving the README with a single pointer. Document the new process: contributors must work from issues labelled `approved` (or open one and wait for the label), comment to be assigned, and link the issue from their PR. PRs without an approved issue will be auto-closed (except small bug fixes), and PRs that appear AI-generated without genuine author understanding will be closed.
151 lines
4.5 KiB
Markdown
151 lines
4.5 KiB
Markdown
<p align="center">
|
|
<picture>
|
|
<source media="(prefers-color-scheme: dark)" srcset="proprietary/images/OpenFrontLogoDark.svg">
|
|
<source media="(prefers-color-scheme: light)" srcset="proprietary/images/OpenFrontLogo.svg">
|
|
<img src="proprietary/images/OpenFrontLogo.svg" alt="OpenFrontIO Logo" width="300">
|
|
</picture>
|
|
</p>
|
|
|
|
[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.
|
|
|
|

|
|
[](https://crowdin.com/project/openfront-mls)
|
|
[](https://cla-assistant.io/openfrontio/OpenFrontIO)
|
|
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
[](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.
|