Learning From Lyra

A few days ago I quietly released the latest version of my Shooter Sandbox project.

This update contains a number of improvements to the multiplayer framework (which is a nice way of saying I fixed a bunch of potential bugs/vectors for cheating) but the biggest change is the inclusion of a new and improved Unreal Mannequin alongside a bunch of features I learned from unpacking Lyra.

Download the Unreal project

If you’re already a Patron of mine in the Tutorial Content tier you can download the project right now from this downloads page. Check it out if you’re so inclined!

Why Lyra?

Among my goals for the Shooter Sandbox project are for it to remain as free as realistically possible of all third party code and content, and for it to be a fully functional multiplayer template developed entirely in Blueprint. You may then wonder why I have chosen to jump into Lyra, the famously C++ heavy behemoth of a sample project.

This all started with my long-awaited plan to implement Competitive Recoil 2.0 into the Shooter Sandbox. I realized very quickly that before the Recoil Component could be properly ported across I needed to decide how projectiles are going to be calculated over the network (more on this in a future update) as well as where each bullet should start its journey. These are huge decisions that define a great deal of future work, so they weren’t to be taken lightly.

Bullets come out of a gun, right?

The decision of where bullets come from is deceptively complex, and comes down to the choice between spawning the projectile based on the position of the gun’s barrel or from the camera’s perspective.

If you’re shooting from the camera (like Counterstrike and Valorant) then players can rely on the fact that if they can see a target they can also hit it, even if their gun is obscured.

If you’re instead shooting from the gun’s actual barrel (like PUBG and some weapons in Halo Infinite) you’ll have more a much more realistic shooting model but you’ll run into issues where your gun gets physically blocked from shooting a target that players feel they should be able to hit.

Shooter Sandbox will (hopefully) use a blend of both of these techniques.

These rabbit holes are best left for another time, but in unpacking the implications of each path I realized that regardless of the direction I take I’ll need a robust character controller that gives each player a good idea of where other players are aiming their weapons.

Lyra did a great job of this, so it seemed
like a good place to start exploring.

Lyra is scary complicated

It’s no secret that Lyra is complex and the learning curve can be very steep. There is so much going on under its hood, and its systems are so interconnected that migrating individual features can be a nightmare. Nonetheless it is an absolutely fantastic resource and well worth putting time into unpacking.

I’m pretty bad at playing the game itself
but that’s neither here nor there.

Similar to the almost-as-famous Advanced Locomotion System, Lyra is primarily a learning tool intended to be tinkered with, not an asset pack to be migrated wholesale into your own project.

Not every feature is going to be useful or relevant, so the goal should always be to learn the how and why something has been created the way it has, and to use that knowledge to make your own system.

This is what I am doing with the Shooter Sandbox. Using Lyra-taught thread-safe Animation Blueprint layers and a runtime Control Rig setup, I’ve laid a strong foundation for future animation updates that should see us through.

Reinventing the wheel

I got my start in the games industry as a 3D animator, and even now whenever animations are required my strong instinct is to just do it all myself. This can be a super labor intensive process, so I’m being careful about spending too much time animating while more important gameplay systems sit unfinished.

My solution is to be highly iterative, and to lean heavily on basic lerps and key poses until we figure out exactly which animations we need and what they need to do. I am hoping that this gameplay-first approach will help us get where we need to go faster and provide a better framework from which you can add your own characters/animations.

Setting up some aim offset animations using Control Rig.

I am a technical artist from Adelaide, Australia. I created techarthub to share my knowledge and love for this industry. I hope you feel it too!

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to Top