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:
414
EA-LEGAL-AGREEMENT.md
Normal file
414
EA-LEGAL-AGREEMENT.md
Normal 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
|
||||
@@ -114,10 +114,14 @@ public class RewardsController : ControllerBase
|
||||
/// <summary>
|
||||
/// Purchase gold with real money (free in community server)
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// Purchase gold - FREE in community server per EA agreement
|
||||
/// IMPORTANT: No real money transactions allowed!
|
||||
/// </summary>
|
||||
[HttpPost("gold/purchase")]
|
||||
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);
|
||||
|
||||
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" });
|
||||
}
|
||||
|
||||
// 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;
|
||||
user.Gold += request.GoldAmount;
|
||||
|
||||
// Log the purchase
|
||||
// Log the purchase (for tracking, not billing)
|
||||
var purchase = new Purchase
|
||||
{
|
||||
SynergyId = request.SynergyId,
|
||||
@@ -140,7 +145,7 @@ public class RewardsController : ControllerBase
|
||||
OrderId = Guid.NewGuid().ToString(),
|
||||
PurchaseTime = DateTime.UtcNow,
|
||||
Token = Guid.NewGuid().ToString(),
|
||||
Price = 0, // FREE in community server
|
||||
Price = 0, // ⚖️ MUST BE 0 - EA COMPLIANCE
|
||||
Status = "approved"
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user