MASSIVE FEATURE: Turn RR3 into a moddable community platform!
Controllers:
- ModdingController: Upload/manage custom cars & tracks
- POST /modding/api/cars/upload (custom car upload)
- POST /modding/api/tracks/upload (custom track upload)
- GET /modding/api/cars (list custom content)
- GET /modding/api/content (search & filter)
- POST /modding/api/modpack/create (bundle mods)
- GET /modding/api/modpacks (browse packs)
- DELETE /modding/api/content/{id} (moderation)
Database:
- Added ModPack entity for mod bundles
- Extended Car with IsCustom, CustomAuthor, CustomVersion
- Extended GameAsset with IsCustomContent, CustomAuthor
- Supports versioning, ratings, download tracking
Configuration:
- CustomAssetsPath & ModsPath settings
- EnableModding flag
- Upload size limits (100MB cars, 200MB tracks)
Documentation:
- MODDING_GUIDE.md: Complete modding system guide
- API endpoints & examples
- Content creation workflow
- Tools & resources
- Community guidelines
- Example scripts
Features:
✅ Upload custom cars (models, textures, audio)
✅ Upload custom tracks (layouts, scenery)
✅ Create & share mod packs
✅ Version control & ratings
✅ Community content discovery
✅ Automatic MD5 verification
✅ Organized file storage
This makes RR3 a COMMUNITY-DRIVEN platform that can
live forever with user-generated content! 🎮🏎️
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
9.6 KiB
9.6 KiB
RR3 Community Server - Custom Content & Modding System
Turn RR3 into a MODDABLE racing game!
🎨 Overview
Your RR3 Community Server now supports FULL CUSTOM CONTENT:
- ✅ Custom cars (models, textures, audio)
- ✅ Custom tracks (layouts, scenery)
- ✅ Mod packs (bundles of content)
- ✅ Community sharing
- ✅ Version control
- ✅ Rating system
🚀 Features
For Players:
- Download & install custom cars/tracks
- Subscribe to mod packs
- Rate & review content
- Automatic updates
For Modders:
- Upload custom content via API
- Version your mods
- Track download stats
- Build mod packs
- Community showcase
📦 Custom Car Upload
API Endpoint:
POST /modding/api/cars/upload
Content-Type: multipart/form-data
Required Files:
| File | Type | Max Size | Description |
|---|---|---|---|
| Model3D | .pak | 50 MB | 3D car model |
| Thumbnail | .png | 5 MB | Preview image |
| Textures | .pvr (optional) | 20 MB | Car skin/paint |
| EngineAudio | .ogg (optional) | 10 MB | Engine sound |
Metadata:
{
"CarName": "Custom Bugatti Chiron",
"Manufacturer": "Bugatti",
"ClassType": "S",
"PerformanceRating": 95,
"Year": 2024,
"CashPrice": 500000,
"GoldPrice": 1000,
"Description": "Custom tuned Chiron with 1600HP",
"AuthorName": "YourUsername",
"Version": "1.0"
}
Example (PowerShell):
$form = @{
Model3D = Get-Item "bugatti_chiron.pak"
Thumbnail = Get-Item "bugatti_thumb.png"
Textures = Get-Item "bugatti_textures.pvr"
EngineAudio = Get-Item "w16_engine.ogg"
CarName = "Custom Bugatti Chiron"
Manufacturer = "Bugatti"
ClassType = "S"
PerformanceRating = 95
Year = 2024
CashPrice = 500000
GoldPrice = 1000
Description = "Custom tuned Chiron"
AuthorName = "MyUsername"
Version = "1.0"
}
Invoke-RestMethod -Uri "https://localhost:5001/modding/api/cars/upload" `
-Method POST `
-Form $form
Response:
{
"success": true,
"carId": "custom_a7f3b2e9d1c4",
"name": "Custom Bugatti Chiron",
"message": "Custom car uploaded successfully!",
"files": {
"model": "E:\\Assets\\custom\\cars\\custom_a7f3b2e9d1c4\\model.pak",
"thumbnail": "E:\\Assets\\custom\\cars\\custom_a7f3b2e9d1c4\\thumbnail.png"
}
}
🏁 Custom Track Upload
API Endpoint:
POST /modding/api/tracks/upload
Content-Type: multipart/form-data
Required Files:
| File | Type | Max Size | Description |
|---|---|---|---|
| TrackData | .pak | 100 MB | Track layout & data |
| Thumbnail | .png | 5 MB | Preview image |
| Scenery | .pak (optional) | 80 MB | Environment assets |
Metadata:
{
"TrackName": "Custom Touge Pass",
"Country": "Japan",
"Description": "Mountain pass inspired by Akina",
"AuthorName": "YourUsername",
"Version": "1.0",
"LengthKm": 5.2,
"Corners": 42
}
📋 Get Custom Content
List Custom Cars:
GET /modding/api/cars
Response:
{
"success": true,
"count": 15,
"cars": [
{
"carId": "custom_a7f3b2e9d1c4",
"name": "Custom Bugatti Chiron",
"manufacturer": "Bugatti",
"classType": "S",
"performanceRating": 95,
"author": "ModderName",
"version": "1.0",
"createdAt": "2026-02-18T09:00:00Z"
}
]
}
List All Custom Content:
GET /modding/api/content?type=car_model&author=Username
🎁 Mod Packs
Create a Mod Pack:
POST /modding/api/modpack/create
Content-Type: application/json
Body:
{
"PackName": "JDM Legends Pack",
"Author": "ModderName",
"Description": "Classic Japanese sports cars",
"Version": "1.0",
"CarIds": [
"custom_skyline_gtr",
"custom_supra_mk4",
"custom_rx7_fd"
]
}
Response:
{
"success": true,
"packId": "modpack_3f2a1b9c",
"name": "JDM Legends Pack",
"downloadUrl": "/modding/api/modpack/modpack_3f2a1b9c/download"
}
Get Mod Packs:
GET /modding/api/modpacks
🛠️ Creating Custom Cars
Step 1: Extract Original Car Model
Use tools like:
- Unity Asset Bundle Extractor (for .pak files)
- Blender (for 3D editing)
- Photoshop/GIMP (for textures)
Step 2: Edit the Model
1. Import .pak file into Blender
2. Modify mesh (body kit, spoilers, etc.)
3. Adjust materials/shaders
4. Export as .pak with same structure
Step 3: Create Textures
- Extract original .pvr textures
- Edit in Photoshop
- Convert back to .pvr format
- Pack into asset bundle
Step 4: Add Custom Audio
- Record or find engine sound (.wav)
- Convert to .ogg format
- Match RR3 audio structure
Step 5: Test & Upload
# Test locally first
Copy-Item custom_car.pak -Destination "E:\rr3\RR3CommunityServer\Assets\custom\cars\test\"
# Upload to server
.\upload-custom-car.ps1 -CarPak "custom_car.pak" -Thumbnail "thumb.png"
🏗️ Creating Custom Tracks
Track Requirements:
Minimum:
- Track mesh (road surface)
- Collision boundaries
- Start/finish line
- Pit lane (optional)
Recommended:
- Scenery (buildings, trees)
- Lighting setup
- Weather support
- Multiple layouts
Tools Needed:
- Unity (RR3 uses Unity engine)
- Blender (3D modeling)
- Track editor plugins
Process:
1. Design track layout (top-down view)
2. Create 3D mesh in Blender
3. Import to Unity
4. Add collisions & checkpoints
5. Add scenery & lighting
6. Build asset bundle (.pak)
7. Test in game
8. Upload to server
🎮 In-Game Integration
How Players Get Custom Content:
Option 1: Automatic (Server-Side)
1. Player opens dealership
2. Sees "CUSTOM" category
3. Custom cars appear with "MOD" badge
4. Purchase with in-game currency
5. Download happens automatically
Option 2: Manual (Mod Browser)
1. Player opens "Mods" menu (custom APK)
2. Browses available mods
3. Clicks "Subscribe"
4. Content downloads & installs
5. Available in garage
📊 Modding Statistics
Track Your Mods:
GET /modding/api/content?author=YourUsername
See:
- Download count
- Ratings
- Comments
- Version history
🔒 Content Guidelines
Allowed:
✅ Original creations ✅ Inspired-by designs (non-infringing) ✅ Fictional cars/tracks ✅ Performance mods ✅ Visual enhancements
NOT Allowed:
❌ Stolen assets from other games ❌ Copyright violations ❌ Malicious content ❌ Inappropriate content ❌ Game-breaking exploits
🚧 Advanced: Mod Pack Creation
Create a Themed Collection:
Example: "Formula Legends Pack"
{
"PackName": "Formula Legends Pack",
"Description": "Iconic F1 cars from 1960-2000",
"Version": "2.0",
"CarIds": [
"custom_lotus_49",
"custom_mclaren_mp4_4",
"custom_ferrari_f2004",
"custom_williams_fw14b"
],
"TrackIds": [
"custom_old_monaco",
"custom_silverstone_classic"
]
}
Versioning:
v1.0 - Initial release (4 cars)
v1.1 - Bug fixes
v2.0 - Added 2 custom tracks
v2.1 - Performance tuning
🔧 Server Configuration
Enable/Disable Modding:
appsettings.json:
{
"ServerSettings": {
"EnableModding": true,
"MaxCustomCarUploadSizeMB": 100,
"MaxCustomTrackUploadSizeMB": 200,
"RequireModeratorApproval": false,
"AllowNSFWContent": false
}
}
🌐 Community Features (Future)
Planned:
- Web-based mod browser
- Rating & review system
- Mod dependency management
- Automatic conflict resolution
- Workshop integration
- Mod showcase page
- Creator profiles
- Donation support
📚 Resources
Modding Tools:
- Unity Asset Bundle Extractor - Extract/edit .pak files
- Blender - 3D modeling
- Audacity - Audio editing
- GIMP/Photoshop - Texture editing
- PVRTexTool - Convert to .pvr format
Community:
- Discord: RR3 Modding Community (create one!)
- Reddit: r/RR3Mods (create one!)
- GitHub: Share your tools
🎯 Quick Start (Modders)
- Extract original assets from game
- Edit model/textures in Blender/Photoshop
- Export as .pak with correct format
- Test locally by copying to Assets/custom/
- Upload via API endpoint
- Share with community!
🎯 Quick Start (Players)
- Browse mods:
GET /modding/api/cars - Download: Game handles automatically
- Install: Appears in garage
- Race: Just like any other car!
💡 Example: Full Workflow
Creating & Uploading a Custom Nissan GT-R:
# Step 1: Prepare files
$modelPak = "E:\rr3\mods\gtr_r35_custom.pak"
$thumbnail = "E:\rr3\mods\gtr_thumbnail.png"
$textures = "E:\rr3\mods\gtr_textures.pvr"
# Step 2: Upload
$response = Invoke-RestMethod `
-Uri "https://localhost:5001/modding/api/cars/upload" `
-Method POST `
-Form @{
Model3D = Get-Item $modelPak
Thumbnail = Get-Item $thumbnail
Textures = Get-Item $textures
CarName = "Nissan GT-R R35 Nismo"
Manufacturer = "Nissan"
ClassType = "A"
PerformanceRating = 78
Year = 2024
CashPrice = 150000
GoldPrice = 500
Description = "Custom tuned GT-R with 700HP"
AuthorName = "GTR_Fanatic"
Version = "1.0"
}
Write-Host "✅ Uploaded! Car ID: $($response.carId)"
# Step 3: Players can now download it!
🏆 MAKE RR3 COMMUNITY-DRIVEN!
With this modding system, Real Racing 3 can LIVE FOREVER with community-created content!
- ✅ Endless new cars
- ✅ Unlimited tracks
- ✅ Community creativity
- ✅ Game never dies!
Start modding today! 🎨🏎️💨