What you need (and what a CDN does here)
You have a game — PC or mobile — that players install and keep up to date: a client that is often several gigabytes, regular patches, and downloadable content or asset bundles. And you have a cdn.com.tr account. That is the whole list. You do not stand up a fleet of download servers or build a global network yourself.
Here is the honest scope up front, because it matters. A CDN distributes everything your players download and everything your game serves over HTTP: the client, patches, DLC, asset bundles, and your game and account API responses. It is not a replacement for real-time multiplayer game servers — the authoritative simulation, matchmaking and UDP netcode are a separate layer. What follows is about the delivery side, which for most games is the biggest, spikiest and most attacked part of the operation.
How it works: origin to edge to player
A CDN keeps cached copies of your files at edge locations across the network. When a player downloads your client or a patch, they are served from the nearest edge instead of one server that might be far away or already overloaded. Your origin — or the CDN storage that holds the build — is only touched when an edge does not have the file yet: the first request warms the cache, and everyone after is served locally.
That is exactly the behaviour you want on launch day or when a big patch drops. The flood of downloads that would melt a single download server is spread across the network and answered close to each player, while your origin stays calm behind it. You get faster downloads for distant players and a bill that reflects cache-efficient edge traffic instead of your origin serving every byte to everyone.
Upload your build to CDN storage
Put your client and patch files on the CDN itself so there is no download server for you to run. From the panel, use the Files area to upload and organize builds like a file manager. From the terminal, cdnctl uploads like scp — and, crucially, you put each build under a version in the path so it is immutable and can be cached hard. For team pipelines or many build machines that want S3 tooling and access keys, step up to S3-compatible object storage instead (cdnctl object-storage buckets create ...).
cdnctl login --email you@studio.com --password ...
cdnctl accounts use <account_uuid>
# the whole build, under a versioned (immutable) path
cdnctl cp -r ./build/1.4.2 builds/1.4.2/
# a single incremental patch file
cdnctl cp ./patches/1.4.1-to-1.4.2.pak patches/1.4.1-to-1.4.2.pak
Cache and versioning that never serves a stale patch
The trick to safe game distribution is immutable, versioned URLs. Because builds/1.4.2/client.pak can never change once it is published, you can cache it at the edge effectively forever — players fetch each file exactly once. When you ship 1.4.3 it lives at a brand-new path, so there is no stale copy to fight and no global purge to wait on.
The one thing that does change is the small manifest that says which version is current. Keep that at a stable URL with a short cache (or purge it when you publish), and keep every build file immutable. That combination is what makes a patch go live the instant you flip the manifest, while your gigabytes of build data stay permanently cached.
Cache-Control for versioned builds vs the manifest
# versioned build files never change -> cache them hard
Cache-Control: public, max-age=31536000, immutable
# the manifest that points at the current version -> keep it fresh
Cache-Control: public, max-age=60
Wire it into your launcher or patcher
Your auto-updater does not need custom servers either. Host a small JSON manifest on the CDN that lists the current version and every file with its path, size and hash. On start, the launcher fetches the manifest from the nearest edge, compares hashes against what the player already has, and downloads only the files that changed — each from the edge, each resumable over HTTP Range if the connection drops mid-download.
That is the entire updater: a manifest plus versioned files, all served from the CDN. No download backend to run, no partial-download bugs to chase, and the same design works for a PC launcher or a mobile game pulling asset bundles and remote config on first launch.
version manifest served from the CDN
{
"version": "1.4.2",
"base_url": "https://cdn.yourgame.com/builds/1.4.2/",
"files": [
{ "path": "client.pak", "size": 4213374208, "sha256": "..." },
{ "path": "audio.pak", "size": 812934144, "sha256": "..." }
]
}
Handle launch spikes and DDoS
Games are among the spikiest and most attacked things on the internet: a launch or a sale sends every player to download at once, and online games are a favourite DDoS target. Serving downloads from the edge already absorbs the legitimate spike, because the network answers it close to players instead of your origin.
On top of that, put the CDN WAF and DDoS protection in front of your download endpoints and your game and account API, and add rate limiting so no single client can hammer a login or patch-check route. Your real origin stays hidden behind the edge, so both the launch flood and an attack land on the network built to absorb them, not on your server. (To be clear about scope: this shields your HTTP delivery and API — mitigating attacks against real-time UDP game servers is a separate, specialised layer.)
What studios ship this way
Ship multi-GB clients and frequent patches from the edge with resumable downloads, instead of a download server that buckles the moment a patch drops.
Serve downloadable content, asset bundles and remote config to mobile players from a nearby edge, so first launch and updates are fast worldwide.
Back your auto-updater with a CDN-hosted manifest and versioned files — no custom download infrastructure, shielded by WAF and DDoS protection.
CDN for games FAQ
Does the CDN host my real-time game server?
No, and this is the honest boundary. A CDN distributes your game download and content: the client, patches, DLC, asset bundles, and your HTTP game and account API responses. Real-time multiplayer netcode — authoritative game servers, matchmaking and UDP traffic — is a separate layer that a CDN does not replace. Use the CDN for everything players download and to protect and cache your API.
Can it serve multi-gigabyte client files?
Yes. Upload large build files to CDN file storage or to S3-compatible object storage and serve them from the edge. Downloads support HTTP Range, so clients can stream and resume very large files instead of restarting them.
How do players get a patch the moment I publish it?
Version every build in its path (builds/1.4.3/...) so a new patch is a brand-new URL that was never cached, then update the small manifest that points at the current version. There is no stale copy to purge and no global cache flush to wait on.
What happens if a download drops halfway?
Edge-served files support HTTP Range requests, so a launcher or browser resumes from where it stopped instead of starting a multi-gigabyte download over.
How does this help on launch or sale day?
The download flood is answered from edge caches spread across the network rather than one origin, and the CDN WAF, DDoS protection and rate limiting shield your origin and API from both the legitimate spike and attacks.