Initial commit: RR3 Community Server with web admin panel
- ASP.NET Core 8 REST API server - 12 API endpoints matching EA Synergy protocol - SQLite database with Entity Framework Core - Web admin panel with Bootstrap 5 - User, Catalog, Session, Purchase management - Comprehensive documentation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
188
README.md
Normal file
188
README.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# Real Racing 3 Community Server
|
||||
|
||||
A cross-platform .NET 8+ community server implementation for Real Racing 3, enabling custom/private server functionality.
|
||||
|
||||
## Overview
|
||||
|
||||
This server emulates EA's Synergy backend infrastructure, allowing players to:
|
||||
- Host community servers
|
||||
- Play offline or on private networks
|
||||
- Customize game content and progression
|
||||
- Preserve the game when official servers shut down
|
||||
|
||||
## Features
|
||||
|
||||
- ✅ Cross-platform support (Windows, Linux, macOS)
|
||||
- ✅ Minimal ASP.NET Core Web API implementation
|
||||
- ✅ All critical Synergy API endpoints
|
||||
- ✅ Session management & authentication
|
||||
- ✅ User profile & device management
|
||||
- ✅ DRM/Purchase verification (stub for community use)
|
||||
- ✅ Product catalog management
|
||||
- ✅ Analytics/tracking endpoints (optional logging)
|
||||
- ✅ Configurable via JSON
|
||||
- ✅ SQLite database for data persistence
|
||||
|
||||
## Requirements
|
||||
|
||||
- .NET 8.0 SDK or later
|
||||
- SQLite (included via NuGet)
|
||||
- Port 443 (HTTPS) or custom port with SSL certificate
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Build the Server
|
||||
```bash
|
||||
cd RR3CommunityServer
|
||||
dotnet restore
|
||||
dotnet build
|
||||
```
|
||||
|
||||
### 2. Configure
|
||||
Edit `appsettings.json` to customize server behavior.
|
||||
|
||||
### 3. Run
|
||||
```bash
|
||||
dotnet run
|
||||
```
|
||||
|
||||
The server will start on `https://localhost:5001` by default.
|
||||
|
||||
### 4. Redirect Game Traffic
|
||||
You'll need to intercept DNS/HTTPS traffic from the game to redirect EA servers to your server:
|
||||
|
||||
**Option A: Hosts File (Simple)**
|
||||
```
|
||||
# Add to C:\Windows\System32\drivers\etc\hosts (Windows)
|
||||
# or /etc/hosts (Linux/macOS)
|
||||
127.0.0.1 syn-dir.sn.eamobile.com
|
||||
127.0.0.1 director-stage.sn.eamobile.com
|
||||
```
|
||||
|
||||
**Option B: Proxy/VPN (Advanced)**
|
||||
Use tools like Proxifier, mitmproxy, or custom VPN to redirect traffic.
|
||||
|
||||
**Option C: SSL Interception (Full Control)**
|
||||
Use mitmproxy with custom CA certificate installed on device.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
[Real Racing 3 App]
|
||||
↓ HTTPS
|
||||
[Community Server]
|
||||
↓
|
||||
[SQLite Database]
|
||||
```
|
||||
|
||||
The server implements EA's Synergy API protocol:
|
||||
- JSON request/response format
|
||||
- Custom headers: `EAM-SESSION`, `EAM-USER-ID`, `EA-SELL-ID`
|
||||
- Session-based authentication
|
||||
- RESTful endpoints
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### User Management
|
||||
- `GET /user/api/android/getDeviceID` - Register device
|
||||
- `GET /user/api/android/validateDeviceID` - Validate device
|
||||
- `GET /user/api/android/getAnonUid` - Get anonymous ID
|
||||
|
||||
### Product Catalog
|
||||
- `GET /product/api/core/getAvailableItems` - Get item catalog
|
||||
- `GET /product/api/core/getMTXGameCategories` - Get categories
|
||||
- `POST /product/api/core/getDownloadItemUrl` - Get download URLs
|
||||
|
||||
### DRM & Purchases
|
||||
- `GET /drm/api/core/getNonce` - Get DRM nonce
|
||||
- `GET /drm/api/core/getPurchasedItems` - Get purchases
|
||||
- `POST /drm/api/android/verifyAndRecordPurchase` - Verify purchase
|
||||
|
||||
### Tracking & Analytics
|
||||
- `POST /tracking/api/core/logEvent` - Log analytics event
|
||||
|
||||
### Director (Discovery)
|
||||
- `GET /director/api/android/getDirectionByPackage` - Service discovery
|
||||
|
||||
## Configuration
|
||||
|
||||
See `appsettings.json` for configuration options:
|
||||
|
||||
```json
|
||||
{
|
||||
"Server": {
|
||||
"EnableAnalytics": false,
|
||||
"EnablePurchaseVerification": false,
|
||||
"AllowUnverifiedDevices": true
|
||||
},
|
||||
"Catalog": {
|
||||
"DataPath": "./catalog-data",
|
||||
"EnableCustomContent": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Security Notes
|
||||
|
||||
⚠️ **For Community Use Only**
|
||||
|
||||
This server is for:
|
||||
- Private/LAN play
|
||||
- Game preservation
|
||||
- Educational purposes
|
||||
- Offline gameplay
|
||||
|
||||
**NOT for:**
|
||||
- Piracy or circumventing legitimate purchases
|
||||
- Cheating in official multiplayer
|
||||
- Redistributing EA's content
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
RR3CommunityServer/
|
||||
├── Controllers/ # API endpoint controllers
|
||||
│ ├── DirectorController.cs
|
||||
│ ├── UserController.cs
|
||||
│ ├── ProductController.cs
|
||||
│ ├── DrmController.cs
|
||||
│ └── TrackingController.cs
|
||||
├── Models/ # Data models & DTOs
|
||||
├── Services/ # Business logic
|
||||
├── Data/ # Database context
|
||||
├── Middleware/ # Session/auth middleware
|
||||
├── appsettings.json # Configuration
|
||||
└── Program.cs # Entry point
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Adding New Endpoints
|
||||
1. Create controller in `Controllers/`
|
||||
2. Add models in `Models/`
|
||||
3. Implement service logic in `Services/`
|
||||
4. Update database schema if needed
|
||||
|
||||
### Testing
|
||||
```bash
|
||||
# Run unit tests
|
||||
dotnet test
|
||||
|
||||
# Test API endpoints
|
||||
curl -k -H "EAM-SESSION: test-session" https://localhost:5001/user/api/android/getDeviceID?deviceId=test123
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions welcome! Please:
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
This project is for educational and preservation purposes. Real Racing 3 and related trademarks are property of Electronic Arts Inc.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
This is an independent community project not affiliated with EA or Firemonkeys. Use responsibly and respect intellectual property rights.
|
||||
Reference in New Issue
Block a user