The Bug Squad: Dash Ability

5 Min. read

After a couple of weeks of break spent in the south west of France — great sights, food and drinks, highly recommended! — let’s get back to work.

I’ve started implementing a basic dash ability that can be used to quickly escape from dangerous situations. The ability will be shared by all mechs in The Bug Squad. At some point I’d like to make it upgradable to make it deal damage too — we’ll see. This is how things currently look:

Implementing the dash movement

The first step to implement the ability was creating the actual dash movement. When dashing, I want mechs to be driven at full speed for some time, with players being able to steer, but not stop before dashing is over.

Mechs in The Bug Squad use the standard UCharacterMovementComponent (CMC) provided by the engine. This is a powerful (and complex) component that supports movement prediction on the local owning client to reduce perceived lag, as well as reconciliation with the server, interpolated location updates on remote clients, etc.

Read more…

The Bug Squad: Gameplay Ability System Setup

8 Min. read

I’ve been waiting for a chance to play around with the Gameplay Ability System (GAS) that ships with Unreal for quite some time. The official documentation defines GAS as:

[…] a highly flexible framework for building the types of abilities and attributes that you might find in an RPG or MOBA title. You can build actions or passive abilities for the characters in your games […]

The system packs a lot of features — perhaps even too many! 😄 — but its major selling point in my opinion is the fact that it’s fully networked, with support for client-side prediction and reconciliation. Anyones who’s ever written multiplayer code knows how difficult that can be to get right. Solutions are usually project-specific, whereas GAS tries to accomplish the same in a project-agnostic manner.

GAS is also battle-tested, having being used in most of the recent games by Epic, including Fortnite. I’m planning to use GAS to drive most of the gameplay in The Bug Squad.

Getting started

If it’s true that software is only as good as its documentation, then one would be up for a disappointment with GAS: official documentation is lacking at best. Luckily, there are several learning resources maintained by the community:

  • Using the Gameplay Ability System: Unreal Fest Europe 2019 talk that provides a good high level intro to the system.
  • GAS Documentation: the definitive guide to GAS. It explains all the concepts, and then some.
  • GAS Shooter: companion project to the above. Implements a shooter game using GAS.
  • Let’s make an MMO in UE4: long video series where GAS is used to create a MMO.
  • a blog that offers advanced tips and tricks related to GAS.
  • GAS Content: a list of additional resources.
  • Lyra: UE5 example project by Epic. Perhaps too complex for what it’s accomplishing, but a good learning resource nonetheless.
  • ActionRPG: older GAS example project released by Epic. Unfortunately it doesn’t support networking.

The system is complex and will take a lot of time to learn, but over the weekend I managed to at least get the basics going.

Read more…

The Bug Squad: Minimal Mech Visuals, Locomotion and Aim

3 Min. read

In the last post I talked about implementing a basic camera and input system for The Bug Squad. This weekend I built on top of that and set up a basic mesh and animation blueprint for the player’s mech.

Minimal mech visuals

The marketplace asset I’m using comes with a single skeleton and multiple meshes that can be combined together to customize how the mech looks.

A screenshot of the UE5 content browser showing a few assets that come with the marketplace pack I'm using

At some point I’d like to experiment with giving players the ability to customize their mechs, but for now I didn’t want to spend too much time worrying about that. Instead I’ve identified a minimal set of items needed to give the mech a more or less complete look: legs, cockpit, shoulders, arms and a weapon.

A screenshot of the mech Blueprint component hierarchy in UE5, showing a minimal set of mesh components that make up the mech

Since individual skeletal meshes share the same skeleton I’ve used master pose to synchronize animation across all components.

A screenshot of the mech Blueprint construction script in UE5, where all meshes are synced together using master pose

Let’s take a look at the animation blueprint.

Read more…

The Bug Squad: Basic Camera And Input Setup

7 Min. read

This weekend I’ve implemented a basic camera and input system for The Bug Squad. The camera uses a very simple top down setup for now, implemented inside a custom APlayerCameraManager class. For the input system I decided to try the new Enhanced Input plugin included in UE5.

For reference, here’s the model I’m going to use for the player’s mech. Some design considerations, as we’ll see later, depend directly on how the model is set up.

The model is available on the UE marketplace and even if it’s marked as only being compatible with UE 4.20 it works flawlessly in UE5. It looks great overall, although I was disappointed by the fact that source PSD textures aren’t included in the UE package, while they’re available in the Unity one. I got in touch with the author, but no response so far.

Read more…