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
96 lines
2.3 KiB
Markdown
96 lines
2.3 KiB
Markdown
# World Service
|
|
|
|
The World Service manages the game world state and character interactions in the MMORPG server architecture.
|
|
|
|
## Overview
|
|
|
|
The World Service is responsible for:
|
|
- Managing character positions and movement
|
|
- Handling map changes
|
|
- Processing character interactions
|
|
- Managing NPCs, monsters, and objects
|
|
- Handling combat and skills
|
|
|
|
## Architecture
|
|
|
|
The service is built using the following components:
|
|
|
|
- **gRPC Server**: Exposes world management endpoints
|
|
- **World State Manager**: Maintains the current state of the game world
|
|
- **Map Manager**: Handles map data and transitions
|
|
- **Entity Manager**: Manages characters, NPCs, and monsters
|
|
|
|
## Service Endpoints
|
|
|
|
The World Service exposes the following gRPC endpoints:
|
|
|
|
### GetCharacter
|
|
Retrieves a character's world state.
|
|
|
|
```protobuf
|
|
rpc GetCharacter(CharacterRequest) returns (CharacterResponse);
|
|
```
|
|
|
|
### ChangeMap
|
|
Handles a character changing maps.
|
|
|
|
```protobuf
|
|
rpc ChangeMap(ChangeMapRequest) returns (ChangeMapResponse);
|
|
```
|
|
|
|
### MoveCharacter
|
|
Updates a character's position.
|
|
|
|
```protobuf
|
|
rpc MoveCharacter(CharacterMoveRequest) returns (CharacterMoveResponse);
|
|
```
|
|
|
|
### GetTargetHp
|
|
Retrieves an object's current HP.
|
|
|
|
```protobuf
|
|
rpc GetTargetHp(ObjectHpRequest) returns (ObjectHpResponse);
|
|
```
|
|
|
|
## World Data Structure
|
|
|
|
The world consists of:
|
|
|
|
- **Maps**: Different areas with unique IDs
|
|
- **Spawn Points**: Locations where characters can appear
|
|
- **NPCs**: Non-player characters with fixed positions
|
|
- **Monsters**: Hostile entities that can move and attack
|
|
- **Objects**: Interactive items in the world
|
|
|
|
## Configuration
|
|
|
|
The service can be configured using environment variables:
|
|
|
|
- `LISTEN_ADDR`: The address to listen on (default: "0.0.0.0")
|
|
- `SERVICE_PORT`: The port to listen on (default: "50054")
|
|
- `LOG_LEVEL`: Logging level (default: "info")
|
|
|
|
## Running the Service
|
|
|
|
### Local Development
|
|
|
|
```bash
|
|
cargo run
|
|
```
|
|
|
|
### Docker
|
|
|
|
```bash
|
|
docker build -t world-service .
|
|
docker run -p 50054:50054 world-service
|
|
```
|
|
|
|
## Integration with External Systems
|
|
|
|
The World Service integrates with:
|
|
|
|
- **Database Service**: For retrieving and storing world state
|
|
- **Auth Service**: For user authentication and authorization
|
|
- **Character Service**: For character data
|
|
- **Packet Service**: For handling client requests related to the world
|