Canuck Play: A Unity case study
How does a small studio successfully create a unique console game with 60 frames per second (fps) performance? For Canuck Play, Unity Professional Services is a large part of the answer. Leveraging their help to migrate Unity versions, optimize performance, and take advantage of new Unity capabilities, the studio is readying a game that lets players create their own football universe: Maximum Football.
To help a small indie team deliver a high-quality and performant console game on time and on budget
PlayStation 4, Xbox One
1 core developer, 1 UI/UX specialist, and 1 feature specialist
6 team members in Peterborough, Canada
Getting warmed up with the right development platform
Canuck Play founder Dave Winter began creating Maximum Football with his own game engine that used an API library built around DirectX 8. Growing more confident in his game’s potential, he decided to go after the console market. “Most indies focus on Steam or mobile platforms, but consoles are in a different league, so I knew my own tools were not going to be enough. Knowing its C# core, huge user base, and reputation for multiplatform development, I switched to Unity and rewrote the game from scratch,” Winter explains. When he ran into development challenges and wanted to take his game to the next level, he contacted Unity’s Professional Services team.
- Migrated to the latest Unity version in several days, saving weeks of effort
- Much smoother player performance, going from a frame rate of ~30 fps to 60 fps
- Improved lighting, game physics, the replay system, and obstacle/player avoidance
- Delivered tooling, visual, and gameplay improvements for a custom animation system
Recruiting the right team
Winter had worked at several big studios for over 15 years before he decided to strike out on his own. The budgets may have been big, but the workflow didn’t appeal to him. He had his own creative vision and he was determined to do it his way. So in 2016, he set up Canuck Play as a one-man indie studio in his basement – and got to work.
His vision was a football game not so much for traditional video gamers as for real football enthusiasts, the kind that know all the rules, the players, and the strategies whether they follow college, pro, U.S., or Canadian teams. “I wanted to create a sandbox where gamers could create their own football universes. Something for fans who want to get even their own uniform and logo designs right,” says Winter. “And not just NFL!”
Five years later, the Canuck Play team is finalizing Doug Flutie’s Maximum Football 2020 in an office called The Cube. Winter does all the core gameplay work and Eric S. heads business development and community management. They also have a UI specialist who designs screens and menus, a developer devoted to specific features, and a new product director.
Updating the playbook to eliminate weak spots
A big part of Winter’s winning strategy is to constantly update the game. “One of the things I try to do with each edition is offer substantial changes from the previous one. Other annual football titles may just change their team rosters, but I try to make Maximum Football very different from year to year. And improving overall performance was a big goal for 2020.”
To get started, Winter decided to update his Unity 2017 codebase to Unity 2019 to take advantage of many powerful new features. At the same time, he didn’t want the migration to affect his productivity or tight release schedule. “With any software upgrade there are bound to be compatibility issues you don’t anticipate, so you need to consider how you’ll resolve them,” he says. And that includes getting expert advice.
He also had to improve performance. “When you have a close-up of a quarterback cocking his arm and throwing, when a receiver runs his route, jumps, and grabs the football, you have to have super-smooth animations at 60 frames per second,” Winter explains. “We had sequences captured at really high frame rates, but things were still coming out choppy.” Stadium crowds were another issue. “I had 60,000-plus 3D meshes cheering independently, but I just didn’t have it dialed in. Shadows weren’t rendering the way I expected them to.”
In addition, Microsoft and Sony have a number of strict requirements for their console games such as load times and updating sequences. Maximum Football was getting much bigger and, from a development standpoint, much more complex, so complying with added rules was putting a real strain on the production schedule.
Scouting the free agents
“I had done an enormous amount of work on my own, but then I hit some technical and performance roadblocks. With some serious deadlines approaching, I realized it was time to reach out,” says Winter. Coincidentally, he had received a promo email from Unity Professional Services around that time. Wanting to access proven Unity best practices, he started a dialog with a few chats and conference calls. On their side, the Professional Services team was quite impressed with how a tiny studio had accomplished so much, creating the kind of game typically made by numerous teams in a much larger studio.
Winter, Eric S., and Professional Services produced a customized action plan with clearly defined goals and time frames. According to Eric S., “From the start, working with Unity Professional Services was smooth and easy. They understood our technical needs as well as the fact that a small studio needs clear, unambiguous costs and deliverables. It was a pleasure working with Unity Professional Services from start to finish, and the results were priceless.”
Turning pit drills into easy workouts
As part of the engagement, two Unity engineers came onsite to:
- Complete the Unity version migration
- Review game code to pinpoint bottlenecks and performance issues
- Write/rewrite custom systems as needed
- Help Canuck Play take advantage of some new Unity 2019 features
The performance optimizations were diverse. For example, the single-threaded pathfinding system (e.g., to allow players to go around obstacles like goalposts) was identified as a performance bottleneck. Winter explains, “The existing code worked, but it was chewing up CPU capacity. Professional Services showed us how to use multithreading in the new Unity C# Job System that was far more efficient, and it dramatically increased frame rates.” In another instance, the Unity team fine-tuned inverse kinematics and blend-trees for a number of gameplay situations.
“Professional Services pointed out how I could use less post-processing rendering as well as improve my API methodology in places,” says Winter. They also helped improve the game’s recording feature by improving memory usage with Unity’s NativeContainers. And to deal with the spectator shadowing issues, Unity modified the spectator system to use culling groups, improve instance batching, and remove visual artifacts.
The Unity home-field advantage
As well as the assistance from Professional Services, Winter thinks Unity’s extensive developer community is a boon to his productivity. “The Unity forums are rich – I always find tips on how to do things better,” he says. Another important resource is the Unity Asset Store. He’s used it a number of ways. For example, in his game’s practice mode, when there’s an empty stadium, he adds background buildings and views popped in from a number of Asset Store offerings.
Early in development, he bought the open-source PuppetMaster character physics system and, over the years, has almost completely rewritten it for his own specific needs. On the other hand, he dropped the Rewired input system for consoles into his code “out of the box” for intelligent hot-plugging.
Winter has confidence typical of winners from Vince Lombardi to Wally Buono and from Joe Montana to Doug Flutie: “I have an incredible team with Unity, its developer community, its support, and our Canuck Play specialists,” says Winter. I don’t think there’s any studio or game out there that we couldn’t take on.” With the help of Unity Professional Services to tackle the most-challenging performance issues and to get the most out of Unity’s real-time 3D development platform, Doug Flutie’s Maximum Football 2020 is sure to wow football gamers when it’s released later this year.
“I had done an enormous amount of work on my own, but then I hit some technical and performance roadblocks. With some serious deadlines approaching, I realized it was time to reach out to ... Unity Professional Services.”
“From the start, working with Unity Professional Services was smooth and easy. They understood our technical needs as well as the fact that a small studio needs clear, unambiguous costs and deliverables. It was a pleasure working with Unity Professional Services from start to finish, and the results were priceless.”
“The existing code worked, but it was chewing up CPU capacity. Professional Services showed us how to use multithreading in the new Unity C# Job System that was far more efficient, and it dramatically increased frame rates.”
“I have an incredible team with Unity, its developer community, its support, and our Canuck Play specialists. I don’t think there’s any studio or game out there that we couldn’t take on.”