Daniel Elliott 934fa51524 Add Complete Game Progression System
MAJOR UPDATE - Full game systems based on APK analysis:

CAR SYSTEM:
- Purchase cars with Gold or Cash
- 5 starter cars across all classes (C,B,A,S,R)
- Car database with manufacturers and performance ratings
- Garage management and inventory tracking

UPGRADE SYSTEM:
- 5 upgrade types (Engine, Tires, Suspension, Brakes, Drivetrain)
- Progressive Performance Rating increases
- Cash-based upgrade economy
- Per-car upgrade tracking

PROGRESSION SYSTEM:
- Experience Points and leveling (1000 XP per level)
- Level-up rewards (10 Gold + 5K Cash)
- Reputation tracking
- Complete player profile management

CAREER MODE:
- Career series and event tracking
- Star rating system (1-3 stars per event)
- Best time tracking
- Star-based rewards (10G/2KC/100XP per star)

ECONOMY:
- Balanced F2P progression
- ~350 Gold + \ daily earning potential
- Fair pricing for cars and upgrades
- Multiple currency sources

NEW ENDPOINTS:
- GET /synergy/progression/player/{id} - Player profile
- POST /synergy/progression/player/{id}/update - Update stats
- POST /synergy/progression/car/purchase - Buy cars
- POST /synergy/progression/car/upgrade - Upgrade cars
- POST /synergy/progression/career/complete - Finish events

DATABASE:
- Cars table - Vehicle catalog
- OwnedCars table - Player garage
- CarUpgrades table - Upgrade options
- CareerProgress table - Event completion
- User table extended with Level/XP/Reputation

SEEDED DATA:
- 5 cars (Nissan Silvia to McLaren P1 GTR)
- 5 upgrades for starter car
- Time trials and gold packages from previous update

This creates a COMPLETE single-player experience with:
✓ Daily rewards + time trials
✓ Car ownership + garage
✓ Upgrade system
✓ Career progression
✓ Level/XP system
✓ Full economy

Based on actual RR3 game analysis!

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-17 22:21:36 -08:00

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

cd RR3CommunityServer
dotnet restore
dotnet build

2. Configure

Edit appsettings.json to customize server behavior.

3. Run

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:

{
  "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

# 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.

Description
No description provided
Readme 31 MiB
Languages
C# 77.4%
HTML 18.4%
PowerShell 2.7%
Shell 1.4%