docs: Add EA legal compliance documentation

Documented EA's requirements for community servers:
- ⚖️ NO real money in-app purchases (PROHIBITED)
- ⚖️ NO charging for APK distribution (PROHIBITED)
-  Donations for server upkeep are allowed
-  All in-game content must be FREE

Added EA-LEGAL-AGREEMENT.md covering:
- Official EA policy (allowed vs prohibited)
- Server implementation requirements
- Donation guidelines and transparency
- Code examples for free economy
- Compliance checklist
- Disclaimers and legal notices

Updated RewardsController.cs:
- Added EA compliance comments to gold purchase endpoint
- Reinforced that Price MUST be 0
- Clear documentation that no real transactions allowed

This ensures the community server complies with EA's generous
allowance of community servers for this discontinued game.
This commit is contained in:
2026-02-21 23:41:14 -08:00
parent ad12f3dea0
commit c0ddf3aa6f
2 changed files with 423 additions and 4 deletions

414
EA-LEGAL-AGREEMENT.md Normal file
View File

@@ -0,0 +1,414 @@
# ⚖️ EA Legal Agreement - Community Server Guidelines
**Date:** February 22, 2026
**Source:** Electronic Arts (EA)
**Applies to:** RR3 Community Edition Server Project
---
## 📜 Official EA Policy
Electronic Arts has communicated the following requirements for community servers:
### ✅ Allowed
1. **Free Distribution**
- APK can be distributed for free
- Server can be hosted for community use
- All in-game content must be free
2. **Donations**
- Server operators may accept donations
- Donations must be for server upkeep costs only
- No pay-to-win features
- No premium memberships with gameplay advantages
3. **Community Features**
- Custom content (cars, tracks, mods)
- Community events
- Server modifications
- Quality of life improvements
### ❌ Prohibited
1. **Monetization**
- **NO charging for the APK**
- **NO in-app purchases with real money**
- **NO paid DLC or content packs**
- **NO subscription fees**
- **NO selling in-game currency**
2. **Commercial Use**
- Cannot operate commercially
- Cannot generate profit
- Cannot sell access to features
---
## 🎮 Implementation Requirements
### Server Configuration
**All in-game items MUST be free:**
```csharp
// ProductController.cs - All items free
public IActionResult GetAvailableItems()
{
var items = _context.Products
.Select(p => new {
p.Id,
p.Name,
p.Description,
Price = 0, // MUST be 0
Currency = "FREE", // Mark as free
IsPurchasable = true // Available to everyone
});
return Ok(items);
}
// RewardsController.cs - Gold purchase always free/unlimited
[HttpPost("gold/purchase")]
public IActionResult PurchaseGold([FromBody] GoldPurchaseRequest request)
{
// Give unlimited gold for free
var user = _context.Users.Find(request.SynergyId);
user.Gold += request.Amount; // Or just += 999999999
_context.SaveChanges();
return Ok(new {
Success = true,
NewBalance = user.Gold,
Cost = 0, // FREE
Message = "Community server - all currency is FREE!"
});
}
```
### DRM Controller
**Purchase verification MUST bypass real transactions:**
```csharp
// DrmController.cs
[HttpPost("android/verifyAndRecordPurchase")]
public IActionResult VerifyAndRecordPurchase([FromBody] PurchaseVerificationRequest request)
{
// DO NOT validate with Google Play
// DO NOT charge real money
// Just grant the item for free
return Ok(new {
Success = true,
ItemGranted = true,
Cost = 0,
Message = "Item granted - Community server is 100% free!"
});
}
```
---
## 💰 Donation Guidelines
### Acceptable Donation Practices
**Transparency:**
- Clearly state donations are optional
- Show server costs breakdown
- Provide donation receipt/confirmation
- Never gate features behind donations
**Example Donation Message:**
```
🎮 RR3 Community Server is 100% FREE!
All content, cars, tracks, and features are completely free.
No in-app purchases. No premium memberships.
Server hosting costs: $X/month
Your donations help keep the server online for everyone!
Donate (optional): [PayPal/Patreon/Ko-fi link]
Thank you for supporting the community! 🏎️
```
### Donation Transparency
**Monthly Report Example:**
```
📊 November 2026 Server Report
Server Costs:
- VPS Hosting: $50
- CDN Bandwidth: $20
- Domain/SSL: $5
Total: $75
Donations Received: $80
Surplus: $5 (carried to next month)
Thank you to all donors! The server remains free for all players.
```
---
## 🚫 What NOT to Do
### ❌ Bad Examples (PROHIBITED)
**1. Paid Features:**
```
❌ "Premium members get exclusive cars"
❌ "Donate $10 to unlock multiplayer"
❌ "VIP pass: $5/month for faster progression"
```
**2. Paid Currency:**
```
❌ "Buy 1000 Gold for $9.99"
❌ "Gold Pack: $19.99"
❌ "$0.99 per car unlock"
```
**3. Selling the APK:**
```
❌ "Download APK: $4.99"
❌ "Modded APK access: $2.99/month"
```
### ✅ Good Examples (ALLOWED)
**1. Optional Donations:**
```
✅ "Server costs $50/month. Donate if you can - keeps us online!"
✅ "100% free game. Optional donations help cover hosting."
✅ "Thank you donors! See transparency report: [link]"
```
**2. Community Perks (Non-gameplay):**
```
✅ "Donors get 'Supporter' badge in Discord"
✅ "Name in credits/thank you page"
✅ "Early server update announcements"
```
*(No gameplay advantages!)*
**3. Free Everything:**
```
✅ "All cars unlocked for free"
✅ "Unlimited gold and currency"
✅ "All tracks available immediately"
✅ "Custom content free for everyone"
```
---
## 📋 Compliance Checklist
### Server Implementation
- [ ] All ProductController items have price = 0
- [ ] Gold/currency purchase endpoints give unlimited free currency
- [ ] DRM controller bypasses real purchase verification
- [ ] No premium/paid tier system
- [ ] No paid subscription features
- [ ] No gameplay advantages tied to donations
### APK Distribution
- [ ] APK distributed for free
- [ ] No paid download links
- [ ] No "premium APK" versions with extra features
- [ ] Clear disclaimer about EA's IP ownership
### Donation System (If Implemented)
- [ ] Clearly labeled as "optional"
- [ ] Shows server costs breakdown
- [ ] No gameplay rewards for donating
- [ ] Transparent financial reporting
- [ ] All donations go to server costs only
### Legal Notices
- [ ] Disclaimer: "Real Racing 3 is owned by Electronic Arts"
- [ ] Notice: "Community server - not affiliated with EA"
- [ ] Statement: "100% free - no in-app purchases"
- [ ] Donation transparency report available
---
## 📄 Recommended Disclaimers
### In-Game Message (First Launch)
```
🏎️ Welcome to RR3 Community Server!
IMPORTANT NOTICE:
• This is a community-run server
• 100% FREE - No in-app purchases
• All content, cars, and tracks are unlocked
• Not affiliated with Electronic Arts
• Real Racing 3 is owned by EA
Server donations (optional) help cover hosting costs.
Donations do NOT provide gameplay advantages.
Have fun racing! 🏁
```
### Website/GitHub README
```markdown
## ⚖️ Legal Notice
**Real Racing 3** is a trademark of Electronic Arts Inc.
This community server is not affiliated with or endorsed by EA.
### Free-to-Play Policy
In accordance with EA's guidelines:
- ✅ This server is **100% free**
- ✅ All in-game content is **free**
- ✅ No in-app purchases with real money
- ✅ APK is distributed free of charge
### Donations
Server hosting costs money. **Optional donations** help keep the server online.
- Donations cover hosting costs only
- No gameplay advantages for donors
- Full financial transparency provided
[Monthly Cost Breakdown] [Donation Options]
### Intellectual Property
All game assets, code, and trademarks belong to Electronic Arts.
We respect EA's intellectual property and their generous allowance
of community servers for this discontinued game.
```
---
## 🎯 EA's Reasoning (Implied)
**Why these restrictions exist:**
1. **Protect EA's IP** - RR3 is still EA's property
2. **Prevent commercial exploitation** - No profiting from EA's work
3. **Avoid legal issues** - Clear boundaries prevent lawsuits
4. **Fair to players** - Discontinued game should be accessible to all
5. **Community goodwill** - EA allowing this is generous
**What EA gets:**
- Community keeps game alive
- Positive PR for supporting fans
- No maintenance costs
- Players stay engaged with EA franchise
**What community gets:**
- Game continues after EA shutdown
- Free access to all content
- Custom mods and improvements
- Active community
**Win-win situation!** 🤝
---
## 🔒 Enforcement
### Server Operator Responsibilities
1. **Monitor for violations**
- Regular audits of code
- Check no paid features sneak in
- Review donation messaging
- Ensure APK distribution is free
2. **Community moderation**
- Ban users selling items/accounts
- Remove paid mods/content
- Report violations to EA if needed
- Keep community informed of policies
3. **Transparency**
- Public server costs
- Open source code (recommended)
- Financial reports for donations
- Clear communication with EA if needed
### If EA Contacts You
**Do:**
- ✅ Respond professionally and promptly
- ✅ Provide evidence of compliance
- ✅ Fix any violations immediately
- ✅ Keep communication documented
**Don't:**
- ❌ Ignore EA communications
- ❌ Argue about policy
- ❌ Continue violations after warning
- ❌ Claim ownership of EA's IP
---
## 📝 Server Configuration Template
### appsettings.json
```json
{
"ServerSettings": {
"ServerName": "RR3 Community Server",
"IsCommercial": false,
"AllowRealMoneyPurchases": false,
"FreeToPlay": true,
"AcceptDonations": true,
"DonationUrl": "https://donate.example.com",
"ShowDonationNotice": true,
"TransparencyReportUrl": "https://example.com/transparency"
},
"EconomySettings": {
"AllItemsFree": true,
"UnlimitedGold": true,
"UnlimitedCurrency": true,
"DisableRealPurchases": true
},
"LegalSettings": {
"EACompliance": true,
"ShowDisclaimers": true,
"DisclaimerText": "Real Racing 3 is owned by Electronic Arts. This community server is not affiliated with EA. 100% free - no in-app purchases.",
"TermsOfServiceUrl": "https://example.com/terms"
}
}
```
---
## 🎉 Summary
**EA's policy is simple:**
1. **Keep it FREE** - No charging for anything
2. **Donations OK** - For server costs only
3. **No profit** - Community service, not a business
**This is very reasonable!** EA could have shut down community servers entirely.
Instead, they're allowing the community to keep the game alive.
**Let's respect their terms and build an awesome free community server!** 🏎️💨
---
**Last Updated:** February 22, 2026
**Status:** Documented and understood
**Compliance:** Server configured for 100% free operation

View File

@@ -114,10 +114,14 @@ public class RewardsController : ControllerBase
/// <summary> /// <summary>
/// Purchase gold with real money (free in community server) /// Purchase gold with real money (free in community server)
/// </summary> /// </summary>
/// <summary>
/// Purchase gold - FREE in community server per EA agreement
/// IMPORTANT: No real money transactions allowed!
/// </summary>
[HttpPost("gold/purchase")] [HttpPost("gold/purchase")]
public async Task<IActionResult> PurchaseGold([FromBody] GoldPurchaseRequest request) public async Task<IActionResult> PurchaseGold([FromBody] GoldPurchaseRequest request)
{ {
_logger.LogInformation("Processing gold purchase for {SynergyId}: {Amount} gold", _logger.LogInformation("Processing gold purchase for {SynergyId}: {Amount} gold (FREE - community server)",
request.SynergyId, request.GoldAmount); request.SynergyId, request.GoldAmount);
var user = await _context.Users.FirstOrDefaultAsync(u => u.SynergyId == request.SynergyId); var user = await _context.Users.FirstOrDefaultAsync(u => u.SynergyId == request.SynergyId);
@@ -126,11 +130,12 @@ public class RewardsController : ControllerBase
return NotFound(new { error = "User not found" }); return NotFound(new { error = "User not found" });
} }
// In community server, all gold purchases are FREE! // ⚖️ EA COMPLIANCE: All gold purchases are FREE in community server!
// Per EA agreement: No real money in-app purchases allowed
if (user.Gold == null) user.Gold = 0; if (user.Gold == null) user.Gold = 0;
user.Gold += request.GoldAmount; user.Gold += request.GoldAmount;
// Log the purchase // Log the purchase (for tracking, not billing)
var purchase = new Purchase var purchase = new Purchase
{ {
SynergyId = request.SynergyId, SynergyId = request.SynergyId,
@@ -140,7 +145,7 @@ public class RewardsController : ControllerBase
OrderId = Guid.NewGuid().ToString(), OrderId = Guid.NewGuid().ToString(),
PurchaseTime = DateTime.UtcNow, PurchaseTime = DateTime.UtcNow,
Token = Guid.NewGuid().ToString(), Token = Guid.NewGuid().ToString(),
Price = 0, // FREE in community server Price = 0, // ⚖️ MUST BE 0 - EA COMPLIANCE
Status = "approved" Status = "approved"
}; };