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…

The Bug Squad

3 Min. read

Today I decided to start working on a new game with UE5. The idea is to play around with features like GAS, Niagara, Control Rig, Lumen, EOS, etc. as well as explore Lyra — the example project Epic released alongside the engine — looking for new patterns and best practices.

It’s been a while since I’ve worked on a game on my own, and I’m eager to get a chance to work on multiple areas including modeling, level design, AI programming, etc. I’ll also try to put my plugins to good use, validating their usage in a real UE5 project and — who knows? — maybe I’ll get ideas for making new ones. 😃

Read more…