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.
OpenFront source code is licensed under the GNU Affero General Public License v3.0 with additional attribution requirements:
- Any forks or derivative works must display attribution (e.g., "Based on OpenFront", "Derived from OpenFront", "Powered by OpenFront", or "Fork of OpenFront") prominently on the main menu and/or initial title screen.
See the ADDITIONAL TERMS section in LICENSE for complete requirements.
For asset licensing, see LICENSE-ASSETS.
For license history, see LICENSING.md.
- 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
- npm (v10.9.2 or higher)
- A modern web browser (Chrome, Firefox, Edge, etc.)
- 
Clone the repository git clone https://github.com/openfrontio/OpenFrontIO.git cd OpenFrontIO
- 
Install dependencies npm i 
Run both the client and server in development mode with live reloading:
npm run devThis will:
- Start the webpack dev server for the client
- Launch the game server with development settings
- Open the game in your default browser
To run just the client with hot reloading:
npm run start:clientTo run just the server with development settings:
npm run start:server-devSometimes it's useful to connect to production servers when replaying a game, testing user profiles, purchases, or login flow.
To connect to staging api servers:
npm run dev:stagingTo connect to production api servers:
npm run dev:prod- 
Format code: npm run format 
- 
Lint code: npm run lint 
- 
Lint and fix code: npm run lint:fix 
- 
Testing npm test
- /src/client- Frontend game client
- /src/core- Shared game logic
- /src/server- Backend game server
- /resources- Static assets (images, maps, etc.)
Contributions are welcome! Please feel free to submit a Pull Request.
- Request to join the development Discord.
- Fork the repository
- Create your feature branch (git checkout -b amazing-feature)
- Commit your changes (git commit -m 'Add some amazing feature')
- Push to the branch (git push origin amazing-feature)
- Open a Pull Request
Translators are welcome! Please feel free to help translate into your language. How to help?
- Join the translation Discord
- Go to the project's Crowdin translation page: https://crowdin.com/project/openfront-mls
- Login if you already have an account / Sign up if you don't have one
- Join the project
- Select the language you want to translate in. If your language isn't on the list, click the "Request New Language" button and enter the language you want added there.
- Translate the strings
Feel free to ask questions in the translation Discord server!
- The project maintainer (evan) has final authority on all code changes and design decisions
- All pull requests require maintainer approval before merging
- The maintainer reserves the right to reject contributions that don't align with the project's vision or quality standards
To ensure code quality and project stability, we use a progressive contribution system:
- 
New Contributors: Limited to UI improvements and small bug fixes only - This helps you become familiar with the codebase
- UI changes are easier to review and less likely to break core functionality
- Small, focused PRs have a higher chance of being accepted
 
- 
Established Contributors: After several successful PRs and demonstrating understanding of the codebase, you may work on more complex features 
- 
Core Contributors: Only those with extensive experience with the project may modify critical game systems 
- 
Before Starting Work: - Open an issue describing what you want to contribute
- Wait for maintainer feedback before investing significant time
- Small improvements can proceed directly to PR stage
 
- 
Code Quality Requirements: - All code must be well-commented and follow existing style patterns
- New features should not break existing functionality
- Code should be thoroughly tested before submission
- All code changes in src/core MUST be tested.
 
- 
Pull Request Process: - Keep PRs focused on a single feature or bug fix
- Include screenshots for UI changes
- Describe what testing you've performed
- Be responsive to feedback and requested changes
 
- 
Testing Requirements: - Verify your changes work as expected
- Test on multiple systems/browsers if applicable
- Document your testing process in the PR
 
- Be respectful and constructive in all project interactions
- Questions are welcome, but please search existing issues first
- For major changes, discuss in an issue before starting work
Remember that maintaining this project requires significant effort. The maintainer appreciates your contributions but must prioritize long-term project health and stability. Not all contributions will be accepted, and that's okay.
Thank you for helping make OpenFront better!