Trending
Opinion: How will Project 2025 impact game developers?
The Heritage Foundation's manifesto for the possible next administration could do great harm to many, including large portions of the game development community.
Here's how the combination of camera effects, sound FX, and VFX created a smooth and high octane experience.
October 29, 2024
Game Developer Deep Dives are an ongoing series with the goal of shedding light on specific design, art, or technical features within a video game in order to show how seemingly simple, fundamental design decisions aren’t really that simple at all.
Earlier installments cover topics such as developing a rating system and making juicy TV in The Crush House, the development of custom tools for the 2D photo mode of A Highland Song, and refreshing the Crusader Kings III tutorial mode through optimized UX.
In this edition, Echo Point Nova creator Matt Larrabee tells us about the combination of camera effects, sound FX, and VFX that create the game's smooth and high octane movement system.
Hi I’m Matt Larrabee, the creator of Echo Point Nova, an open world FPS made in Unreal Engine 4, and today I’d like to talk to you about how I developed a popular feature of my game, the movement system.
Echo Point Nova is set in an open world and I wanted to give the player tools to make moving around the world fast and exciting. Two such tools are a hoverboard and grapple hook. Echo Point Nova holds a 99% positive review score on Steam now, with the movement system receiving a lot of praise, so I hope this write-up is of use to game devs and of interest to players!
The first thing to know is I never really imagined the movement system in my head and then set out to build what I saw in my mind, the movement of Echo Point Nova is the result of just experimenting and tinkering with code. I never really saw more than 1 or 2 steps ahead of me, it was very improvisational and based on what I thought would feel good as I playtested.
But there is some logic that can be found, I think the kind of steps I took could be categorized in four ways:
Searching for Inspiration
Player Physics
Camera Motion
VFX and SFX
So I’d bounce between each of those in a loop for about 3 years, and the end result is Echo Point Nova.
Image via Greylock Studio.
Echo Point Nova wears its inspirations on its sleeve, so I have no shame in sharing the games that inspired the mechanics. Ofte,n when I was stuck in getting a mechanic that didn't feel right, I’d play games to see how other devs solved it, or sometimes I would just be playing a game for fun and realize I really like how the devs solved something I had been puzzling over.
The hoverboard was born out of the sprint-to-crouch slide mechanic, as seen in most modern shooters, in particular Call of Duty. I had built a similar mechanic into Echo Point Nova because it felt cool, and I was really enjoying it as a way to traverse down slopes. I realized it would be nice if I could traverse this way even up slopes and got to thinking what would justify that. Well, what can slide wherever, whenever, for as long as you want? A hoverboard! Thus, the board was born.
I’m not sure where the idea for grapple came from, I think it’s just a cool thing to have in games. A grapple was a major request for my last game, Severed Steel, but I could never figure out a way to add it without totally breaking the balance of the game, so starting a new game was an opportunity to implement a grapple.
I think the biggest influence on Echo Point Nova’s grapple was from Halo Infinite; I thought the way they handled steering it (just look in the direction you want to go) was great. I also liked the different ways they automatically ended a grapple to stop the player from getting stuck grappling when they don’t want to be.
Image via Greylock Studio.
Hoverboarding is based on Unreal’s walking physics, with friction and deceleration disabled. Also, typically, a player hits their max walk speed quickly, but a hoverboard takes a few seconds of holding forward to hit top speed, giving it the feeling of accelerating a vehicle. Probably the trickiest part was in getting the board to recognize and launch off slopes; by default, the Unreal character motion really wants to stick to slopes, so I had to write some slope detection code to figure out when the player should catch some air. Unreal also makes a lot of assumptions about how you want to handle Z velocity when falling off ledges or multi-jumping, and thankfully, I was able to override many to make things feel how I wanted.
The grapple runs on a tick checking that determines if the player is looking at anything they can grapple on; it also remembers if the player recently looked at something grappleable and will let them grapple to it even if they aren't quite still looking at it. This keeps things flowy and lets the player be a little imprecise with the grapples while traveling at high speed. When the player grapples, their velocity interpolates between their current velocity and the desired grapple velocity over about a second. Their desired grapple velocity is essentially where they are looking. If the player’s velocity is not in the direction of their grapple, or if they are close enough to their grapple point, or if they are looking away from their grapple, the grapple breaks.
Image via Greylock Studio.
I’ve found that camera motion is important to getting the feel of these motions right (along with options to turn off any camera flourish, for players who don’t enjoy it).
For both grapple and hoverboard, FOV distortion I think really helps sell the sense of speed. The faster the player is moving, the wider their FOV is. I think someone who worked with me on Severed Steel suggested this idea, and I quite like it.
For hoverboarding, I do a couple of things with the camera to sell the feeling of being on a board. I gently bob the camera up and down while in surf mode to give the feeling of being on a floating object. When the player strafes on the board, I tilt the camera like one might tilt their body to guide a snowboard, and I also tilt the camera to match the right or left slope when surfing perpendicular to a slope.
A very important part of moving is smoothing the movement when the character snaps between points. The way Unreal handles stairs is to essentially teleport the character between each step, which results in jarring camera teleporting by default. So, I’m always smoothing the camera so jumps like that aren't disruptive.
Image via Greylock Studio.
These might not need explanation, but I think they have to be mentioned for this article to be complete. The hoverboard has a pulsing electric engine sound effect, which I pitch up based on the player's velocity. It also has particle FX attached to the board that kick up debris, the type of debris changes depending on the surface the player is on and the speed of the debris changes depending on player velocity.
For the grapple, I thought it was important to have a snappy sound to confirm a successful grapple, along with a bright, obvious beam to show what you grappled to.
I’d like to highlight how any given game mechanic can’t really be viewed in isolation. So, for player physics, I can’t even imagine what it would have felt like in Echo Point Nova without camera effects, sound FX, and VFX. We can expand that further and say that all this work on getting the feel of movement tuned wouldn't matter if the levels weren't interesting, and we can zoom out even further and say the movement system wouldn’t matter if it was unlocked in a weird part of the game or wasn’t tutorialized well. While we are zooming out, let's zoom out more to my workflow. I lead a small indie dev team where I’m the only programmer with engine access, so ultimately, I can change what I want when I want. This allowed me to iterate as much as I wanted in whatever order I wanted to, which enabled my workflow to bounce between player physics, sound FX, VFX, and whatever else I wanted. I’m not sure how replicable such a flow would be for a larger team or a team with less centralization of decision-making, but if such a method is compatible with your team, then maybe give it a try.
I hope you enjoyed reading this! If you’d like me to go into further detail about anything, feel free to write to me at [email protected].
You May Also Like