Complete gap analysis between APK requirements and current server: - 58 endpoints already implemented (12 controllers) - Identified critical missing endpoints (Synergy ID, config, save/load) - Prioritized implementation roadmap (4 phases) - Testing strategy and success criteria - Immediate action items for Phase 1 Key findings: - Server has good foundation with auth, assets, progression stubs - Missing critical identity/save flow - Need event system extraction from APK - Modding system already complete (unique feature) Next: Implement Synergy ID generation, config endpoint, save/load system
20 KiB
🔍 RR3 Community Server - Complete Implementation Analysis
Date: February 22, 2026
Purpose: Comprehensive gap analysis between APK requirements and current server implementation
Goal: Identify everything needed for full RR3 functionality on community server
📊 Executive Summary
Current Implementation Status:
- ✅ 58 endpoints implemented across 12 controllers
- ⚠️ Missing critical endpoints identified from APK analysis
- 🔧 Backend services needed for full game functionality
What Works:
- User authentication & device registration
- Asset delivery system
- Custom content/modding uploads
- Basic progression tracking
- Daily rewards system
What's Missing:
- Game-specific Synergy endpoints
- Save/load game data synchronization
- Multiplayer/leaderboard services
- Event/time trial management (partially implemented)
- Live ops/special events system
🎯 Current Server Implementation
✅ Implemented Controllers (12)
1. DirectorController - Service Discovery ✅
GET /director/api/android/getDirectionByPackage
Status: ✅ Complete
Purpose: Tells game where to find all other services
Response: JSON with URLs for all backend services
2. UserController - Device & User Management ✅
GET /user/api/android/getDeviceID
GET /user/api/android/validateDeviceID
GET /user/api/android/getAnonUid
Status: ✅ Complete
Purpose: Device registration, anonymous user creation
Critical: First thing game calls after Director API
3. AuthController - Authentication System ✅
POST /api/auth/register
POST /api/auth/login
POST /api/auth/change-password
GET /api/auth/me
POST /api/auth/link-device
Status: ✅ Complete
Purpose: User accounts, device linking
Note: Probably not used by game initially (uses anonymous IDs first)
4. AssetsController - Content Delivery ✅
GET /content/api/manifest
GET /content/api/{assetPath}
GET /content/api/info/{assetPath}
GET /content/api/status
Status: ✅ Complete
Purpose: Download game assets (cars, tracks, textures)
Critical: Game needs this after unpacking APK
5. AssetManagementController - Asset Tools ✅
POST /api/assetmanagement/extract
POST /api/assetmanagement/pack
POST /api/assetmanagement/batch-extract
GET /api/assetmanagement/list
Status: ✅ Complete
Purpose: Admin tools for managing .z compressed files
Note: Used by panel, not by game directly
6. ProductController - Store/Catalog ✅
GET /product/api/core/getAvailableItems
GET /product/api/core/getMTXGameCategories
POST /product/api/core/getDownloadItemUrl
Status: ✅ Complete
Purpose: In-game store, item catalog, MTX (microtransactions)
Note: Probably returns empty/free catalog
7. DrmController - Purchase Verification ✅
GET /drm/api/core/getNonce
GET /drm/api/core/getPurchasedItems
POST /drm/api/android/verifyAndRecordPurchase
Status: ✅ Complete
Purpose: DRM/purchase system
Note: Community server likely bypasses real purchases
8. ProgressionController - Player Progress ⚠️ PARTIAL
GET /synergy/progression/player/{synergyId}
POST /synergy/progression/player/{synergyId}/update
POST /synergy/progression/car/purchase
POST /synergy/progression/car/upgrade
POST /synergy/progression/career/complete
Status: ⚠️ Partial - Basic structure only
Purpose: Save/load player career data
Critical: Game needs this to persist progress
9. RewardsController - Daily Rewards & Economy ⚠️ PARTIAL
GET /synergy/rewards/daily/{synergyId}
POST /synergy/rewards/daily/{synergyId}/claim
POST /synergy/rewards/gold/purchase
GET /synergy/rewards/timetrials
POST /synergy/rewards/timetrials/{trialId}/submit
Status: ⚠️ Partial - Missing event logic
Purpose: Daily login rewards, time trials
Note: Gold purchases are FREE in community server
10. TrackingController - Analytics ✅
POST /tracking/api/core/logEvent
POST /tracking/api/core/logEvents
Status: ✅ Complete (logs but ignores)
Purpose: Game telemetry/analytics
Note: Can safely ignore or log for debugging
11. ModdingController - Custom Content ✅
POST /modding/api/cars/upload
POST /modding/api/tracks/upload
GET /modding/api/content
GET /modding/api/cars
DELETE /modding/api/content/{contentId}
POST /modding/api/modpack/create
GET /modding/api/modpacks
Status: ✅ Complete - Community feature
Purpose: Upload/download custom cars, tracks, mods
Note: Unique to community server, not in EA version
12. ServerSettingsController - User Preferences ✅
GET /api/settings/getUserSettings
POST /api/settings/updateUserSettings
GET /api/settings/getAllUserSettings
Status: ✅ Complete
Purpose: Save user preferences (graphics, controls)
Note: May not be used by game (uses local prefs)
❌ Missing Critical Endpoints
🔴 Priority 1: Game Cannot Start Without These
1. Synergy Identity Service ❌ MISSING
POST /identity/api/android/getSynergyId
POST /identity/api/android/authenticate
POST /identity/api/android/refresh
Why Critical: Game creates Synergy ID (unique player identifier) before doing anything else
Current Issue: No authentication flow = game can't create player session
Workaround: Generate Synergy ID in getDeviceID endpoint
2. Configuration Service ❌ MISSING
GET /config/api/android/getGameConfig
GET /config/api/android/getFeatureFlags
GET /config/api/android/getServerTime
Why Critical: Game needs server configuration, feature flags, server time
Current Issue: Game may use hardcoded defaults
Impact: Events, limited-time content won't work properly
3. Save Data Synchronization ❌ MISSING
GET /synergy/save/{synergyId}/load
POST /synergy/save/{synergyId}/save
POST /synergy/save/{synergyId}/sync
GET /synergy/save/{synergyId}/conflicts
Why Critical: Game saves progress to cloud
Current Issue: Progress may only save locally
Impact: Can't switch devices, data loss risk
🟡 Priority 2: Core Gameplay Features
4. Career/Events Service ⚠️ PARTIAL
GET /events/api/career/list
GET /events/api/career/series/{seriesId}
POST /events/api/career/event/{eventId}/start
POST /events/api/career/event/{eventId}/complete
GET /events/api/career/rewards/{eventId}
Current: Basic structure in ProgressionController
Missing: Full event definitions, series data, unlock logic
Impact: Limited career mode functionality
5. Leaderboards Service ❌ MISSING
GET /leaderboards/api/global/{trackId}
GET /leaderboards/api/friends/{trackId}
POST /leaderboards/api/submit
GET /leaderboards/api/player/{synergyId}/rank
Why Needed: Competitive time trials, player rankings
Current Workaround: Local-only lap times
Impact: No global competition, social features missing
6. Multiplayer/Race Service ❌ MISSING
POST /race/api/matchmaking/find
POST /race/api/matchmaking/join
GET /race/api/session/{sessionId}
POST /race/api/session/{sessionId}/ready
POST /race/api/session/{sessionId}/finish
GET /race/api/session/{sessionId}/results
Why Needed: Multiplayer races
Current: Likely disabled or offline-only
Impact: No online multiplayer
7. Special Events Service ❌ MISSING
GET /events/api/special/active
GET /events/api/special/{eventId}/details
POST /events/api/special/{eventId}/enter
POST /events/api/special/{eventId}/complete
GET /events/api/special/{eventId}/leaderboard
Why Needed: Limited-time events (like current Cup events)
Current: Not implemented
Impact: No special events, community events
🟢 Priority 3: Nice-to-Have Features
8. Social/Friends Service ❌ MISSING
GET /social/api/friends/list
POST /social/api/friends/add
POST /social/api/friends/remove
GET /social/api/friends/{friendId}/profile
GET /social/api/friends/{friendId}/compare
Why Nice: Social features, friend comparisons
Impact: Single-player experience
9. Clubs/Teams Service ❌ MISSING
GET /clubs/api/list
GET /clubs/api/{clubId}/info
POST /clubs/api/{clubId}/join
POST /clubs/api/{clubId}/leave
GET /clubs/api/{clubId}/members
GET /clubs/api/{clubId}/leaderboard
Why Nice: Team-based competition
Impact: No team play
10. Live Ops Service ❌ MISSING
GET /liveops/api/messages
GET /liveops/api/announcements
GET /liveops/api/news
GET /liveops/api/offers
Why Nice: Dynamic content, news, special offers
Impact: Static game experience
🔧 Detailed Gap Analysis
Category 1: Authentication & Identity
| Endpoint | Implemented | Status | Priority |
|---|---|---|---|
| getDeviceID | ✅ Yes | Working | CRITICAL |
| validateDeviceID | ✅ Yes | Working | CRITICAL |
| getAnonUid | ✅ Yes | Working | HIGH |
| getSynergyId | ❌ No | MISSING | CRITICAL |
| authenticate | ❌ No | MISSING | CRITICAL |
| refreshToken | ❌ No | MISSING | HIGH |
Recommendation: Merge Synergy ID generation into existing getDeviceID endpoint
Category 2: Progression & Save Data
| Endpoint | Implemented | Status | Priority |
|---|---|---|---|
| Get player data | ⚠️ Partial | Stub only | CRITICAL |
| Update player data | ⚠️ Partial | Stub only | CRITICAL |
| Save game to cloud | ❌ No | MISSING | HIGH |
| Load game from cloud | ❌ No | MISSING | HIGH |
| Resolve save conflicts | ❌ No | MISSING | MEDIUM |
| Car purchase | ⚠️ Partial | Stub only | HIGH |
| Car upgrade | ⚠️ Partial | Stub only | HIGH |
| Career completion | ⚠️ Partial | Stub only | HIGH |
Recommendation: Build full save/load system with JSON storage in database
Category 3: Events & Career
| Endpoint | Implemented | Status | Priority |
|---|---|---|---|
| List career events | ❌ No | MISSING | HIGH |
| Get series data | ❌ No | MISSING | HIGH |
| Start event | ❌ No | MISSING | HIGH |
| Complete event | ⚠️ Partial | Basic stub | HIGH |
| Get event rewards | ❌ No | MISSING | HIGH |
| Special events list | ❌ No | MISSING | MEDIUM |
| Special event enter | ❌ No | MISSING | MEDIUM |
Recommendation: Extract event data from APK, store in database, serve dynamically
Category 4: Multiplayer & Social
| Endpoint | Implemented | Status | Priority |
|---|---|---|---|
| Matchmaking | ❌ No | MISSING | LOW |
| Race sessions | ❌ No | MISSING | LOW |
| Leaderboards | ❌ No | MISSING | MEDIUM |
| Friends list | ❌ No | MISSING | LOW |
| Clubs/Teams | ❌ No | MISSING | LOW |
Recommendation: Phase 2 - focus on leaderboards first, multiplayer later
Category 5: Economy & Store
| Endpoint | Implemented | Status | Priority |
|---|---|---|---|
| Get catalog items | ✅ Yes | Returns empty | MEDIUM |
| Get MTX categories | ✅ Yes | Returns empty | MEDIUM |
| Get item download URL | ✅ Yes | Working | MEDIUM |
| Purchase verification | ✅ Yes | Bypassed | LOW |
| Get purchased items | ✅ Yes | Returns all free | LOW |
| Daily rewards | ⚠️ Partial | Basic logic | HIGH |
| Gold purchase | ✅ Yes | FREE = ∞ gold | HIGH |
Recommendation: Keep everything free, ensure daily rewards work correctly
Category 6: Assets & Content
| Endpoint | Implemented | Status | Priority |
|---|---|---|---|
| Asset manifest | ✅ Yes | Working | CRITICAL |
| Download asset | ✅ Yes | Working | CRITICAL |
| Asset info | ✅ Yes | Working | MEDIUM |
| Asset status | ✅ Yes | Working | LOW |
| Custom car upload | ✅ Yes | Working | LOW |
| Custom track upload | ✅ Yes | Working | LOW |
| Mod packs | ✅ Yes | Working | LOW |
Recommendation: Continue expansion of modding system
🛠️ Implementation Roadmap
Phase 1: Critical - Game Won't Start ⚠️
Goal: Get game to launch and create player profile
-
Synergy ID Generation (1-2 hours)
- Modify UserController.getDeviceID to also return Synergy ID
- Store Synergy ID in database linked to device ID
- Format:
SYN-XXXXXXXX-XXXX-XXXXor similar
-
Server Configuration Endpoint (2-3 hours)
- Create ConfigController
- Add
/config/api/android/getGameConfig - Return server time, feature flags, game version
- Store configs in appsettings.json
-
Basic Save/Load System (4-6 hours)
- Expand ProgressionController
- Add save/load endpoints
- Store game data as JSON blob in database
- Schema:
UserSavestable with (SynergyId, SaveData JSON, LastModified)
Phase 2: Core Gameplay - Essential for Progression 🎮
Goal: Players can play career mode and progress
-
Career Events System (8-10 hours)
- Extract event data from APK assets
- Create Events database table
- Implement career event list endpoint
- Implement event start/complete with rewards
- Track player event completion state
-
Enhanced Progression Tracking (4-6 hours)
- Car ownership tracking
- Car upgrade levels
- Career series completion
- Unlock system (new events based on progress)
-
Daily Rewards Completion (2-3 hours)
- Fix daily reward claiming logic
- Add streak tracking
- Add calendar view data
- Store last claim time per user
-
Economy System (3-4 hours)
- Currency tracking (R$, Gold)
- Car purchase transactions
- Upgrade cost calculations
- Ensure everything stays free or affordable
Phase 3: Competition - Leaderboards & Time Trials 🏆
Goal: Add competitive elements
-
Leaderboards Service (6-8 hours)
- Create Leaderboards table (Track, LapTime, SynergyId, Date)
- Global leaderboards per track
- Personal best tracking
- Top 100 rankings
-
Time Trials System (4-5 hours)
- Active time trial events
- Time trial submission endpoint
- Rewards for ranking
- Weekly/daily rotation
Phase 4: Special Events - Community Content 🎉
Goal: Unique community-driven events
-
Special Events Framework (8-10 hours)
- Admin panel to create events
- Event start/end times
- Custom rewards
- Event-specific leaderboards
- Community voting system
-
Live Ops System (4-6 hours)
- Server messages/announcements
- News feed
- Special offers (free DLC, etc.)
- Dynamic content delivery
Phase 5: Social - Multiplayer & Friends 👥
Goal: Social features (long-term)
-
Friends System (6-8 hours)
- Friend list management
- Friend comparison (cars, times)
- Friend leaderboards
-
Clubs/Teams (10-12 hours)
- Club creation/joining
- Club leaderboards
- Team events
-
Multiplayer Racing (20-30 hours)
- Matchmaking service
- Race session management
- Real-time race synchronization
- NOTE: Very complex, Phase 5+
📋 Immediate Action Items
Today - Critical Blockers
- Test current server with APK - See what actually breaks
- Add Synergy ID to getDeviceID - Generate and return in response
- Create basic config endpoint - Return server time, version
- Implement save/load stubs - Accept and return JSON saves
This Week - Core Gameplay
- Extract event data from APK - Parse career structure
- Build Events database - Store all career events
- Implement event endpoints - List, start, complete
- Track player progress - Store completion state
- Fix daily rewards - Ensure claiming works
This Month - Polish & Extend
- Add leaderboards - Global rankings per track
- Implement time trials - Weekly rotation
- Create admin panel - Manage events, users
- Add moderation tools - Custom content approval
- Community events - Special limited-time events
🧪 Testing Strategy
Local Testing Checklist
-
Connection Test
# Start server cd E:\rr3\RR3CommunityServer\RR3CommunityServer dotnet run --urls "http://0.0.0.0:5001" # Test Director API curl "http://localhost:5001/director/api/android/getDirectionByPackage?packageName=com.ea.games.r3_row" -
Device Registration Test
# Should return device ID + Synergy ID curl "http://localhost:5001/user/api/android/getDeviceID?hardwareId=test123" -
Asset Delivery Test
# Should return manifest JSON curl "http://localhost:5001/content/api/manifest" -
Progression Test
# Should accept and store save data curl -X POST "http://localhost:5001/synergy/progression/player/SYN123/update" \ -H "Content-Type: application/json" \ -d '{"level": 5, "currency": 10000}'
APK Testing Sequence
- Install APK with server URL input dialog
- Launch game → Enter server URL
- Watch logcat for network calls:
adb logcat | grep -E "(HttpRequest|NetworkConnection|SynergyEnvironmentImpl)" - Check for errors - 404s, 500s, connection failures
- Test progression - Complete a race, check if saves
- Test rewards - Claim daily reward
- Test catalog - Check store loads
🎯 Success Criteria
Minimum Viable Server (MVP)
- ✅ Game launches without crashes
- ✅ Player can create profile (Synergy ID)
- ✅ Player can complete races
- ✅ Progress saves and loads
- ✅ Daily rewards work
- ✅ Currency (R$, Gold) tracks correctly
- ✅ Cars can be purchased and upgraded
Fully Functional Server (v1.0)
- ✅ MVP +
- ✅ Full career mode with all events
- ✅ Leaderboards for all tracks
- ✅ Time trials with weekly rotation
- ✅ Custom content (cars/tracks) working
- ✅ Special community events
- ✅ Admin panel for management
Advanced Features (v2.0+)
- ✅ v1.0 +
- ✅ Friends system
- ✅ Clubs/Teams
- ✅ Multiplayer racing
- ✅ Live ops/dynamic content
- ✅ Moderation & community tools
💡 Key Insights
From APK Analysis:
- Game expects specific URL patterns - Must match EA's structure
- Synergy ID is critical - Used everywhere as player identifier
- Save data is JSON - Easy to store/retrieve
- Events are data-driven - Can be extracted from APK
- SSL validation is disabled - Self-signed certs work!
From Server Analysis:
- Good foundation exists - 58 endpoints already implemented
- Missing critical flow - Identity → Save → Events chain
- Modding system ready - Unique community feature
- Easy to extend - Clean controller architecture
Architecture Strengths:
- ✅ Modular controllers - Easy to add new endpoints
- ✅ Database EF Core - Clean data access
- ✅ ASP.NET Core - Modern, fast, scalable
- ✅ JSON everywhere - Simple data exchange
Architecture Gaps:
- ❌ No background jobs - Need for event rotation
- ❌ No caching - Could improve performance
- ❌ No rate limiting - Could prevent abuse
- ❌ Basic error handling - Needs improvement
🚀 Next Steps
- Run local test - See what breaks first
- Implement Synergy ID - Critical first fix
- Add config endpoint - Second critical fix
- Build save/load - Third critical fix
- Extract event data - Start on gameplay
- Test progressively - One feature at a time
This analysis provides a complete roadmap for implementing all necessary server-side functionality to run RR3 Community Edition!
🏎️💨 Let's build this!