The technology behind the game

We develop gameplay systems, production tools and server infrastructure. We connect the engine, content and online services in a manageable architecture — from the first prototype to updates after launch.

An engine for your mechanics, team and platform

We compare engines against the game’s requirements: visual style, simulation complexity, networking model and content workflow. We validate the choice with a technical prototype and a representative scene, rather than a feature list alone.

Unreal Engine

When we choose it
We consider it for detailed 3D worlds, action games and projects that need extensive scene and gameplay authoring tools.
What we build
We separate C++ systems from parameters and behaviour in Blueprints, so designers can configure gameplay without changing the core implementation.
What we weigh up
We use the prototype to test target hardware, build times and rendering cost. We assess engine modifications alongside the work required to adopt future engine updates.

Unity

When we choose it
We consider it for 2D and 3D games that benefit from C# development, component composition and custom editor tools.
What we build
We design gameplay modules, content configurations and resource lifecycles. For large batches of computation, we evaluate whether DOTS is justified.
What we weigh up
We agree on the render pipeline, package compatibility and memory rules early. We justify any move to ECS through profiling and the cost of maintaining the design.

Godot

When we choose it
We consider it for 2D and compact 3D projects that need control over game structure and a flexible scene workflow.
What we build
We develop logic in GDScript or C# and add native C++ modules through GDExtension where required.
What we weigh up
Before committing, we check target-platform exports, available integrations and support for the selected language. We verify critical dependencies in a separate test build.

Every tool has a specific job

We select the technology stack for each game. We define each dependency’s role, engine compatibility, terms of use and replacement path, choosing libraries, networking SDKs and hosting separately.

Gameplay Ability System

Gameplay ability framework

We consider Unreal GAS for abilities, attributes and effects in interconnected combat mechanics. We configure resource costs and cooldowns, assessing whether simpler mechanics justify the framework’s complexity.

Unity Entities / DOTS

Data and computation architecture

We evaluate ECS through Unity Entities for large numbers of similar objects. We test whether data layout and batch processing justify moving away from a conventional component tree.

Unity Addressables

Game asset management

We configure asset packaging, loading and release in Addressables. We define content groups, dependencies and cache rules to give new levels and localisations a predictable delivery lifecycle.

Photon Fusion

Networking SDK

We choose a Fusion topology and state-authority model around the game’s requirements. We verify prediction and synchronisation within the selected mode and test behaviour on unstable connections.

Nakama

Game backend

We consider Nakama for online features and server logic. We determine which rules to implement in its runtime and which need a separate game process running engine physics.

Agones

Dedicated server orchestration

We assess Agones for managing game servers on Kubernetes. We choose it when the project needs control of server pools and match lifecycles and has the resources to operate clusters.

PlayFab Multiplayer Servers

Managed server hosting

We consider this service for running and scaling custom game servers on Azure. We assess regions, standby capacity and build integration, designing gameplay rules and client synchronisation separately.

Architecture from the game frame to the server

We define module boundaries before dozens of systems become tightly coupled. For each layer, we document state ownership, data contracts and failure behaviour.

Game client

We implement input handling, world presentation and player feedback. We separate visual effects from the rules that determine a match outcome.

  • Controls and camera
  • Interface and accessibility
  • Animation, audio and VFX

Simulation and rules

We develop movement, combat and interactions. We design these systems to be checked independently of a particular level or interface.

  • Game state and events
  • Physics and NPC behaviour
  • Saving and restoration

Online services

We implement persistent state between sessions and coordinate player interactions. We separate the authority of the client, match server and account services.

  • Authentication and profile
  • Matchmaking and sessions
  • Progression and economy

Production tools

We connect programmers, artists and QA through shared tools. We automate content checks and record the origin of each build.

  • Editors and importing
  • Builds and automated tests
  • Diagnostics and telemetry

We select systems according to the game modes: an offline project can run without online services, while networked features receive only the server components they need.

Multiplayer starts with trust boundaries

We design networking around the pace of play and the consequences of an error. We balance latency, control and running costs differently for a co-op adventure, a turn-based strategy game and a competitive shooter.

Who validates an action

We decide where movement, hits and rewards are calculated. We validate critical actions on the server to reduce trust in the client, treating this validation as one part of a comprehensive anti-cheat strategy.

What players see between packets

We configure interpolation and, where needed, prediction and state reconciliation. We separately test packet loss, variable latency and rejoining a session after disconnection.

How much state to send

We limit replication to relevant objects and distinguish critical events from cosmetic effects. We agree update rates using traffic measurements, server load and the responsiveness of controls.

How a match lives beyond the client

We connect lobbies, matchmaking, server allocation and match completion. We define timeouts, session cleanup and rules for persisting results when failures occur.

Tools that let your team work on the game

We develop editors and automation around actual production tasks: authoring a quest, changing balance, importing a character or checking a level before a build.

Content without core code changes

We move item, enemy and ability parameters into structured data. We add validation to identify missing references and incompatible values before the game starts.

Predictable importing

We agree naming conventions, formats, scales and asset budgets. We create checks for materials, textures and models that point the author to a specific error.

Delivering new assets

We define content packages, catalogue versions and dependencies. For updates, we test interrupted downloads, damaged caches and compatibility with supported clients.

Optimisation with a frame budget

We start with measurements on target hardware. Alongside average FPS, we check uneven frame times, input latency and loading stalls to assess how smoothly and responsively the game plays.

CPU and simulation

We identify expensive calculations, unnecessary object updates and blocked threads. We compare profiles before and after each change using the same scene and scenario.

GPU and scene

We examine materials, lighting, transparency and geometry. We tune detail levels and effect quality around the game’s visual priorities.

Memory and loading

We track peak memory, asset lifetimes and spikes during location transitions. We plan content loading and release within the platform’s budget.

We use Unreal Insights and Unity Profiler. Before optimisation, we agree target frame time and FPS, memory budget and hardware, then compare results under the same conditions.

Infrastructure for progression, matches and updates

We separate session servers from services that store long-term state. For each part, we define its own rules for managing load, recovery and releases.

Accounts and progression

We design player identification, account linking and save versioning. We define data reconciliation rules for conflicting writes and repeated requests.

An economy with verified transactions

We place critical currency grants and spending on the server. We define duplicate-operation protection and an audit trail for investigating disputed changes.

Operating a live game

We build event configurations, balance settings and administration tools with access controls. We validate high-impact changes and prepare a path back to the previous configuration.

Capacity and observability

We measure concurrent sessions, server wait times and request latency. We use these measurements to configure reserve capacity, alerts and incident procedures.

From a code change to a verified build

We establish a process that can reproduce a game version, check critical scenarios and show exactly what entered a release.

A reproducible environment

We pin engine, package and build-tool versions. We configure CI to produce artifacts linked to their commit and configuration, keeping secrets outside the source code.

Checks at several levels

We combine game-rule, integration and build-launch tests with manual play sessions. We assess controls and visual experience in the game rather than relying on automation alone.

Release preparation

We check saves, client-server compatibility and data migrations. We include monitoring and restoration of the previous working state in the release plan where technically possible.

Approaches to game-system design

We organise code around how a system will be changed, tested and executed in the game. Different tasks within one project can require different approaches.

Composition and data processing

We assemble characters and items from separate capabilities: movement, health and interaction. For large simulations, we consider ECS only after measurement, maintaining a clear boundary between computation and authored content.

States and behaviour trees

We define explicit character-state transitions and break complex NPC decisions into conditions and actions. We separate animation state from combat rules and add diagnostics for understanding action selection.

Data-driven rules

We separate an ability’s algorithm from its parameters, using tools such as Unity ScriptableObject. We validate references and version configuration schemas to maintain save and content compatibility when changing balance.

Module contracts and events

We define who changes state and who only reacts to an event. We set subscription start and end points to help prevent duplicate rewards, hidden dependencies and calls to objects that no longer exist.

What your team receives

We agree the handover package at the start. We select materials for the commissioned module or stage so your team can continue working with the result.

Code and integration

We deliver implemented modules, configurations and integration instructions. We list third-party dependencies with their versions and terms of use.

Architecture and tools

We document system boundaries, data formats and extension points. We provide working examples and content validation rules for editors.

Verification evidence

We provide results from the agreed tests and measurements alongside the environment configuration. We record known defects and untested scenarios separately.

An operational plan

For server components, we deliver deployment, monitoring and recovery procedures. We agree ongoing support scope and each party’s responsibilities separately.

Questions for Skyweb

Can you join a game our team is already developing?

Yes. We start by reproducing the build and reviewing the relevant system. We agree change boundaries, repository practices and checks that protect the game’s existing behaviour.

How do you choose between an existing solution and custom development?

We compare fit with the mechanics, integration cost, licensing terms and ongoing maintenance. We propose a custom component when an existing solution misses a critical requirement or creates an unacceptable dependency.

Can you add multiplayer to a single-player game?

We first examine state, physics, saves and object logic. We then identify what can be reused and what needs redesigning. Adding a networking SDK alone does not turn a game into a multiplayer experience.

Can you optimise a game without rebuilding it?

Yes. We profile agreed scenes on specified hardware and begin with confirmed bottlenecks. For each change, we compare its impact with regression risk; any major redesign requires a separate justification.

What do you need to prepare an estimate?

We need a game description, target platforms, development status and the intended result. For an existing project, we also request access to relevant code, a working build and technical constraints.

How do you estimate schedule and budget?

We break the task into verifiable results and identify dependencies and unknowns. If the available material cannot resolve a critical risk, we propose a bounded technical stage before refining the plan and cost.

Tell us about your project

Project type