Developing Dave the Diver with Jaeho Hwang and Minsuk Cha

Developing a modern video game can be a big technical and creative challenge. Game development involves bringing together skills in software engineering, game design, art and sound. Frequently, this is done in a collaborative setting which requires strong teamwork.

Software Engineering Daily has been expanding our coverage of game development to better understand how games are made. Joe Nash recently sat down with developers from Mintrocket, the team that developed the highly successful Dave the Diver in 2023.

Jaeho Hwang is the Game Director, and Minsuk Cha is the System Programmer, for Dave the Diver. They joined us to talk about engineering the myriad game systems, the choice of Unity as an engine, how they organized the dev team, and more.

Joe Nash: One of the first things the player notices about Dave the Diver is the game combines “traditional” 2D pixel art elements with low poly 3D models with smoother textures. For example Dave’s character is pixel art but the ocean is built of 3D models. What was the motivation to use this unique visual style?

Jaeho Hwang: We had a vision to create a game that brings the ocean and its unexplored creatures to life. Drawing on our team’s expertise in 2D game development, we thought it would be fun to play spearfishing as a 2D arcade action game; the idea took shape, and a prototype was born. Yet, we swiftly realized that the prototype lacked the necessary depth and spatial realism to truly embody the essence of the ocean. To address this shortfall, we decided to transition the background to 3D—a transition that, fortunately, proved less challenging than expected. However, the most formidable task lay in portraying the colossal fish in a natural manner within a 2D setting. Consequently, the decision was made to render these creatures in 3D; that being said, there was a creation of a 3D shark and a 2D character, Dave, locked in battles. Thankfully, after several research and development efforts, we were able to create them more naturally.

Joe Nash: The game has many different systems like fishing, cell phone apps, restaurant management, card collection (Marinca), and a rhythm game. Using this many systems seems like a daunting design challenge. What was it like integrating the different systems together?

Jaeho Hwang: Those systems are enjoyable on their own, but incorporating them into a cohesive narrative is a different story. To tackle this, we used characters. Characters were designed to seamlessly guide players by organically intertwining through the game systems within the game’s storyline. Some systems are necessary for user engagement, but we presented them as if they were essential in a storyline so that players could learn the systems naturally. This narrative-driven approach worked well and facilitated a seamless introduction to the game’s complexities.

Joe Nash: In the early stages of development, was there one system you started with?

Jaeho Hwang: Our initial focus was on implementing the harpooning mechanic and the tactile sensation of reeling in fish hunting. Recognizing that it’s a top priority to make this enjoyable, as it’s the core behavior that players will do, we dedicated considerable effort to perfecting the player experience in this aspect.  Next, we worked on running a sushi bar after fishing. Bancho Sushi was originally intended to be automated once the menu was set up. However, in order to make the gameplay feel less loose, we later reworked this component to allow manual control of the characters and only run the sushi bar at night.

Joe Nash:  Many of these systems build upon one another to significantly expand the scope of the game beyond the player’s initial expectations. The game starts out conceptually simple with catching fish to run a restaurant. It eventually introduces farming, bosses, and deep sea archaeology. How did you think about arranging the sequence of these elements?

Jaeho Hwang: We wanted to create a story that ultimately tackles significant challenges, but starts from small, everyday beginnings, in the same way that disaster movie narratives begin with humble beginnings. Mirroring this narrative arc, we considered designing the game’s systems to expand in a similar way, starting with fishing, then growing ingredients on the farm to serve a variety of customers, or crafting devices to explore the deep sea. As a result, players were able to use and interact with many systems in their gameplay experience.

Joe Nash:  Were there any game systems you experimented with that didn’t make it into the final game?

Jaeho Hwang: There is a social media feature within the game, and we thought about making the number of likes (represented by “hearts” in the game) correspond to actual players. Currently, liking a post only affects the player’s local setting. Although there was even a notion of enabling players to upload the photos by themselves, we refrained due to the server-related complications and administrative overhead. However, this still remains a point of regret for our team.

Joe Nash:  Given all these different systems, how did you organize the development team?

Jaeho Hwang: Uniquely, we use a specialized ‘area-focused’ approach. In this setup, we assign individual programmers for specific areas, such as the sushi bar, the marine section, and the farm area. Of course, we also do have plenty of collaborative tasks. The benefits of this are that it ensures clarity on who to consult for specific content and allows for the seamless integration of different content within each area in a responsible manner.

Joe Nash: What was the biggest challenge in developing the game?

Minsuk Cha: In game development, every aspect presents its own set of challenges. Particularly in my experience, a significant difficulty lay in establishing a solid technical codebase while efficiently meeting design requirements, identifying the fun factor promptly, and refining the game to perfection. Our team of programmers, myself included, focused on enhancing productivity by ensuring the modularity of each feature. This approach allowed for easy integration into different aspects of the game and increased the overall reusability of our work. We believed that maximizing these efficiencies was vital for a small team to generate a substantial amount of content. Admittedly, this strategy demanded meticulous attention to the fundamental software design of each feature, a task that required considerable dedication. Despite the complexities involved, our efforts proved fruitful as we successfully delivered a diverse range of content to the players.

Joe Nash: The game uses the Unity Engine. How did the team decide on Unity?

Minsuk Cha: The selection of a suitable game engine is pivotal in the initial development phase. In my view, crucial considerations encompass the expertise of the development team, the project’s timeline, and how well the engine’s features support the game’s overarching direction. Unity emerged as the optimal choice for us, ticking all the necessary boxes thanks to its versatility for multiplatform development. Furthermore, our established relationship with Unity and access to comprehensive technical support further solidified our decision. Throughout the development process, the robust technical assistance provided by Unity played a pivotal role in resolving numerous challenges that cropped up, contributing significantly to the successful completion of our project.

Joe Nash: One of the big advantages of Unity is that it’s cross-platform. However, were there any unexpected challenges when porting the game to multiple systems?

Minsuk Cha: When we took on the challenge of adapting our game for the Nintendo Switch platform, we faced various challenges. A striking memory that stands out is the considerable delay experienced in loading the initial title screen during the game’s premiere run on the Nintendo Switch console. Originating as a PC title distributed through Steam, Dave the Diver had initially exhibited seamless performance on systems meeting minimum requirements, alleviating concerns regarding performance during the porting endeavor. Despite this assurance, as we delved deeper into the porting process, we encountered a slew of issues ranging from frequent application crashes triggered by memory constraints to the failure of meeting our designated frame rate targets, not to mention prolonged loading intervals during scene transitions. To counter these challenges, extensive modifications were imperative throughout various facets of the game. Harnessing the capabilities of the Unity Profiler tool, we pinpointed performance bottlenecks and proceeded to address them methodically, necessitating a comprehensive review and enhancement of the content being developed by each team member to fine-tune performance levels.

Joe Nash: Dave the Diver also uses a tool called Cinemachine. Can you talk about what it does and why the team used it?

Minsuk Cha: In game development, cutscenes play a crucial role in shaping the narrative and elevating the overall entertainment quotient of the gameplay experience. Cutscenes are typically designed within a timeline using Cinemachine, which enables developers to design distinct scenes and effects autonomously. In our game development process, we heavily relied on Cinemachine due to its versatility. This approach allows our art team to concentrate on the creative aspects of the game, ensuring a captivating visual experience for players. Moreover, Cinemachine seamlessly integrates with the main camera, facilitating a smooth transition between cutscenes and in-game action, thereby maintaining a coherent and immersive gameplay experience.

Joe Nash: The game has impressive fish swarming behavior. What was challenging about developing that system?

Minsuk Cha: My fellow programmer Yongsun Lee, who spearheaded the development of the fish swarming behavior, articulates, “There are many different obstacles like a wall. Integrating the swarming system with the pathfinding system posed a significant technical hurdle, compounded by the need for optimizations to ensure smooth performance on the Nintendo Switch platform.” To address this, we came up with a solution where we treated each group of entities as a cohesive unit that shared a single pathfinding. This streamlined the process, requiring only a single pathfinding request per group, with the job system handling the determination of each fish’s position within the group. We opted for a more delayed response approach to maintain efficiency, prioritizing CPU load minimization as the fish entities learned and interacted within the game environment. However, this strategic implementation allowed us to strike a balance between performance and functionality, enhancing the gameplay experience on the Nintendo Switch.

Joe Nash: Can you tell us about the C# Job System and Burst compiler and how were they used for fish swarming?

Minsuk Cha: The Job System was introduced by Unity to allow developers to work within a multi-threaded environment that significantly improves performance, especially when paired with the Burst compiler. In the Unity ecosystem, where using C# threads can be challenging, the Job System maximizes the potential of CPU cores to efficiently handle concurrent tasks such as fish swarming. By taking advantage of this system, developers can extract optimal performance from parallel operations. The Burst Compiler assumes a pivotal role in refining code execution through an array of optimizations. In the context of fish swarming, the job system effectively manages the movement of groups of fish by consolidating pathfinding requests per group while also determining the precise position of each fish within the group. This approach streamlines processing, leveraging the capabilities of the job system to harmonize complex operations and elevate overall performance levels.

Joe Nash: Under the hood, the game uses a scene-loading system designed to organize and load scenes based on the current mission and probability of occurrence. It sounds like the game has a probabilistic model to predict what the player is likely to do next in their playthrough. This is an impressive engineering accomplish given the large number of possibilities later in the game after the player has unlocked a lot of content. Can you talk more about the scene-loading system?

Minsuk Cha: The underwater setup in our game is structured around multiple scenes, each featuring a unique selection of elements in the Bluehole that varies with every dive. The system is built to dynamically load the appropriate scene based on the player’s current gameplay status. This scene selection process is influenced by a myriad of factors, with mission progress standing out as the key determinant. Other considerations, such as game progression, probability of occurrence, and in-game time, are taken into account. These factors are meticulously evaluated, assigned weights, and prioritized to curate an ideal combination of scenes.

Joe Nash: What’s the future plan for Dave the Diver?

Minsuk Cha: Firstly, we are thrilled by the tremendous love our players have shown for the game, which has given us the opportunity to deliver additional content. Following the game’s release, we have continued to improve the quality of life, balance, and optimization, and we are now exploring the development of DLC to further enrich the story. At the same time, we are considering crossover content that we believe will captivate our players. Given the opportunity, we aspire to create games in varied genres featuring our characters before moving on to our next project.

 

Joe Nash is a developer, educator, and award-winning community builder, who has worked at companies including GitHub, Twilio, Unity, and PayPal. Joe got his start in software development by creating mods and running servers for Garry’s Mod, and game development remains his favorite way to experience and explore new technologies and concepts.

Software Daily

Software Daily

 
Subscribe to Software Daily, a curated newsletter featuring the best and newest from the software engineering community.