76 lines
1.4 KiB
Markdown
76 lines
1.4 KiB
Markdown
# GoonServer
|
|
|
|
The server component for GoonScape, handling multiplayer synchronization and chat.
|
|
|
|
## Features
|
|
|
|
- Tick-based game state synchronization
|
|
- Player movement validation
|
|
- Global chat system
|
|
- Client connection management
|
|
- Protobuf-based network protocol
|
|
|
|
## Prerequisites
|
|
|
|
- Go 1.23 or higher
|
|
- Protocol Buffers compiler (protoc)
|
|
|
|
## Installation
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://gitea.boner.be/bdnugget/goonserver.git
|
|
cd goonserver
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
go mod tidy
|
|
```
|
|
|
|
3. Build and run:
|
|
```bash
|
|
go run main.go
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Server settings can be modified in `main.go`:
|
|
```go
|
|
const (
|
|
port = ":6969" // Port to listen on
|
|
tickRate = 600 * time.Millisecond // Server tick rate
|
|
)
|
|
```
|
|
|
|
## Protocol
|
|
|
|
The server uses Protocol Buffers for client-server communication. The protocol is defined in `actions/actions.proto`:
|
|
|
|
- `Action`: Player actions (movement, chat)
|
|
- `ActionBatch`: Grouped actions from a player
|
|
- `ServerMessage`: Game state updates to clients
|
|
- `PlayerState`: Individual player state
|
|
- `ChatMessage`: Player chat messages
|
|
|
|
## Development
|
|
|
|
After modifying the protocol (`actions.proto`), regenerate the Go code:
|
|
```bash
|
|
protoc --go_out=. actions/actions.proto
|
|
```
|
|
|
|
## Deployment
|
|
|
|
The server is designed to run on a single instance. For production deployment:
|
|
|
|
1. Build the binary:
|
|
```bash
|
|
go build -o goonserver
|
|
```
|
|
|
|
2. Run with logging:
|
|
```bash
|
|
./goonserver > server.log 2>&1 &
|
|
```
|