Unreal Engine gameplay programming

Most gameplay code we inherit was written to prove an idea quickly. We turn it into UE5 systems that hold up in production and that designers can tune without waiting for a programmer.

ExampleAn ability defined as dataWith GAS set up this way, a designer adds a dash by creating assets and tags. No new C++ is needed for the common cases.
GA_Dash                        (Gameplay Ability)
  Ability tags       Ability.Movement.Dash
  Activation blocked State.Stunned, State.Rooted
  Cost               GE_Cost_Stamina      (-25 Stamina)
  Cooldown           GE_Cooldown_Dash     (Cooldown.Dash, 3 s)
  Net execution      Local Predicted
  Montage            AM_Dash_Forward
  Tuning             CT_DashDistance      (curve table, per level)

Typical starting points

01

Gameplay graphs are expensive or hard to maintain.

Prototype graphs became the shipping code, and changing them now breaks things you did not touch.

Profiled first, then targeted changes, with designer-facing logic kept in Blueprints
02

Designers wait on programmers.

Every balance change needs a code change and a new build.

Data assets and curves designers own
03

Abilities are getting tangled.

Each new ability adds special cases, and bugs appear in the ones that already worked.

A clear ability framework, often GAS

Gameplay systems we build

Gameplay Ability System

Abilities, effects, attributes and gameplay tags set up so most new abilities can be built from data.

Characters and movement

Movement modes, custom movement, root motion and the networking that goes with them.

Combat and interaction

Hit detection, damage, targeting, interaction prompts and inventory.

Saves and progression

Save games, unlocks and progression with versioning, so old saves keep loading after updates.

Blueprint to C++

Moving hot paths from Blueprints to C++ while keeping the parts designers need in the editor.

Engine changes and plugins

Engine source changes, custom modules and plugins when the stock engine does not cover the case.

In practice

How a gameplay engagement usually starts

The first week is mostly reading. We play the current build, read the gameplay framework code and profile the systems your designers complain about. Then we write a short list of what to keep, what to refactor and what to replace, with an estimate for each.

New systems start as a short technical design that your leads approve. Code lands through your review process in small pieces, behind feature flags where the risk is high, so the game stays playable the whole time.

Before we hand a system over, a designer on your team builds something with it without our help. If they get stuck, the documentation or the data setup is not finished yet.

Who writes the code

See the whole team.

FOUNDER

David

Founder & Lead Developer

Writes and reviews the gameplay and engine code.

  • Technical direction
  • UE5 C++
  • GAS
  • Engine modules

Yura

Multiplayer & Online Engineer

Handles the networking side of movement and abilities.

  • Replication
  • Dedicated servers
  • EOS
  • Steamworks

Jana

Game & UX Designer

Works with your designers on the data and tuning workflow.

  • Systems design
  • Level design
  • UMG
  • CommonUI

Gameplay programming FAQ

Do you use the Gameplay Ability System for everything?

No. GAS suits ability-heavy games. For simpler games a lighter custom system is often easier to maintain, and we will tell you which we would pick and why.

Can you work on a Blueprint-only project?

Yes. We can keep it in Blueprints, or move the expensive parts to C++ with as little disruption as possible.

Which engine versions do you work with?

Unreal Engine 5. A UE4 project can be upgraded first, scoped as its own milestone.

Start a project

Tell us about the project

Send us the engine version, where the project is and the work you need done. We reply within two business days with who we would put on it, or tell you it is not a fit.

A non-confidential outline is enough. If you need an NDA first, say so here and David will arrange it before you share project materials.

Add project details (optional)