# OpenFrontIO

OpenFrontIO Logo

![Prettier Check](https://github.com/openfrontio/OpenFrontIO/actions/workflows/prettier.yml/badge.svg) OpenFront 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. ## 🌟 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 - [Node.js](https://nodejs.org/) (v16.x or higher) - [npm](https://www.npmjs.com/) (v8.x 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 install ``` ## 🎮 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 ### 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 ``` ## 🛠️ Development Tools - **Format code**: ```bash npm run format ``` ## 🏗️ Project Structure - `/src/client` - Frontend game client - `/src/core` - Shared game logic - `/src/server` - Backend game server - `/resources` - Static assets (images, maps, etc.) ## 📝 License This project is licensed under the terms found in the [LICENSE](LICENSE) file. ## 🤝 Contributing Contributions are welcome! Please feel free to submit a Pull Request. 1. Fork the repository 2. Create your feature branch (`git checkout -b amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin amazing-feature`) 5. Open a Pull Request