Apps and Versions
Last updated
Was this helpful?
Last updated
Was this helpful?
Learn about versioning and applications - concepts and best practices for deeper understanding.
Applications encapsulate your individual server projects. This separation of context is particularly useful if you:
work on multiple games or non-game projects (consolidated billing),
work on external projects as a co-developer (transfer ownership later),
depend on multiple loosely coupled server types with different scaling patterns.
You can manage your Applications on Edgegap using our plugins, dashboard, or our API.
Explore our Applications API reference, or read more about our Management API.
As you develop your application and continuously produce new builds, you will need to store each build as a separate version to:
maintain compatibility between your clients and server,
compare various aspects of your incremental releases (performance, quality, user sentiment),
test multiple app versions simultaneously (development, quality assurance, staging, beta).
Each App version points to one build artifact of your choice. Multiple versions may point to the same build.
You can manage your App versions on Edgegap using our plugins, dashboard, or our API.
Explore our App versions API reference, or read more about Management API.
Each version is uniquely identified within it’s parent Application by App version name. You are free to decide your own naming convention. Here’s a few popular examples to inspire your choice:
2024.01.30-16.23.00-UTC
- timestamps are transparent for keeping many past versions,
1.1.0
- semantic versioning is a great choice to communicate scope of changes,
dev
, staging
, qa
, prod
- keeping only the latest version per environment is very easy,
blue
, green
- versions can be used as aliases for a rolling update release strategy.
You can change your approach at any time, as long as you maintain client/server compatibility.
You may disable any App or Version in our dashboard to safeguard against human (dev) errors.
Free Tier is limited to 2 Applications, 2 versions, and 5 GB of Container Registry storage.
Oftentimes, the best solution is a mix of versioning strategies, for example:
using timestamps or semantic versioning for dev builds, for more granular tracking;
keeping staging
, qa
and prod
versions with environment-specific parameters;
alternating blue
and green
versions as aliases for zero matchmaking downtime updates.
In addition to the version’s name, several parameters are required to create a new version:
vCPU - how many virtual CPU units your app needs to run (1024 units = 1 vCPU),
the minimum allowed vCPU amount is 0.25 vCPU (256 units),
this setting can’t be edited on an existing App version, you must create a new version.
Memory - how many megabytes of RAM your app needs to run (1024MB = 1GB),
this setting can’t be edited on an existing App version, you must create a new version.
GPU - how many Graphical Processing Units your app needs to run,
this feature is not available yet, please contact us if you’re interested.
Versions automatically include RAM in 2:1 RAM-vCPU ratio, allowing up to 512MB of RAM per 0.25 vCPU.
Our server machines use AMD/Intel CPUs with clock speed 2.4 - 3.2 GHz, varying by location. To ensure your server has sufficient resources available, reach out on Community Discord.
These parameters will help our system decide which build of your server should be started later:
Registry - registry.edgegap.com
if you’re using our Container Registry,
to use a third party registry input your third party registry docker credentials,
registry serves as a shared storage service for your and other user’s repositories.
Image Repository - refers to your Application’s dedicated repository,
find all of your repositories on our dashboard’s Container Registry page,
each repository may include multiple tags of your server image.
Tag - refers to a specific build artifact (version) of your server image,
our plugins copy the tag values from App version names by default,
you can view locally stored tags in Docker Desktop Images or using docker CLI.
DO NOT overwrite existing tags to ensure that you always deploy the intended server build. Overwriting Tags may cause the app version to deploy your old (outdated) build using the cached docker image.
Private Registry - if your repository’s access is protected (private repository), we’ll also need:
Username Token - your registry’s programmatic access username,
Password Token - your registry’s programmatic access password,
for Edgegap Container Registry, you may copy these values from our dashboard,
these are not required for public repositories.
Power users - see ✏️ Customize Server Image.
You may additionally specify optional parameters such as:
Session Type - this setting enables custom integration of lobbies and drop-in/drop-out:
learn more about Matchmaking.
Time Constraints - these features can help you manage deployments’ resource lifecycle,
Game Max Duration can be set to gracefully shut down your servers after a given period,
Maximum time to deploy can help you clean up deployments taking too long to start.
Activate Caching - in order to speed up deployment time, members may enable app version caching with a single click in all of our worldwide locations:
Caching reduces deployment time to a few seconds and improves players experience substantially.
Ports - each server will require at least one port in order to accept client connections:
Port value refers to the internal port value, usually from your netcode integration,
Protocol will depend on your netcode integration specifics,
Name is a human-readable identifier for your own needs, may be the same as Port,
Verifications can be enabled to ensure your container is initialized before marked READY.
Environment variables - these custom values will be injected for all deployments on this version:
common examples include: engine arguments, third party secrets and endpoints,
each environment variable may contain up to 4KB (kilobytes) of string data.
Make sure to set your sensitive environment variables (secrets, tokens) as hidden for added security!
Container Log Storage - you may specify your own pre-configured S3 bucket for our system to export your container logs to at the deployment termination stage,
see Endpoint Storage for details on configuration and usage.
Logs of versions without external Storage will be deleted on deployment termination.
Free Tier is limited to 2 Applications, 2 versions, and 5 GB of Container Registry storage.
In order to ensure that none of the parameters change when you create a new App version through our dashboard, we recommend using the Duplicate feature in the top right corner of your previous App version’s dashboard page. When duplicating, you may edit any parameters before saving.
Duplicating or editing your App versions does not require rebuilding your server image.
See Matchmaker Rolling Updates for further automation of releases.
To learn more about protocols, ports, and more, see . Add more ports in your port mapping if your server communicates over multiple protocols.
see also for understanding different ways environment variables can be injected depending on deployment’s context,