Hi everyone,
I really like Open-General and I’d love to add multiplayer support — I’d be happy to work on it as a community contribution. I don’t want to change anything without proper coordination, so I’d like to ask:
Where can I find the source code / project repository?
Who is the main maintainer/owner I should request permission from?
What is the recommended way to proceed — opening an issue with the proposal, creating a fork, or requesting access to the repository?
If anyone has time to discuss this or offer some guidance, I’d really appreciate it. I can start with a small prototype or PR and build on it gradually.
Thanks,
Martin
Request to contribute multiplayer feature – need access/info about source code
- LuisGuzman
- General, Special Forces

- Posts: 822
- Joined: 2019-03-10 08:35, Sunday
- Location: Spain
- Contact:
Re: Request to contribute multiplayer feature – need access/info about source code
Hi Martin
to Open General forum
First, thanks for your offer to add multiplayer support, but I'd like to know more about you, and how would you think this could be done.
That is, I'd need to know a bit more precisely how do you think this could be developed; perhaps sharing a sample source code for any other of your projects could help.
But regardless I am rather busy lately, traveling very frequently, I think we could at least analyze how this could be done and how much time this would require from myself.
Anyway, I am not sure how many guys would really use that option, as the community is used to play mostly against AI or BPEM, but let's talk.

First, thanks for your offer to add multiplayer support, but I'd like to know more about you, and how would you think this could be done.
That is, I'd need to know a bit more precisely how do you think this could be developed; perhaps sharing a sample source code for any other of your projects could help.
But regardless I am rather busy lately, traveling very frequently, I think we could at least analyze how this could be done and how much time this would require from myself.
Anyway, I am not sure how many guys would really use that option, as the community is used to play mostly against AI or BPEM, but let's talk.
Visit my website to get my latest tools.
Re: Request to contribute multiplayer feature – need access/info about source code
Here is my proposed technical plan for implementing real-time multiplayer:
# Real-Time Multiplayer Proposal for Open Panzer / Open General
## 1. Introduction
This document describes a simple, realistic and minimal-impact method to add
**real-time multiplayer** to *Open Panzer* or *Open General*.
The core concept is:
> **Reuse the existing PBEM (Play-By-Email) game-state serialization,
> and transmit the same JSON data over WebSockets instead of exchanging files.**
This makes online multiplayer possible without rewriting the engine,
without implementing complex networking logic, and without touching the AI.
---
## 2. Concept Overview
The game already supports full serialization and deserialization of the game state (PBEM).
Instead of exporting a PBEM file:
- the client serializes the state into JSON,
- sends it to a WebSocket server,
- the server forwards it to the opponent,
- the opponent applies the update immediately.
### Benefits
- ✔ Real-time turns with instant updates
- ✔ Minimal changes to the existing codebase
- ✔ Reuses PBEM format and logic
- ✔ No server-side game simulation
- ✔ Fully compatible with current scenarios
- ✔ Very little maintenance overhead
---
## 3. Networking Architecture
### **3.1 Simple WebSocket Relay Server**
Only a **very lightweight WebSocket server** is required.
The server does **not** run any game logic.
It only forwards JSON messages between two connected clients, similar to how PBEM sends data through files.
This keeps the architecture:
- simple
- stable
- easy to implement
- easy to maintain
### **3.2 Client Responsibilities**
Each client (the game) performs:
1. WebSocket connection
2. Sending player actions as JSON
3. Applying opponent actions
4. Sending a full PBEM state at end of turn
5. Loading the received state
---
## 4. Synchronization Strategy
Two synchronization layers are combined:
### **4.1 Delta Synchronization (per-action messages)**
Each game action is sent as a small JSON object:
```json
{
"type": "move",
"unitId": 42,
"from": [10, 5],
"to": [12, 6]
}
# Real-Time Multiplayer Proposal for Open Panzer / Open General
## 1. Introduction
This document describes a simple, realistic and minimal-impact method to add
**real-time multiplayer** to *Open Panzer* or *Open General*.
The core concept is:
> **Reuse the existing PBEM (Play-By-Email) game-state serialization,
> and transmit the same JSON data over WebSockets instead of exchanging files.**
This makes online multiplayer possible without rewriting the engine,
without implementing complex networking logic, and without touching the AI.
---
## 2. Concept Overview
The game already supports full serialization and deserialization of the game state (PBEM).
Instead of exporting a PBEM file:
- the client serializes the state into JSON,
- sends it to a WebSocket server,
- the server forwards it to the opponent,
- the opponent applies the update immediately.
### Benefits
- ✔ Real-time turns with instant updates
- ✔ Minimal changes to the existing codebase
- ✔ Reuses PBEM format and logic
- ✔ No server-side game simulation
- ✔ Fully compatible with current scenarios
- ✔ Very little maintenance overhead
---
## 3. Networking Architecture
### **3.1 Simple WebSocket Relay Server**
Only a **very lightweight WebSocket server** is required.
The server does **not** run any game logic.
It only forwards JSON messages between two connected clients, similar to how PBEM sends data through files.
This keeps the architecture:
- simple
- stable
- easy to implement
- easy to maintain
### **3.2 Client Responsibilities**
Each client (the game) performs:
1. WebSocket connection
2. Sending player actions as JSON
3. Applying opponent actions
4. Sending a full PBEM state at end of turn
5. Loading the received state
---
## 4. Synchronization Strategy
Two synchronization layers are combined:
### **4.1 Delta Synchronization (per-action messages)**
Each game action is sent as a small JSON object:
```json
{
"type": "move",
"unitId": 42,
"from": [10, 5],
"to": [12, 6]
}
