112 lines
2.9 KiB
Markdown
112 lines
2.9 KiB
Markdown
# MMORPG Server Architecture
|
|
|
|
A microservice-based server architecture for an MMORPG game, built with Rust.
|
|
|
|
## Overview
|
|
|
|
This project implements a complete server infrastructure for an MMORPG game, using a microservice architecture for scalability and maintainability. Each service is responsible for a specific domain of the game, communicating with other services via gRPC.
|
|
|
|
## Architecture
|
|
|
|
The server architecture consists of the following microservices:
|
|
|
|
### Core Services
|
|
|
|
- **Auth Service**: Handles user authentication, session validation, and account management
|
|
- **Character Service**: Manages character creation, deletion, and retrieval
|
|
- **Database Service**: Provides centralized database access for all services
|
|
- **Packet Service**: Handles game client communication via custom binary packets
|
|
- **World Service**: Manages game world state and character interactions
|
|
|
|
### Support Components
|
|
|
|
- **Utils**: Shared utilities used by all services
|
|
- **Launcher**: Client-side launcher for the game
|
|
|
|
## Communication Flow
|
|
|
|
1. **Launcher → Client**: User launches the game via the launcher
|
|
2. **Client → Packet Service**: Game client connects to the packet service
|
|
3. **Packet Service → Auth Service**: Validates user session
|
|
4. **Packet Service → Character Service**: Retrieves character data
|
|
5. **Packet Service → World Service**: Manages game world interactions
|
|
|
|
## Technologies
|
|
|
|
- **Language**: Rust
|
|
- **Communication**: gRPC, custom binary protocol
|
|
- **Database**: PostgreSQL (managed by external system)
|
|
- **Caching**: Redis
|
|
- **Service Discovery**: Kubernetes DNS, Consul
|
|
- **Metrics**: Prometheus
|
|
|
|
## External Dependencies
|
|
|
|
- **Database Schema**: Managed by an external web application using better-auth
|
|
- **User Management**: Handled by the external web application
|
|
- **Session Creation**: Initial sessions created by the external web application
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Rust (latest stable)
|
|
- PostgreSQL
|
|
- Redis
|
|
- Protobuf compiler
|
|
|
|
### Building
|
|
|
|
```bash
|
|
cargo build --release
|
|
```
|
|
|
|
### Running
|
|
|
|
Each service can be run individually:
|
|
|
|
```bash
|
|
# Auth Service
|
|
cd auth-service && cargo run
|
|
|
|
# Character Service
|
|
cd character-service && cargo run
|
|
|
|
# Database Service
|
|
cd database-service && cargo run
|
|
|
|
# Packet Service
|
|
cd packet-service && cargo run
|
|
|
|
# World Service
|
|
cd world-service && cargo run
|
|
```
|
|
|
|
### Docker
|
|
|
|
Each service includes a Dockerfile for containerized deployment.
|
|
|
|
## Documentation
|
|
|
|
Each service includes its own README.md with detailed documentation:
|
|
|
|
- [Auth Service](auth-service/README.md)
|
|
- [Character Service](character-service/README.md)
|
|
- [Database Service](database-service/README.md)
|
|
- [Packet Service](packet-service/README.md)
|
|
- [World Service](world-service/README.md)
|
|
- [Utils](utils/README.md)
|
|
- [Launcher](launcher/README.md)
|
|
|
|
## Testing
|
|
|
|
Run tests for all services:
|
|
|
|
```bash
|
|
cargo test --all
|
|
```
|
|
|
|
## License
|
|
|
|
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
|