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
윈터는 독립하기로 마음 먹기 전까지 15년 넘게 여러 대형 스튜디오에서 근무했습니다. 예산은 충분했을지 모르지만 워크플로는 윈터의 마음을 끌지 못했습니다. 고유의 창의적인 비전을 가지고 있던 윈터는 스스로의 방식으로 비전을 실현하기로 결심했습니다. 2016년이 되자 윈터는 자택 지하실에 1인 인디 스튜디오인 Canuck Play를 설립하고 작업을 시작했습니다.
윈터는 기존의 비디오 게이머들보다는 대학 팀, 프로 팀, 미국 팀, 캐나다 팀 및 어떤 팀의 팬이든 관계없이, 모든 규칙, 플레이어, 전략을 알고 있는 실제 미식축구 애호가들을 위한 미식축구 게임을 제작하고자 했습니다. 윈터는 "게이머가 자신만의 미식축구 월드를 만들 수 있는 샌드박스 게임을 제작하고 싶었습니다. 자신만의 유니폼과 로고 디자인을 갖고 싶은 팬들을 위한 게임이죠. "그냥 NFL이 아니고요"라고 이야기합니다.
5년 후, Canuck Play 팀은 내부에서는 Cube라는 이름으로 부르는 Doug Flutie’s Maximum Football 2020을 완성했습니다. 윈터는 모든 핵심 게임플레이 관련 작업을 담당하고 에릭은 비즈니스 개발과 커뮤니티 관리를 이끌고 있습니다. 또한 화면과 메뉴를 디자인하는 UI 전문가와 특정 기능을 전담하는 개발자, 새로운 제품 디렉터가 함께 일하고 있습니다.
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
윈터는 "스스로 엄청난 양의 작업을 했지만, 몇 가지 기술 및 성능 문제에 직면했습니다. 중요한 마감 시한이 다가오면서 이제 도움을 받을 때라는 걸 깨달았죠"라고 이야기합니다. 우연하게도 이 무렵에 윈터는 유니티 프로페셔널 서비스로부터 프로모션 이메일을 받게 되었습니다. Unity의 입증된 베스트 프랙티스를 활용하고 싶었던 윈터는 채팅과 회의 통화로 대화를 시작했습니다. 유니티의 프로페셔널 서비스 팀은 일반적으로 훨씬 큰 규모의 스튜디오에서 수많은 팀에 의해 제작되는 종류의 게임을 그러한 소규모 스튜디오가 제작하고 큰 성과를 거뒀다는 사실에 매우 놀랐습니다.
윈터와 에릭, 프로페셔널 서비스는 구체적인 목표와 기간을 정한 커스터마이즈된 행동 계획을 세웠습니다. 에릭은 "유니티 프로페셔널 서비스와의 협업은 처음부터 원활하고 쉬웠습니다. 프로페셔널 서비스 팀은 저희의 기술적인 요구 사항을 파악하고, 소규모 스튜디오는 확실하고 모호하지 않은 비용과 결과물이 필요하다는 사실을 이해하고 있었습니다. 유니티 프로페셔널 서비스와의 협업은 처음부터 끝까지 모두 좋았고, 매우 소중한 결과를 얻을 수 있었습니다"라고 강조합니다.
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.