RealmFiles/Notes/engine_protocol.md

38 lines
2.2 KiB
Markdown

# The Realm Online: Engine & Protocol Documentation
## 1. Game Engine: Sierra Creative Interpreter (SCI) 2.1
The Realm Online was developed using a heavily modified version of the **SCI 2.1** engine.
### Key Modifications:
- **Networking Stack**: Unlike standard single-player SCI games (e.g., King's Quest), Realm includes a proprietary networking layer for real-time multiplayer interactions.
- **Resource Management**: Uses `.res` and `.pqc` (Packaged Quest Content) files for storing tiles, sprites, and sounds.
- **Client Logic**: Much of the client logic is written in SCI script (a Smalltalk-like language), but the core engine handles the rendering and networking primitives.
### Tools for Asset Extraction:
- **SCI Companion**: A modern tool for editing and viewing SCI resources.
- **QuickBMS**: Can be used with custom scripts to extract files from `.pqc` archives.
- **SCI Resource Viewer**: Useful for browsing sprites and tiles.
## 2. Network Protocol
The game uses a client-server architecture with multiple dedicated TCP ports for different services.
### Port Mapping:
- **6002 (Realm Server)**: Main game world communication.
- **6003 (Auth Server)**: Login and authentication.
- **6005 (Patch Server)**: Version checking and file updates.
- **7002 (Route Server)**: Redirects clients to specific game instances/realms.
- **8001 (Game Server)**: Individual game instance handling.
### Handshake & Packet Structure:
Based on community reverse-engineering (e.g., the `server_poc.py` script):
- **Framework**: Many modern emulators use the **Twisted** framework (Python) to handle the asynchronous networking required.
- **Packet Headers**: Packets typically have a size header followed by the payload.
- **Authentication**: Involves a multi-step handshake where the client identifies itself, sends credentials, and receives a session token or redirection to a game server.
## 3. Database Schema
The community-maintained database (TRO-DB) provides schemas for the following:
- **Mobs/NPCs**: Statistics, drops, and spawn logic.
- **Items**: Equipment stats, consumable effects, and shop prices.
- **Spells**: Damage formulas, mana costs, and requirements.
- **Maps**: Area definitions, warp points, and shop inventory mappings.