CRYENGINE Developer Interview: The future of animation + Roadmap Update
CRYENGINE Developer Interview: The future of animation + Roadmap Update

CRYENGINE Developer Interview: The future of animation + Roadmap Update

We speak to animation programming experts Claudio Freda and Pawel Wojtasik to find out more about the new animation system coming to CRYENGINE.

Last week, we released an in-depth tech talk that Claudio Freda, Animation Programmer, and Pawel Wojtasik, Senior Animation Programmer, gave at GIC Poznan 2019. The talk explains the drive to evolve the animation stack, which will future-proof the system, decrease the learning curve, and increase accessibility for designers and technical artists. Today, we’re catching up with the guys to find out more about their progress with the animation system, which features they are most excited about, and how your feedback will help shape the development of the system. We are also updating the roadmap to reflect those new developments, so go take a look after reading the interview!

Hey guys, thanks for joining us. Let’s start with a bit of background. What’s your development history?

Pawel: I’ve been at Crytek for around five years. Before joining Crytek, I was working for another games company, where I first started as a gameplay coder, and then transferred to the engine team. I was part of a small task force developing a new character animation system from scratch, mostly focusing on low-level pieces and performance tuning. Crytek was one of the companies I applied to when I was looking for my next opportunity. The CRYENGINE team and the company environment overall made a great impression on me during my onsite interview. It’s a good experience to work on visible tech which is licensed externally while remaining at a company that is primarily focused on making games.

Claudio: I got into game development when I started my bachelor’s studies in Milan, the usual way, by doing amateur projects with other students. I’ve always been interested in animation, and I started thinking about the intricacies of animation systems when developing a fighting game with my university peers, which unfortunately didn’t end up being finished or released. I worked briefly in Milan as a UE developer but soon moved to Utrecht for a master’s program on game technology and media. I applied to Crytek out of university, after finishing a thesis project on motion synthesis techniques. I hadn‘t worked with CRYENGINE before joining Crytek. I had used Unity initially, and then Unreal Engine primarily, but I found it quite straightforward to switch to CRYENGINE when I joined in 2018. I think having used other engines extensively actually helps me a lot in understanding what’s working well, or not, in CRYENGINE, from an unbiased perspective.

What’s been your most satisfying moment working with CRYENGINE at Crytek?

Pawel: I've honestly had a lot of fun at Crytek, but I think the recent period might be the most satisfying so far. In previous years, a lot of my time was dedicated to supporting in-house and licensee projects, while slowly paying off technical debt in the background. However, we’ve grown our capabilities, team, and secured resources to kick-start development efforts, enabling us to design some new tech from scratch. It feels great to be back on R&D.

Claudio: I don’t have a particular moment, but really any time I get to work with Pawel ends up being very rewarding! We have similar goals and interests but different temperaments, ways of thinking and approaching problems, and it tends to create a constructive and meaningful working relationship. 


What is the main aim of revamping animation for 2020 and beyond? What limitations are you looking to address?

Pawel: Our most important goal is to improve feature accessibility for non-programmers and to flatten the learning curve for first-timers. Although our current animation system is fairly feature-rich, it can also be hard to grasp and requires programming to access the most advanced features. Even for experienced users, it can eat up time due to slow iteration. From a technical standpoint, I think the main limitation of the current system is a lack of extensibility. CryAnimation offers very few extensibility points, so most of the time, custom features require digging deep into the engine code. With this new initiative, we aim to deliver a robust framework that is efficient, scalable, and future-proofed both for feature extension and hardware advancements.

Claudio: The Mannequin and CryAnimation stack in general is rather advanced, but it’s not the easiest to learn. Its main issue is that it’s implemented as a monolithic module, and you can’t really pick and choose which parts you want or create your own workflows because it was made for a particular approach to animation. It’s also hard for us to extend it with new features. As time goes on, it’s starting to feel a little aged as modern ways of approaching character animation (e.g., motion synthesis) are not possible without significant rework due to some hard assumptions made by CryAnimation about the nature of the animation assets it’s working with. Mannequin tries to solve this by using Fragments and FragmentIDs, but it only works effectively when following the animation model that CRYENGINE was using when it was developed. When deciding if we wanted to improve it or start from scratch, it was an easy choice to go for the second option. We wanted something more modular and flexible that allowed us and Crytek’s game teams to try out different approaches, depending on the game we’re developing. We also wanted to replicate the most useful Mannequin features in a more accessible way, so that users, internal or external, who are learning the system can learn one feature at a time as they need it. The final goal is that through the Playables system, both our teams and our users will be able to expand the new animation system with their own features while working organically with the provided modules, instead of having to work in parallel or override the results of the animation system.


How will the new animation system compare to other engines?

Pawel: To be honest, we've been behind on certain industry trends when it comes to animation tools, so there’s an element of catching up that we’ve needed to do. Despite that, we still believe our design approach has certain advantages over what's out currently out there in the market, especially when it comes to complexity management, offloading performance concerns, and extensibility. Of course, this still needs to be proven in practice.

Claudio:  The features that we’re developing are not necessarily groundbreaking if considered individually. Timelines are present as Montages in UE and as Timelines in Unity. State Machines are pretty much everywhere. However, other features of the new system that is unique to CRYENGINE (tags, transitions, motion maps) we are lifting from Mannequin and offering them as individual modules. The main innovation is the way that all these features come together cohesively, and interact together as Playable assets that are consumed by Animation graphs. There’s also a big difference between our Animation Graphs and similar blend graphs or animation graphs that are offered in other engines: our focus on purely functional computation. This allows us to take advantage of a number of properties that are better explained in detail in the talk. We are also constraining users to keep stateful computation and state machines outside of the Animation Graph, which is largely for the better – if you’ve ever seen a UE4 Animation Graph with a deeply nested stack of state machines and evaluation graphs, you know what I’m talking about.

You revealed a lot of information about your plans in the tech talk. How has progress gone so far, since then?

Pawel: Unfortunately, we experienced some setbacks due to other projects taking priority and the recent pandemic outbreak. Although we haven't progressed at the pace we originally planned, we're currently back on track, and we are excited to gather feedback from our internal game teams on the feature prototypes we're finally wrapping up. Design-wise, the overall approach has been validated, although some details obviously changed as we started implementing them – that’s just the reality of software development. In many cases, we managed to come up with more simple and more efficient solutions by exploiting properties we hadn’t considered before.

Claudio: We are mostly working on internal versions of these features. Progress has been slow but steady. The thing that I’m most satisfied with is that throughout development, the initial design changed very little from how we initially envisioned it, which validates our ideas and assumptions about actual animation use-cases. The main difference between now and the talk is that Transitions have moved to a separate system that works in parallel with Scopes, instead of being part of the Motion Map/State Machine complex. You can look forward to more updates about this in the future.


Which features are you most excited about users getting their hands on when they are released?

Pawel: Personally, I'm most excited about users playing around with the animation graph, maybe even coming up with fully procedural character setups driven through pose modifiers. Although we'll be shipping a very limited feature set for the preview, and it's hard to imagine complete setups working before we have the whole package ready, early feedback is still very important to us.

Claudio: I think users are going to really like to play around with the Animation Graph and experiment with their own animation setups.

Are you planning on any Phoneme or Lip-Sync tooling?

Pawel: We have a phoneme tool in the engine (Face Editor), and there are currently no plans to improve it. However, this feature is still on our radar, has already been discussed multiple times. We might have to tackle it mid-to-long term, depending on our in-house project requirements. In that case, we’ll either develop a solution ourselves or integrate some middleware, and our roadmap will be updated accordingly.

Is there going to be animation retargeting/reorientation in Sandbox?

Claudio: Regarding static retargeting, also known as offline retargeting, it’s something we’re thinking about in the future, but it’s not something we’re currently working on. This would be mostly a quality-of-life feature, as retargeting features in DCC tools are very extensive and complete.  Runtime, or online, retargeting is a different issue. We have no plans currently to develop this feature in the short term, but the new Playables system is designed for easy development of features like this as plugins. This is on a list of features we are considering developing in the future after the modular animation system is mature.


Are there any plans for Live MoCap capturing tooling?

Claudio: Again, the new Playables system is designed for easy development of features like this as plugins. This is on a list of features we are considering developing in the future after the modular animation system becomes established.

Will animations and/or characters from previous versions be compatible with the new system?

Claudio: The base animation clip and blendspace format remains unchanged. The new system will exist in parallel with the legacy system until we can offer complete feature parity. Characters will be able to use the new system, or the legacy one, on a character-by-character basis. There might also be a limited third hybrid mode, where the pose results of the old system can be modified through animation graphs.

Do you have any tips for people working with animation in CRYENGINE generally?

Pawel: If you're stuck working on that feature you were supposed to ship yesterday, just abuse pose modifiers.

Claudio: Keep learning Mannequin, even if the new system is going to come out. The concepts behind Mannequin are still absolutely valid, and you will be able to carry your knowledge over the new system.

Cheers guys!

Head over to our YouTube channel for the tech talk, tutorials, and more insights about game development. We look forward to your feedback on the forum, or via Facebook and Twitter. You can ask questions, pick up tips and tricks, and more by joining our community and the CRYENGINE development team over on our official CRYENGINE Discord channel. If you find a bug in the engine, please report it directly on GitHub, which helps us to process the issue quickly and efficiently.

Are you looking for your next career move? At Crytek, we value diversity, and we actively encourage people from all kinds of backgrounds and experience levels to apply to our open positions, so join us over at LinkedIn and check out our careers page.