Programming / Software Dev, TA / TD
This week was essentially a set up for the meat and potatoes of game design, where most of our time was put towards documentation and ironing out the parts of the game that needed more ideation. On my side of this process, my goal was to help finish the one-pager/five-pager, help organize our thoughts and solidify what we want to add/create, and develop a very rough game demo that showcased some core functions that the game needed to operate.
In terms of the requirements I had set for myself, I think all of them have been met. I created a graphics/art section in the one-pager/five-pager to help explain our vision for the overall style of the game, I took the ideas we had and helped structure how the restaurant's stations will operate, and I also developed a very rough demo of a few mechanics vital to the game. Overall, it was a little difficult on the development side as we are so early on that there are no assets to use yet, and we also did not have many illustrations of our ideas before I started working on development. Due to these constraints, I reserved my development to mechanics that our game needed to demonstrate how the player will maneuver the restaurant. Focusing on this area allowed me to create a camera switching system for each station and a system that will activate unique keys and keybinds so long as the player is at that station. I also made a brief animation that fades the camera in and out when it enables/disables, creating a smooth transition for the player so they do not get disoriented by rapid switching.
Regardless of some of the restraints I had since we are only a week into actual development, I feel that we are in a good place and that everyone really stepped up to help get this game moving.
This week was by far the most productive week yet since production has begun, especially since we now have a working playthrough of the game. There are still many assets that have to be put into the game, but the functionality is there. We have a rhythm mechanic that the player can click to the beat to clean dirt smudges, and it all can be calculated into an overall score. Compared to last week, this is a huge step for the team. Before this version of our game, we had just the restaurant with a couple of animations triggered by buttons. This was partly due to the fact that we did not know what we wanted to do with the rhythm portion, so we turned our focus to a more simple station to really lock down a good gameplay loop for the next week. Overall, I am very happy with where we are going.
Due to the comments we received regarding the gameplay loop we had for our dish washing section, we decided to step back and redesign our system to have a gameplay loop that better represents how someone would wash a dish. In doing so, we produced a sponge that sits on the rhythm bar that goes from the top to the bottom of the plat. The player can control the sponge with their mouse, and can move left and right in order to wipe dirt smudges off the plate. Conceptually, this makes a lot more sense than clicking to clean, so I am really happy with the group's ideation for this week. Through our brainstorming sessions, we came up with better concepts for the waffle making station as well, so we should have a better gameplan for the coming weeks. One issue I am currently running into however is in the animations for the plate. My animations are entirely controlled by the script, so when the plate moves offscreen, it gets deleted before finishing the animation. Otherwise, the bugs have been minimal.
As we have further developed the main mechanics for the game, we had to make some quality of life changes to improve the feel of the new mechanic. For me, this meant improving the script for the sponge to make the movement feel smoother, and also make it feel more like wiping a plate. I think that we are definitely getting closer to this, but there is still work to be done. I also think the hitboxes are slowly getting better as I have been tweaking them bit by bit each week.
A lot of this week was essentially putting in new assets for the kitchen, replacing some old assets for updated versions, and also working to improve gameplay smoothness. A few ways I went about this was making the actual colliders on a separate object from the images for the smudges and sponge. This way, we can have smudges that aren't too small visually, but also have hitboxes that only will be hit on beat with the song. After going through each smudge to make these changes, I feel that the hit detection is much more accurate.
After presenting last week, we made the decision to make another major change to how the dishwashing station worked. Instead of a sponge fixed to the bar, we decided to make a free moving sponge where the player has complete control over it's movement. We had realized that making the gameplay smoother was an issue before this change as only having x-axis control felt jagged and unpolished. To change this, we created an entirely new script for the sponge where it acts as a cursor, so the speed of the mouse is the speed of the sponge. This change also fixed a large issue we had with differences in sensitivity between what mouse you are using, especially since our sensitivity slider was not the perfect fix. I think this implementation works really well with our improvements over the hitboxes last week, and we are really approaching a finished station. In addition, we also added particle effects to the sponge so when it wipes over the plate, bubbles fly out like a trail.
A lot of my focus has been on the dishwashing station, but this week our team has made really good progress both there, at the waffle station, and on the visuals of the restaurant as well. Firstly, we now have a rhythm bar set up on the griddle to make pancakes, as well as a particle system to make them. When the round starts, a spiral prints on the ground, where you have to follow the spiral the spawn the pancake. We also have triggerable animations on the waffle maker itself, which works for making waffles on the side. For the kitchen, we put in new handmade textures for every object, as well as borders and post processing to make everything pop. This makes the restaurant feel much more lively, and adds a lot to the mood of the game. Lastly, I have made a new plate rhythm mechanic where the player has to follow a marker along a shape that spawns on the plate. If they keep up with the marker, they hit the smudges on time to create a beat that corresponds to the song playing.
This being our first week back, a lot 0f our work was around incorporating the new members onto the team. A large portion of this integration also included creating a new repository in GitHub rather than GitLab. In doing so, making changes is a lot easier to both push and manage, allowing us a much smoother experience. Now that this has been taken care of, it will be much easier to start work and get everyone familiar with the project quickly. I also took some time to clean up the files in the project, organizing them so everything is easy for them to find when they need it.
Most of this week has been planning out the next steps for our game, where we have decided to try a system using a Game Manager to help bring more player autonomy to the different stations. In having a manager, we can also implement a new way of making pancakes where we can use a particle system that makes the pancakes themselves without the need of premade models. In this system, we need an interpreter that can communicate with the stations to do this, which is my focus for this week.
This week I have set out to essentially structure our composer into two files. We have an implementation file that calls FMOD related functions for sounds and music manipulation, but I also worked on the main composer to set up conditionals for these function calls. I am currently at a point where the structure is there, although it has yet to be integrated into the stations themselves.
This week was spent trying to rework out composer based upon the current needs of the game. I have currently set it up to be able to have functions other scripts can call, but I am waiting on some FMOD implementation for a lot of the functions as I do not work on that end of the script. However, it should be ready to work with the waffle station. One of the goals for this week is an OnBeat() function so we can move forward with hit detection.