For the complete documentation index, see llms.txt. This page is also available as Markdown.

Persistence

Manage persistent worlds with 24/7 always online deployments on Private Fleets.

Many genres (MMOs, Sandboxes, Social Games) leverage persistent worlds to let players:

  • meet and socialize with new friends; to nurture organic player communities,

  • explore a living open world filled with user-generated content placed by players,

  • engage in epic raid battles lasting hours with large groups or entire guilds.

Explore strategies to provide the best possible player experience, keep cost under control, and remove player frustration due to outages or rollbacks.

βœ”οΈ Preparation

To enable persistent, uninterrupted 24/7 always online deployments:

  1. Create a new App Version (or update an existing one).

    • With Dashboard - choose "persistent" instead of specifying max. duration.

    • With API - specify "max_duration": -1 in your app version request.

  2. Create a private fleet in dashboard and schedule hosts.

    1. Creating the fleet is free of charge, do this first to preview locations and details.

    2. Choose Virtual Machines (Performance) or Bare Metal (Overdrive) specifications.

    3. You will be prompted to confirm the final price before scheduling hosts.

  3. Deploy new servers with Server Browser or custom integrations.

    1. Server Browser starts servers according to configured Scaling Policies.

    2. Custom integrations should start servers using private fleet API.

If you need help, please reach out to us over Discord. For live games support see our ticketing system.

πŸ”‘ Server Ownership

Pros and cons of modern vs traditional ownership models with edge computing.

Studio Hosting

Servers traditionally managed by the studio, recoup hosting cost from game revenue.

πŸ‘ Advantages

  • No added player fees - cost of hosting is recouped from studio revenue.

  • Strong client/server compatibility with loose coupling of client/server/service.

  • More resilient to cheating and abuse due to game's closed source code.

πŸ‘Ž Disadvantages

  • Restricted community modding support to ensure server integrity and fairness.

Community Servers

Let your players fund their own servers on Edgegap, and unlock hosting revenue which would otherwise flow to third party hosting services lacking user experience insight.

πŸ‘ Advantages

  • Enhance modding support through curated mods and versions.

  • Improve your game iteratively through direct collaboration with community.

  • Build community trust with improved game longevity and self-service model.

πŸ‘Ž Disadvantages

  • Development investment required for modding support and compatibility.

  • More operation efforts to manage community and payment systems.

  • Increased risk of reverse engineering due to exposing game internals.

πŸ₯› Capacity & Scaling

Learn advanced techniques to optimize server cost and quality of service.

Auto-scaling Reference Architecture

Automate popular game flows for managing sessions and scaling on demand with either:

Matchmaking:

  • Shorter Rounds

  • On-Demand Matches

  • Skill Rating and/or Custom Rules

Server Browser:

  • Persistent or Rounds

  • Social Regional Hubs

  • Auto-Assign and/or Custom Search

Custom Backend:

Capacity

Deployments don't track or manage active player connections after you 1. Start a Deployment to give you absolute control and freedom to implement any design.

Implement capacity management to ensure your servers:

  • control hosting cost - benchmark and optimize server resource usage per player,

  • provide consistent experience - keep CCU per server within safe range.

Tips: if you choose to develop a custom session and capacity orchestrator.
  • Procedure must prevent competing for capacity with concurrent reservations.

  • Send frequent heartbeat to your orchestrator to synchronize server state.

  • Remove stale, crashed, or stopped servers from discovery process quickly.

  • Time out capacity reservations if players don't connect within alloted time.

  • Disconnect clients and release capacity when player inactivity detected.

Scale Up

Smart scaling strategies prevent player queue times and minimize idle server cost.

We recommend scaling resources around concurrent players instead of machine load (CPU & RAM), since fluctuations in load may result in unpredictable availability.

Scaling doesn't require "guesstimating" regional traffic or server cost. Schedule Private Fleets capacity for low tide and automatically overflow to cloud during unexpected traffic peaks.

Scale Down

Shutting down servers without caution may impact player experience negatively. Consider these factors and test changes before releasing:

Is your detection of player inactivity / disconnection reliable?

  • Is absence of player input reliable? Players often use bots and macros to fake activity and avoid getting kicked, resulting in queue wait time upon reconnect.

  • Are there any other indicators of activity which are harder to fake?

  • Is there a game design workaround to mitigate impact/motivation to use bots?

Can you restart servers easily and quickly, without major rollbacks?

  • Your server may require some time to restart and restore state. Does state restoration incurr any additional data transfer or service cost with your game backend?

  • Can you hide server loading with a minigame/lobby to keep players engaged?

Are players bound to specific server instances or can they migrate easily?

  • How does connecting to a different server affect player's account, purchase history, social experience, progression, inventory, and general player retention?

  • Review your Recovery Objectives and ensure critical data isn't lost.

  • Transparency and community management do wonders if there's a downtime.

πŸ’­ Configuration & State

Define server seed parameters, and manage player/server state reliably.

Configuration Management

Configuration or Seed refers to initial data passed to server during deployment:

Configuration is immutable. Read during server startup, no modifications during runtime.

State Management

State refers to runtime data, result of previous player actions and server events:

State data changes frequently. Synchronization occurs many times per second (tick rate).

Stateful components usually have a clear designated owner, either server or a player.

Server Owned Objects

Server owned objects can be manipulated only by server. Connected players have limited read access to server owned objects.

Player Owned Objects

Player owned objects can be manipulated both by players and server. Assigning ownership of persistent world objects to players can make storage and state migration easier.

Recovery Objectives

Some data categories may be more sensitive to data loss and recovery time.

We highly recommend discussing the following amongst your team:

  • Categories of data handled in your game clients, servers, and game backend.

  • Impact of data loss in each category, to your players and to your business.

  • Recovery Point Objective - acceptable amount of data loss before serious harm.

  • Recovery Time Objective - how quickly does the system need to recover.

Review our simplified recovery objective assessment example below:

Data Category
RPO
RTO

account, subscription, and purchases

πŸ”₯ 5 min

πŸ”₯ 30 min

progression, inventory, and skill rating

πŸ”₯ 5 min

πŸ”₯60 min

moderation, performance, and error tracking

⚠️ 30 mins

⚠️ 8 hr

social features, chat history, behavioral analytics

⏬ 24 hr

⏬ 72 hr

πŸ‘€ Observability

Long running persistent servers bring new observability challenges, specifically detecting anomalies in monitoring, logging, and bug tracking. We strongly recommend implementing alerts for server restarts to gain traceability and additional oversight for uptime.

Add custom logs and bug tracking (Sentry, Bugsnag) to troubleshoot partial failures.

Last updated

Was this helpful?