a8755bd3de4aee3c47fa15ea63bc5f27f8d9d8e04007d404e970920810ac9bf9
Documentation: - Add detailed README files for all services (auth, character, database, launcher, packet, utils, world) - Create API documentation for the database service with detailed endpoint specifications - Document database schema and relationships - Add service architecture overviews and configuration instructions Unit Tests: - Implement comprehensive test suite for database repositories (user, character, session) - Add gRPC service tests for database interactions - Create tests for packet service components (bufferpool, connection, packets) - Add utility service tests (health check, logging, load balancer, redis cache, service discovery) - Implement auth service user tests - Add character service tests Code Structure: - Reorganize test files into a more consistent structure - Create a dedicated tests crate for integration testing - Add test helpers and mock implementations for easier testing
…
…
…
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
- Client → Launcher: User launches the game via the launcher
- Launcher → Packet Service: Game client connects to the packet service
- Packet Service → Auth Service: Validates user session
- Packet Service → Character Service: Retrieves character data
- 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
cargo build --release
Running
Each service can be run individually:
# 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:
Testing
Run tests for all services:
cargo test --all
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Description
Languages
Rust
97.5%
Dockerfile
1%
Python
0.9%
Smarty
0.6%