Anton Dessov talked about the upcoming Rivals 2 game, sharing with his colleagues the character production workflow, their approach to animation, game design, current plans, and more.
Introduction
Hello, my name is Anton Dessov, but I usually go by Tony. I am a VFX Designer, currently working for Aether Studios on their upcoming game Rivals 2 (the sequel to Rivals of Aether). I have worked for various companies so far like Guerilla Cambridge, Ubisoft Sofia, and Q-Games Kyoto. Since the end of 2020, I have been freelancing and doing a few other projects, but since August 2021 I have mostly worked on Rivals 2. Here's a link to my portfolio page.
My Role in Previous Projects
On all projects, I have worked as a FX Artist. At Guerilla Cambridge, I started as an intern on the PSVR game RIGS: Mechanized Combat League. I was developing the DLC content, but sadly the company was closed before anything could come out. Then I worked on Assassin's Creed Origins and mainly on the DLC Assassin's Creed Origins – Curse of the Pharaohs. In Q-Games, I worked on PixelJunk Raiders.
The Current Project – Rivals 2
Currently, I am working remotely for the Rivals 2 game, it's a really great team, everyone is quite motivated and communication is excellent. Working remotely has its drawbacks, for example, I do not know the whole team personally that much. I live in Europe and most of them are in the US, and our current team is around 24 people or so. We have the standard departments of art, programming, and design, but everyone supports the process with their ideas, with the leads having the final say for what gets in. But generally, our departments are something like Audio, Community, Engineering, Design, Animation, Environment, UI, VFX, and Character Art.
The Character Production Workflow
The answer below is provided by Cory Chatwell, a Tech/VFX Artist at Aether Studios.
On a team of our size, it is critical for us to keep the art pipeline smooth and the number of individual assets to create and manage to a minimum. The first method we adopted to achieve this was to build full base mesh geometry for each character without any costuming or accessories and keep the UVs un-mirrored to allow for asymmetry down the line.
This was a bit of upfront work that has paid off as we are now able to reuse this mesh and texture layout across the majority of our alt skins. If we decide to update the geometry, skinning, or textures, it instantly propagates to all skins that are using the base model, making it much easier to implement global changes to a character line.
Our game also requires color variants for each fighter, it became apparent early on that managing multiple base color textures per skin- per character would quickly spiral out of hand, and would bloat iteration time. We instead developed a series of masks that allow us to block out regions of color selected in Unreal Engine, and then blend shading and other details overtop.
Finally, we try to keep the skeletons and rigs as consistent as possible across the cast so that animators are comfortable and familiar with each rig they interact with. Our first attempt at the face rigs included blend shapes, but we stepped away from that, as it slowed down and complicated our alt-skin production. In the end, we settled on a lightweight joint-based solution that works across the cast without slowing us down or blowing the performance budget, and still satisfies our animation team.
For toon shading, early on, we tried post-processing but were not satisfied with the results. We wanted character artists to be able to fine-tune these features on a per-material basis. This is why we are using the classic inverted hull method for our outlines. Character artists can define where and how thick, as well as which color the outlines should appear over the surface of the character using another custom mask.
We use unlit materials and construct the lighting through the use of color curve assets to define our shading values/banding. None of the characters are being lit by lights in the scene directly, instead light positions and angles are tracked in a Parameter collection, which in turn apply values to the character materials at runtime.
The Animation Approach
The answer below is provided by Diego, Lead Animator at Aether Studios.
Animating a character is super easy stuff! You just move them around in the animation software and drop them in the game. Getting there though, takes a few more steps, teamwork, and lots of patience.
Using references to hit important and awesome-looking poses is crucial for making the character look good. For characters returning from the original Rivals of Aether roster, we used their sprites from the original game to get recognizable posing for iconic attacks such as Zetterburn's forward aerial and down strong. For a brand new addition to the roster (Fleet!), we have to take additional time in meetings and through brainstormed sketches to come up with those poses that best fit her personality and play style.
To make the characters feel good is a far more daunting task. That's where the character's size and weight come into play. There's coding involved to get the proper frame data to make a big heavy swing feel like a big heavy swing, with a more committed length to the start and recovery of the attack. After we get those lengths, the animation itself has to fit into those specific windows. How the character gets from the starting pose to the final pose gets fun because that's where I can stand up out of my animation chair and pretend to be a ninja frog, running up and down the hallway to better understand how a specific movement should play out. Or you can have a look at this:
FX Production
For the production of FX, we work in Unreal Engine 5, and the outside tools we use vary between me and the other FX artists. I personally use Toon Boom Harmony for drawing sprite sheets, Photoshop for sprites, and Maya for making 3D meshes. I believe my colleague uses Photoshop and Blender only. Usually, the way I work is that I get a concept from our FX concept artist who has worked with the designer on what the idea of the effect should be. Then, I quickly try to get something in the game to test and make sure the designers can at least see visually what it looks like. From there, I decide what elements to add to it.
Since drawing sprite sheets takes the most amount of time, I try to test various ways an effect might work before deciding to make the assets that require the most time. I work closely with my FX colleague, who has helped me on multiple occasions to approach an effect technically and artistically, to which I am very grateful. He goes by the name Coconut.
We used to use a style guide in the beginning of the project, but slowly we started to get a feel for what looks good and are not using it as much now. That is how many colors the effect needs to have, how many elements, etc. Our game is similar to Smash Bros, so we take a lot of inspiration from that game as well, not only for how an effect is made but also for how to make sure it blends well with the environment and doesn't obstruct too much.
For fighting games, we actually test games frame by frame and make sure that it doesn't linger too long, nor does it resolve way too fast. Our characters all use different types of nature elements like fire, poison, wind, etc., so they are very distinct if you are playing with different characters, of course. A lot of the effects are actually based on the prequel Rivals of Aether, so we just copied the same amount of keyframes and ideas from there. Our designers are very talented and have a good feel for what works, so we usually get a lot of help as to how to approach the effect. Of course, every effect goes through many iterations until we are satisfied with it.
We use Trello as our production software, so we usually move tasks between "Backlog" – "In Progress" – "For Review" – "Approved" so that we know where we are at each stage of the process. So after creating the effect, we put it for review where the leads play the build usually once at the end of the week, and write feedback that we address. We use Discord for communication as well, so sometimes we can just post a video and ask questions about certain effects – how to approach it if certain elements are as we imagine them.
Examples
Ranno USpecial
Here's an example from an effect of the character Ranno, who uses poison as his main element. This attack is called an USpecial, U standing for Up as all the Special moves have a direction. First, we'll see how it looked like in Rivals 1, the game we base on some of the characters.
Using this video, our concept artist Calvin drew this amazing concept. This is a link to his portfolio.
From there, the instruction was that this needed to look a lot more 3D, so his body was fully covered with the poison. Actually, that was the point for most of the effects of Rivals 2 – to have more volume. So, I made a couple of meshes, very simple cone ones, and I used a lot of inverted meshes as well for the dark part you can see around his body.
The material is scrolling textures that have compressed colors, and sometimes we use a function in Unreal Engine called "Value step" that accomplishes this. Other times, we just use a "Value Remap" to get colors from one value to another, making it more stylized.
Here's an example of the material and a breakdown of the meshes used.
Here we can also see that the colors are driven by a function that our tech artist made because, for the recoloring of the skins, we use those to easily switch between values. It's super handy!
Fleet USpecial
Here we have a new character called Fleet, who we revealed for Rivals 2. She comes from another game set in the Aether universe – Dungeons of Aether. So, she didn't have any actual moves from Rivals 1. Our designers first wrote down some ideas about what the actual attack would be. Since this one is also an U attack, it means it needed to have some upward momentum.
So, this was the description written down and very simple shots representing the idea:
Rises upward and backward, surrounded by wind, then freezes in place for a short time before launching herself forward in a spiral motion with a strong hitbox that can kill:
- The launch can be angled 45 degrees by holding up, forward, or down (and anywhere in between);
- She retains her momentum after the launch;
- The downward-angled version can grab the ledge, making this good when used near the ledge;
- The hitbox is active only for a short distance (the blue arrow in the picture);
From there, our concept artist made an image that went through some different iterations until the final version.
And then the final version of the effect looked like this. As you can see, some of the elements drawn in the concept were either too small, or we need an extra oomph to sell the look. So the concepts that are drawn are mostly to show what elements are good to have there, and from there we play around with the actual look:
The Fighting Game Design
The answer is provided by Design Director, Dan Fornace.
We have a few ways that we combat setting up both the speed and the balance. The first is that our training tools in practice mode are the same tools we use for developing the game.
The simplest and most useful feature for developing a high-speed game is a frame advance mode. After turning it on, the game simulation is paused and advances with a button press (RB in our case) one frame at a time. The entire game state is paused, so you can view animations and effects one frame at a time at the speed that you want. Here, you can catch all kinds of issues and problems that you wouldn't be able to see at full speed or even at a reduced speed. You can make sure that the animations have strong key poses and that the visual effects are not blocking the characters at critical times. In our developer build, you can also move the camera around during this time to get up close or find a new angle to see where the problems lie. Any problem that you can spot at a slow speed might not be visible at full speed, but they will affect how the game feels.
We can also turn hitboxes on and off to see when visual effects aren't quite matching the gameplay. In general, you want the special move effects to be slightly larger than the hitboxes, especially after the active frames of the attack are over. But you want to keep the effects as close to the actual size of the hitboxes as you can, so they never feel unfair to either player. This is different from single-player games, where you want hitboxes to be bigger than the visual for players and smaller than the visual for enemies.
For balance, we use these tools, but the best way to balance a fighting game is to play it until you come across something that is frustrating. Then, once you have an attack that is bothering you, open up the attack data and compare its properties to other similar attacks in the game. Perhaps the startup is too quick for the reward that you get? Perhaps the damage is too high for such an easily spammable move? Once you see where the outlier is, you have a choice to make. Do you want this attack to have its unique strength? If yes, then what other weakness can you push to make the attack more like a glass cannon? Perhaps it's quick to start but then has a lot of recovery at the end? Or you can decide that you want to tone down its strength and make it more in line with other attacks. In either case, you'll want to make your adjustments and go back to playing the game. If done well, you'll have a new attack that is bothering you after your next play session.
Current Plans
I'm glad you asked. We just started a Kickstarter for Rivals 2! We're looking for help getting the game out on our first platform – PC on Steam. We're 3 years into development now, and we are looking to hire more engineers to get the game out the door in late 2024. Our goal is to have incredible online play with a fully loaded cosmetic shop. We plan to use the Kickstarter funds to increase our team size and achieve those goals and more. If you are interested in Rivals 2 and want to learn more, then you can follow us on Twitter, Discord, or Steam.