AeThex-Engine-Core/docs/CLOUD_SERVICES_ARCHITECTURE.md
2026-02-23 04:47:38 +00:00

13 KiB

AeThex Engine - Cloud Services Architecture

Vision

Cloud-first game engine infrastructure providing authentication, multiplayer backend, cloud saves, analytics, and asset delivery - making online games trivial to build.


Core Services

1. Authentication & User Management

  • Email/password, OAuth (Google, GitHub, Discord)
  • User profiles and preferences
  • Team/organization management
  • Permission systems

2. Cloud Saves & Sync

  • Automatic save game cloud sync
  • Cross-platform save compatibility
  • Conflict resolution
  • Version history

3. Multiplayer Backend

  • Matchmaking service
  • Real-time relay servers
  • P2P connection facilitation
  • Voice/text chat infrastructure

4. Analytics & Telemetry

  • Player behavior tracking
  • Performance metrics
  • Crash reporting
  • A/B testing framework

5. Asset Delivery Network (CDN)

  • DLC/update distribution
  • Asset streaming
  • Version management
  • Bandwidth optimization

6. Leaderboards & Achievements

  • Global/friend leaderboards
  • Achievement system
  • Player statistics
  • Social features

System Architecture

High-Level Overview

┌─────────────────────────────────────────────────────┐
│          AeThex Game (Client)                       │
│  ┌──────────────────────────────────────────────┐   │
│  │   AeThex Cloud SDK (GDScript/C++)            │   │
│  │  • Auth • Saves • Multiplayer • Analytics    │   │
│  └──────────────────────────────────────────────┘   │
│              ↓ HTTPS/WebSocket ↓                    │
└─────────────────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────────────────┐
│          API Gateway (Load Balancer)                │
│         • Rate Limiting • Authentication            │
│         • Request Routing • SSL Termination         │
└─────────────────────────────────────────────────────┘
                      ↓
┌──────────────┬──────────────┬──────────────┬─────────┐
│   Auth      │   Saves      │ Multiplayer  │Analytics│
│   Service   │   Service    │   Service    │ Service │
│             │              │              │         │
│  Node.js    │   Go/Rust    │   C++/Rust   │  Python │
│  PostgreSQL │   S3/Object  │   WebSocket  │  ClickH.│
└──────────────┴──────────────┴──────────────┴─────────┘

Module Structure (Engine Side)

engine/modules/aethex_cloud/
├── SCsub
├── config.py
├── register_types.h/cpp
├── aethex_cloud.h/cpp              # Main singleton
├── auth/
│   ├── auth_manager.h/cpp          # Authentication
│   ├── user_profile.h/cpp          # User data
│   └── session_manager.h/cpp       # Session handling
├── saves/
│   ├── cloud_save_manager.h/cpp    # Save sync
│   ├── save_conflict_resolver.h/cpp 
│   └── save_metadata.h/cpp
├── multiplayer/
│   ├── matchmaking.h/cpp           # Matchmaking
│   ├── relay_client.h/cpp          # Relay connection
│   ├── voice_chat.h/cpp            # Voice integration
│   └── room_manager.h/cpp          # Room/lobby system
├── analytics/
│   ├── analytics_manager.h/cpp     # Event tracking
│   ├── crash_reporter.h/cpp        # Crash reports
│   └── performance_tracker.h/cpp   # Performance
├── cdn/
│   ├── asset_downloader.h/cpp      # Asset loading
│   ├── dlc_manager.h/cpp           # DLC handling
│   └── update_checker.h/cpp        # Updates
├── social/
│   ├── leaderboard.h/cpp           # Leaderboards
│   ├── achievements.h/cpp          # Achievements
│   └── friends_list.h/cpp          # Social features
├── api/
│   ├── http_client.h/cpp           # HTTP requests
│   ├── websocket_client.h/cpp      # WebSocket
│   └── api_request.h/cpp           # Request builder
└── ui/
    ├── auth_dialog.h/cpp           # Login UI
    ├── cloud_panel.h/cpp           # Cloud dashboard
    └── analytics_viewer.h/cpp      # Analytics view

Backend Services

Tech Stack Recommendation

Authentication Service

Technology: Node.js + Express + PostgreSQL
Responsibilities:

  • User registration/login
  • JWT token generation
  • OAuth integration
  • Password reset
  • Email verification

API Endpoints:

POST   /api/v1/auth/register
POST   /api/v1/auth/login
POST   /api/v1/auth/refresh
POST   /api/v1/auth/logout
GET    /api/v1/auth/profile
PUT    /api/v1/auth/profile
POST   /api/v1/auth/oauth/google

Cloud Save Service

Technology: Go/Rust + S3/MinIO
Responsibilities:

  • Store save game data
  • Version management
  • Conflict resolution
  • Compression

API Endpoints:

GET    /api/v1/saves/:user_id
POST   /api/v1/saves/:user_id
GET    /api/v1/saves/:user_id/:save_id
DELETE /api/v1/saves/:user_id/:save_id
GET    /api/v1/saves/:user_id/history

Multiplayer Service

Technology: C++/Rust + WebSocket/UDP
Responsibilities:

  • Real-time relay
  • Matchmaking
  • Room management
  • Voice chat (WebRTC)

WebSocket Events:

// Client → Server
join_room
leave_room
send_message
player_state_update

// Server → Client
room_joined
room_left
player_joined
player_left
state_update

Analytics Service

Technology: Python/Go + ClickHouse/TimescaleDB
Responsibilities:

  • Event ingestion
  • Real-time analytics
  • Crash report storage
  • Query API

Client SDK (GDScript API)

Authentication

# Singleton: AeThexCloud

# Login
var result = await AeThexCloud.auth.login_email("user@example.com", "password")
if result.success:
    print("Logged in as: ", result.user.username)

# OAuth Login
AeThexCloud.auth.login_oauth("google")

# Get current user
var user = AeThexCloud.auth.get_current_user()
print(user.email, user.username, user.avatar_url)

# Logout
AeThexCloud.auth.logout()

Cloud Saves

# Save game to cloud
var save_data = {
    "level": 5,
    "health": 100,
    "inventory": ["sword", "shield"],
    "position": Vector3(10, 0, 20)
}

var result = await AeThexCloud.saves.save("slot1", save_data)
if result.success:
    print("Game saved to cloud")

# Load from cloud
var loaded = await AeThexCloud.saves.load("slot1")
if loaded.success:
    var data = loaded.data
    player.level = data.level
    player.health = data.health

# List all saves
var saves_list = await AeThexCloud.saves.list()
for save in saves_list:
    print(save.name, save.timestamp, save.size)

# Auto-sync (background)
AeThexCloud.saves.enable_auto_sync(true)

Multiplayer

# Join matchmaking
AeThexCloud.multiplayer.matchmaking.join_queue({
    "mode": "deathmatch",
    "region": "us-east",
    "skill_range": [1000, 1500]
})

# Handle match found
AeThexCloud.multiplayer.matchmaking.match_found.connect(func(match_info):
    print("Match found! Joining room: ", match_info.room_id)
    AeThexCloud.multiplayer.join_room(match_info.room_id)
)

# Send player state
AeThexCloud.multiplayer.send_state({
    "position": player.position,
    "rotation": player.rotation,
    "health": player.health
})

# Receive other players' state
AeThexCloud.multiplayer.player_state_received.connect(func(player_id, state):
    var other_player = get_node("Player_" + str(player_id))
    other_player.position = state.position
    other_player.rotation = state.rotation
)

# Voice chat
AeThexCloud.multiplayer.voice.enable(true)
AeThexCloud.multiplayer.voice.mute_player(player_id, true)

Analytics

# Track events
AeThexCloud.analytics.track_event("level_completed", {
    "level": 5,
    "time": 120.5,
    "deaths": 3
})

# Track custom metrics
AeThexCloud.analytics.track_metric("fps", Engine.get_frames_per_second())

# Track screen view
AeThexCloud.analytics.track_screen("main_menu")

# User properties
AeThexCloud.analytics.set_user_property("vip_status", true)

# Crash reporting (automatic)
AeThexCloud.analytics.enable_crash_reporting(true)

Leaderboards

# Submit score
AeThexCloud.social.leaderboards.submit_score("high_scores", 1000)

# Get leaderboard
var leaderboard = await AeThexCloud.social.leaderboards.get("high_scores", {
    "range": "global",  # or "friends"
    "limit": 10
})

for entry in leaderboard:
    print(entry.rank, entry.username, entry.score)

Achievements

# Unlock achievement
AeThexCloud.social.achievements.unlock("first_kill")

# Track progress
AeThexCloud.social.achievements.set_progress("kill_100_enemies", 45)

# Get all achievements
var achievements = await AeThexCloud.social.achievements.get_all()
for ach in achievements:
    print(ach.name, ach.unlocked, ach.progress)

Security & Privacy

Authentication

  • JWT tokens with short expiry (15 min)
  • Refresh tokens (30 days)
  • Secure password hashing (bcrypt/argon2)
  • Rate limiting on auth endpoints
  • CAPTCHA for registration

Data Encryption

  • TLS 1.3 for all communications
  • At-rest encryption for save data
  • End-to-end encryption for voice chat
  • Encrypted credentials storage

Privacy

  • GDPR compliant
  • COPPA compliant (for kids' games)
  • Opt-in analytics only
  • Data deletion on request
  • Privacy policy integration

Pricing Model

Free Tier

  • 5,000 monthly active users
  • 1 GB cloud saves per user
  • 100 GB CDN bandwidth
  • Basic analytics
  • Community support

Pro Tier ($99/month)

  • 50,000 MAU
  • 5 GB cloud saves per user
  • 1 TB CDN bandwidth
  • Advanced analytics
  • Priority support
  • Custom branding

Enterprise (Custom)

  • Unlimited MAU
  • Custom storage
  • Dedicated servers
  • 24/7 support
  • SLA guarantees
  • White-label options

Implementation Phases

Phase 1: Foundation (Month 1-2)

  • Basic auth service
  • Simple cloud saves
  • API client in engine
  • UI dialogs

Phase 2: Multiplayer (Month 3-4)

  • Matchmaking service
  • Relay servers
  • Room management
  • Basic voice chat

Phase 3: Analytics (Month 5-6)

  • Event tracking
  • Crash reporting
  • Dashboard UI
  • Query system

Phase 4: Social (Month 7-8)

  • Leaderboards
  • Achievements
  • Friends system
  • Social sharing

Phase 5: CDN & DLC (Month 9-12)

  • Asset delivery
  • DLC management
  • Update system
  • Version control

Deployment

Infrastructure (Kubernetes)

# Simplified deployment structure
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aethex-auth-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: aethex-auth
  template:
    metadata:
      labels:
        app: aethex-auth
    spec:
      containers:
      - name: auth
        image: aethex/auth-service:latest
        ports:
        - containerPort: 8080
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
            name: db-credentials
              key: url

Monitoring

  • Prometheus + Grafana
  • Error tracking (Sentry)
  • Log aggregation (ELK/Loki)
  • Uptime monitoring
  • Cost tracking

Migration Path

For Developers

  1. Install AeThex Cloud module
  2. Sign up for cloud account
  3. Get API keys
  4. Add cloud SDK to project
  5. Implement auth/saves/multiplayer
  6. Test thoroughly
  7. Deploy games with cloud features

For Players

  1. Create AeThex account (optional)
  2. Cloud saves work automatically
  3. Multiplayer just works
  4. Cross-platform progress

Competitive Advantages

vs. Custom Backend:

  • Zero infrastructure management
  • Built-in best practices
  • Automatic scaling
  • Cost-effective

vs. PlayFab/GameSparks:

  • Engine-integrated (not third-party)
  • Open-source friendly
  • More affordable
  • Better DX for AeThex users

vs. Epic Online Services:

  • Language-agnostic
  • No platform lock-in
  • More flexible pricing
  • Indie-friendly

Next Steps: Build auth service MVP + basic cloud saves