Case study: Dave the Diver
How does a small team create a complex, 2D/3D multi-genre hit across multiple platforms? With a tech stack that includes the Universal Render Pipeline, C# Job System, Cinemachine, Input System, and help from the Integrated Success team, the Dave the Diver team launched a stunning, well-optimized, and much-beloved game.
Tackling complicated visual elements on multiple platforms
PC, Mac, Nintendo Switch™
Fishing for the right partner
Netting optimal quality and efficiency
One of the main challenges that the team faced was ensuring top visual quality across multiple platforms. Using the Universal Render Pipeline (URP) helped them create, optimize, and scale their graphics. Lead game designer Chanhee Woo says, “URP gave us a great advantage. We just had to configure a platform-specific Render Pipeline Asset and specify it in the quality settings. We set very high graphic standards, and we met them.”
Another obstacle they had was a quick initial turnaround for features and gameplay ideas. Fast ideation was pertinent for their artists, whose perspectives were instrumental for the game’s shaders. To avoid delays, they selected Shader Graph, a node-based visual authoring tool.
“The fact that non-programmers such as artists can use Shader Graph is a considerable benefit,” explains art director Kiyeop Chung. “We got their direct input. And the results could be seen immediately.”
Angling for the most fun
Dave the Diver blends 2D pixels and 3D art. “It was very appealing to us to have both the arcade-like action of 2D with the spatial impression of 3D,” says Woo. The team had difficulties with camera views and performing interactions when they were implementing ideas, so they chose Cinemachine, a suite of tools for codeless cameras, to help them select the best shots. They could preview and set up the placement and configuration they needed by organizing multiple cameras.
“It was set up just like a shooting location,” Woo continues. “Cinemachine helped us easily create and direct the dynamics with natural blends, shakes, and targeted focus options.”
Going deep with C# Job System
An integral part of the team’s visual strategy was ensuring that graphics are as realistic as possible without affecting performance. They faced challenges generating fish swarming behavior, so they cast the C# Job System and Burst compiler to solve these issues.
“Normally, calculating each vector linearly to determine the swarming behavior would cause high CPU occupancy, but writing code with C# Job System and compiling and optimizing it with the Burst compiler helped it perform significantly better,” says lead programmer Bosung Seo.
The team also struggled with collisions. In Dave the Diver, the fish push one another gently to create a sense of depth in 2D and 3D, and the team had a hard time landing this effect. “To remedy this,” Seo explains, “we paired C# Job System with Unity Physics, which made this dynamic and easily changeable pushing logic possible.”
Scaling multiplatform with ease
The Dave the Diver team wanted to deploy and maintain the game on multiple platforms. Given their small size, the potential time and costs associated with this release strategy were overwhelming, and they used the Input System to help ease and accelerate the process.
“The cost of bringing the game to multiple platforms was minimal,” explains Seo. “We migrated the engine, and changed the controls to Input System. We used the same code and assets without any conversion, for both platforms, and it was extremely helpful.”
The team used the same tool to overcome the hurdle of handling different controllers. “With Input System,” Seo continues, “the grouping of actions and the key settings for each action were easy to add and modify with the UX. It was also beneficial because we could add and do the reset with code at runtime. It saved us a ton of time.”
Ascending with Integrated Success
Hooking a big, performant fish in gaming takes a lot of work and help to iterate, test, and troubleshoot for maximum visual impact.
They used the Timeline view in the Unity Profiler to help identify performance bottlenecks, and they enlisted the Integrated Success team to help them identify, learn about, and rectify profiling issues with both code and design solves.
“We had great experiences getting help from the Unity engineers,” says Seo. “We would send profiling data to them and resolve the problems together, or they would give us suggestions for optimization solutions by checking the internal engine code.”
The engineers also provided them with an easy and accessible way to analyze specific lines of source code. “When we had an abnormal event call stack, one of Unity’s engineers resolved the issue by checking the engine code with us, and attached the source code to check when we had inquiries. It’s very insightful.”
Finding the right ingredients for success
From the onset, they wanted to create a unique 2D/3D visual experience with separate, multi-genre gameplay elements and storylines that feel realistic and fun. Fusing it all together organically on multiple platforms was a complex task, and it was imperative for the team to select a tech stack that made it easier for them to manage visual quality, efficiency, and storylines.
By coupling that with a strong community feedback loop and thorough internal testing, Dave the Diver was primed to be an instant hit.
Hwang says, “We set out to develop an elaborate and entertaining game that the community loves, on our own terms. Our expectations were high, and we’re thrilled with the final product.”