5.6 KiB
🎯 CRITICAL FINDING: RR3 Asset System Uses "Cloudcell"
Key Discovery
From analyzing the game binary (libRealRacing3.so), we found:
"Downloading from CDN has failed! NO Cloudcell"
"Download attempt %d of %d from CDN has failed"
"CC_AssetManager_Class::AssetDownloadError()"
Real Racing 3 uses a system called "Cloudcell" for asset delivery!
What is Cloudcell?
Cloudcell appears to be Electronic Arts' internal content delivery network system. Based on the code references:
CC_AssetManager_Class- "CC" likely stands for "Cloudcell"- Downloads assets from a CDN
- Has retry logic for failed downloads
- Part of the game's asset management system
How It Works
Based on our findings:
1. Game Flow
Game Starts
↓
Contacts Director Service
↓
Gets service URLs (including Cloudcell CDN URL)
↓
Uses CC_AssetManager to download assets
↓
Checks manifests (the 1,236 .txt files we found)
↓
Downloads missing assets from Cloudcell CDN
2. Asset Manifest Format
We already have all the manifests! Each lists:
/path/to/asset<TAB>md5hash<TAB>compressed_size<TAB>uncompressed_size
3. CDN URL Structure (Likely)
https://[cloudcell-domain]/[asset-path]
Example:
Manifest: /data/events.dat.nct
CDN URL: https://[cloudcell-cdn]/data/events.dat.nct
Possible Cloudcell CDN Domains
Based on EA's infrastructure patterns, try:
-
Cloudcell-specific:
https://cloudcell.ea.comhttps://cdn-cloudcell.ea.comhttps://cloudcell-cdn.ea.comhttps://assets.cloudcell.ea.com
-
RR3-specific:
https://rr3-assets.ea.comhttps://cdn-rr3.ea.comhttps://realracing3-assets.ea.com
-
CloudFront (AWS):
https://d[random-id].cloudfront.net- EA likely uses AWS CloudFront for Cloudcell
-
Akamai:
https://[id].akamaihd.net- EA also uses Akamai for CDN
Testing Script
# Test possible Cloudcell CDN URLs
$possibleCdns = @(
"https://cloudcell.ea.com",
"https://cdn-cloudcell.ea.com",
"https://rr3-assets.ea.com",
"https://cdn-rr3.ea.com",
"https://realracing3-cdn.ea.com"
)
# Try downloading a known asset from manifests
$testAsset = "/0.dat" # First asset from asset_list_base.txt
foreach ($cdn in $possibleCdns) {
$url = "$cdn$testAsset"
Write-Host "Testing: $url"
try {
$response = Invoke-WebRequest -Uri $url -Method Head -TimeoutSec 10
Write-Host " ✅ SUCCESS! Found: $cdn" -ForegroundColor Green
break
} catch {
Write-Host " ❌ Failed" -ForegroundColor Red
}
}
Alternative: Network Capture
Since the CDN URL isn't hardcoded, we MUST capture it from a live game session:
Method 1: mitmproxy (Best)
# Install
pip install mitmproxy
# Run
mitmproxy --mode transparent --showhost
# Configure Android device to use proxy
# Launch RR3
# Capture the Cloudcell CDN URL from traffic
Method 2: tcpdump on rooted device
adb shell
su
tcpdump -i wlan0 -w /sdcard/rr3-traffic.pcap
# Launch RR3
# Stop capture
# Analyze with Wireshark
Method 3: Hosts file redirect (Advanced)
# Add to Android hosts file (/system/etc/hosts)
# Redirect potential domains to your PC running Wireshark
# See which domain the game tries to contact
For Community Server
Good news: We control the Director service!
Our DirectorController.cs can return ANY URL for synergy.content:
[HttpGet("director")]
public IActionResult GetServiceUrls()
{
var baseUrl = $"{Request.Scheme}://{Request.Host}";
return Ok(new
{
serverUrls = new Dictionary<string, string>
{
{ "synergy.content", $"{baseUrl}/assets/" }, // OUR CDN!
...
}
});
}
Then create /assets/ endpoint that serves files from:
RR3CommunityServer/Assets/downloaded/
The game will download from YOUR server instead of EA's!
Current Status
✅ Found: Cloudcell asset delivery system
✅ Have: All 1,236 asset manifests
✅ Know: Asset download flow
❌ Missing: Actual Cloudcell CDN URL
Next Steps
Option A: Network Capture (Recommended)
- Setup mitmproxy
- Configure Android device
- Launch RR3
- Capture Cloudcell CDN URL
- Update downloader script
- Download all assets (2-5 GB)
Option B: Serve from Community Server
- Don't download from EA
- Let community members extract from their devices
- Upload to community server via web panel
- Our Director returns our server URL
- Game downloads from us!
Option C: Hybrid
- Try to find Cloudcell URL with network capture
- Download critical assets (~500 MB)
- After EA shutdown, crowdsource the rest
- Complete preservation over time
Key Insight
Real Racing 3 uses "Cloudcell" - EA's internal CDN system!
The URL is provided dynamically by the Director service, not hardcoded in the APK. This is actually GREAT for us because:
- We control the Director in our community server
- We can point it at OUR asset storage
- Game will happily download from us
- No need to find EA's CDN if we have the assets!
Files to Reference
- Binary strings:
libRealRacing3.so(31.5 MB) - Asset manifests:
E:\rr3\RR3CommunityServer\RR3CommunityServer\Assets\manifests\(1,236 files) - Downloader:
E:\rr3\RR3CommunityServer\download-assets.ps1
Conclusion: The CDN URL is NOT in the APK. We need to either:
- Capture it from live game traffic, OR
- Serve assets from our own community server (recommended!)
The second option is actually BETTER for long-term preservation! 🎮💾