Dady's Company

Inspiration

Inspired by the hectic yet enjoyable gameplay of Overcooked, we wanted to create a game that captures the essence of time-sensitive tasks but in a corporate setting. We aimed to simulate the fast-paced nature of corporate environments while injecting strategic decision-making and problem-solving elements into the gameplay.

What it does

"Dady's Company" is a simulation game where players navigate through various corporate tasks with the goal of minimizing time spent. Players must strategically plan the execution of tasks, including getting the task, coding, debugging, printing, and submitting it, all while racing against the clock.

How we built it

We built "Dady's Company" using Roblox Studio for the graphics, user interface, core mechanics, and gameplay. We implemented the game logic and mechanics using Lua programming language within Roblox Studio. NPC Class Hierarchy: Define a class hierarchy for NPCs, with a base NPC class and subclasses for different types of NPCs (e.g., CoderNPC, DebuggerNPC). Each NPC subclass should implement the behavior specific to its role in the game.

Detial Implementation and Design

Job Class: Define a Job class to encapsulate job-related properties and behavior. This class should include properties such as job ID, job component, job status, job progress, job reward, time limit, and starting time. Methods within the Job class can handle job-related actions, such as updating job progress or calculating remaining time.

Interaction Mechanisms: Implement interaction mechanisms between NPCs, the player, and the server. For example:

  1. When the player interacts with an NPC to receive a job, the NPC creates a new Job object and communicates with the server to store the job information.
  2. When the player interacts with a CoderNPC or DebuggerNPC, the NPC modifies the corresponding Job object's properties and notifies the server of the changes.

State Machines: Implement state machines for NPCs to manage their behavior based on player interactions. Define states and transitions for each NPC type, allowing them to respond dynamically to player actions.

Server-Side Management: Develop server-side logic to manage job data, player interactions, and communication between NPCs and the player. The server should monitor changes to job objects and update the UI accordingly.

UI Integration: Integrate UI elements to display job-related information to the player. The UI should reflect the current state of jobs, including their progress, status, and remaining time.

Challenges we ran into

Game Design aspects

One of the main challenges we faced was balancing the difficulty curve of the game to ensure it remained challenging yet enjoyable for players of all skill levels. Additionally, fine-tuning the gameplay mechanics, such as the timing of tasks and the effectiveness of strategic planning, required extensive testing and iteration. Additionally, this is our team's first game design, and we lack experience. We have planned the game ahead, but we need to constantly change it while we are actually coding. We also need to consider the practicality of our design, so we spend a lot of time discussing what the game will look like and the detailed implementation methods.

Coding aspects

There are two main coding challenge we are facing

  1. When interacting with NPCs, we needed to read player input numbers from 1 to 5, which represent the job IDs that the player wants to assign to the NPC. We struggled a lot to implement this because we were not familiar with the logic of how to read the input and actually affect the NPC on the screen. After much searching, we finally came up with a solution: setting up a listener on the client side. Once it received a signal, it would notify the server and make the corresponding changes. 2.Another part where we wasted a lot of time was debugging why the data stored in the server was always changing and being overwritten by the last element. We tried different methods to maintain a logical bag for players to store the JOB object, but we still encountered issues with overwriting. Then we realized that the issue could be because once we created a JOB object, they shared the same memory, meaning we were always changing the same JOB object and adding it to the bag. So we modified the constructor to give each created object a separate memory space. (It is really stupid QAQ)

Accomplishments that we're proud of

We're proud of successfully translating the fast-paced and chaotic nature of corporate environments into an engaging and challenging gameplay experience. Additionally, we're pleased with the level of polish and attention to detail we achieved in the game's visuals and user interface. For all of us, we master a new skill: Game Design ! A new part we could add to resume ! <( ̄︶ ̄)↗

What we learned

Through the development of "Dady's Company," we gained valuable experience in game design, Unity development, and project management. We learned how to effectively balance gameplay mechanics, optimize performance, and iterate based on player feedback to create a compelling gaming experience.

What's next for Dady's Company

For our game, it is highly flexible and highly scalable. There are many parameters we can adjust to control the game difficulty. For example, we can adjust the time needed for NPCs to complete jobs. A shorter waiting time will result in NPCs discarding jobs. Additionally, we can position NPCs farther away, requiring players to cross a longer distance to complete a job. Therefore, players need to carefully strategize in order to achieve a high score. In the future, we plan to further enhance "Dady's Company" by adding additional levels, challenges, and features to expand the gameplay experience, for example make the UI more friendly, make the office environment more amusing, add more NPC, etc. We also aim to incorporate multiplayer functionality to allow players to compete or cooperate with friends in the corporate chaos.

Built With

Share this project:

Updates