# 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