Out of Tune: Weekly Progress Report Week 10 6/2

Group Status

Screenshots

Group Morale

Individual Reports

Art (Jasmine):

What were your contrete goals for the week?

I think it was to finish the characters and all the rooms.

What goals were you able to accomplish?

I finished modeling each character and I’m very satisfied with how they turned out. I didn’t finish the textures yet but I finished the textures for the cat so the others should be very similar. I did finish as least a basic version of all the rooms and messed around with the idea of skyboxes (were not doing skyboxes) I also messed around with animations but were struggling with exporting them and importing them still.

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

I’m surprised that I actually finished all my goals for the week because I didn’t remember what I assigned myself I just kept working throughout the week its lock in time fr fr. I be grinding every night on blender. We also agreed on a map layout for the game.

What are your specific goals for the next week?

Well hopefully have everything done. So this would be finishing all the textures for the characters. Working with Julie to get multiple animations in the game. Add last details to the rooms. Finish making props for the circus room. Add decorations. Finish the end door.

What did you learn this week, if anything (and did you expect to learn it)?

Animation exporting and importing hard. Me and Julie cry. Jk we have just been trouble shooting for forever. I also have been dealing with other issues regarding version control for my blender file considering it’s getting quite large so I’ve been learning about fixing other errors. Mostly learning animation stuff this week.

What is your individual morale (which might be different from the overall group morale)?

CRUNCH TIME. Looking forward to finishing the project because we will get to see our completed game but also not looking forward to finishing because I had a lot of fun on this project so I’m sad it’s over and also because that means I need to finish all my work lol. I will also miss working with my group every week they have been a joy to work with. It’s so sad that this is the last weekly report it’s been so fun.

Music (Annie):

What were your contrete goals for the week?

What goals were you able to accomplish?

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

What are your specific goals for the next week?

What did you learn this week, if anything (and did you expect to learn it)?

What is your individual morale (which might be different from the overall group morale)?

Graphics (Gabriel):

What were your contrete goals for the week?

My concrete goals were:

  1. Figure out a way to use a more consistent position measurement for UI elements OR hard code different layouts.
  2. Add the keys display (will dynamically add keys as players collect them).
  3. Refactor Canvas so that it may be reused for different screens aside from the game world.

What goals were you able to accomplish?

I managed to accomplish all goals except refactoring canvas, and there’s a reason for that which I’ll get into in more detail below. I ended up hard-coding different layouts depending on window size, and I figured out a way of centralizing elements when their scales are changed for consistency across different window dimensions. The key display has also been added.

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

As we approach the end of this project, I’m starting to shift my focus towards other screens (main menu, game over, victory). I realized that it wouldn’t make much sense to refactor the canvas object because a game canvas works very differently from an interactable “menu” where the player has to click buttons. I think it would make more sense to create an interface for these different screens and implement them individually, especially because there are only 3 different screens as far as I’m aware.

What are your specific goals for the next week?

  1. Implement a main menu.
  2. Implement a game over screen.
  3. Implement a victory screen.

All of these screens will be interactable and won’t obscure the user’s cursor like in-game.

What did you learn this week, if anything (and did you expect to learn it)?

I learned that I should be careful with certain GPU functions, as these can tank performance if left unchecked. I was using a function to enable GL_BLEND to render transparent textures, and didn’t realize I should disable them after drawing the objects. My groupmate brought this to my attention and fixed it by disabling it after the function had run its use.

What is your individual morale (which might be different from the overall group morale)?

Feeling a little nervous. With the deadline approaching, I’m feeling like we’re going to end up having to crunch to see this project through. This isn’t that big of a deal though, as I was expecting it to happen eventually this quarter.

General Game Implementation and Mini Games (William):

What were your contrete goals for the week?

Complete and render the finalDoor class. Implement interactables for my door.

What goals were you able to accomplish?

Hashed out the key class a bit more. Worked on a lobby room class for the final door.

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

Planned to spend my weekend focusing on the project, but only got a little bit done. Hashed out the keyroom for the swamp, it took way longer than expected because I couldn't get the rendering right. Also spent a bunch of time trying to get the rendering for a hallway and lobby. But luckily we already have a map layout designed now, and the orientations and dimensions will be specified in the blender file. Lobby room is still not done, and I have some graphical concerns. I have no idea how we can make a key appear on the door when we interact with it.

What are your specific goals for the next week?

Final push to get everything done. If I can get this lobby room sorted, I can help out with everything else as well.

What did you learn this week, if anything (and did you expect to learn it)?

Something small I learned is that if you want to delete a file and have this deletion tracked by git, you need to use the command git rm instead of just deleting it.

What is your individual morale (which might be different from the overall group morale)?

I dont doubt that we can bring out a great game. But I feel like I am not doing enough to help the team (because everyone is so talented and hard working), and that is making me feel a bit anxious. I hope that I can get the lobby room done soon so that I can help out with the rest of the project. I am also very good at cramming work in the last 2 days. It seems everyone has other projects due this week, but as long as I know what I need to do I can hopefully make it easier for the others.

General Game Implementation and Mini Games (Ravi):

What were your contrete goals for the week?

My goals for this week were to have minigame 2 finished and hopefully be halfway through minigame 3. I also hoped to finish up some of the parkour rooms.

What goals were you able to accomplish?

I cleaned up, finished and integrated the parkour room, added the key into it, with options for making it more difficult/interesting. I got further along with minigame 2, but didn't finish it because we decided to change up the mechanics of it. I also fixed a bug with key collection logic that would crash the server, updated the key class (to remove itself from world after collection), and did some minor integration of things like Gabriel's key UI and the interaction message popup. I helped plan out the map with Julie and Jasmine, and we discussed how to do make the game doable in 10 minutes.

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

The week did go differently than I planned. We decided to change up the minigame 2 to add a parkour element to it, so I didn't end up finishing it. I also got to several other issues that I didn't expect to. With the minigame, I realized that you could run through the entire circus in around 10 seconds, meaning there was realistically onlly one music pause before the players would get past it. This didn't seem fun, so we envisioned a zigzagging parkour element across the map, that players would have to do high up, all while still keeping the music element of the game. This way, players would take longer to do the puzzles, and they would have to strategize for when it is best to stay at the checkpoint wall or risk it to keep going at a faster pace before the music stops.

What are your specific goals for the next week?

Next week, my goals are to get the game to a fun, playable state. To do this, I hope to add furniture to all the rooms in the map that Julie is adding, finish minigame 2, and help Helen with minigame 3 if needed. I also hope to help integrate Brandon's door logic into the game.

What did you learn this week, if anything (and did you expect to learn it)?

I learned a lot more about the recent code changes in general from reviewing people's pull requests. I also learned more about key interaction and integration.

What is your individual morale (which might be different from the overall group morale)?

I'm a bit stressed but also happy to be working with such an amazing team. Everyone is working really hard, and I'm excited to see our game on the big screen.

Physics (Brandon):

What were your contrete goals for the week?

My concrete goals were to finish the fundamental physics of the piano keys, finalize the cannonball physics with the rest of the code and integrate it to finish the 2nd minigame. I picked up other tasks here and there.

What goals were you able to accomplish?

I finished all the physics code, but it is still untested because the minigames have not yet been implemented enough. I did pick up other tasks such as adjusting bounding boxes of the swamp room again to prevent respawning on top of people from clipping. I worked on some map generation room to allow for cycles, but I think we are scrapping it because it might not be best for the experience. I spent most of my time figuring out room ID changes for players and door interaction.

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

I failed to understand the codebase enough when working on my tasks. For the room ID changes and door interaction, I was working on it a lot just to realize that the implementation of rooms is not even fundamentally implemented. I had to put something random together so that I could work on my task. I feel somewhat bad about the current code I am pushing because it is pretty messy and poorly documented, and it doesn’t have much consideration of the other code being pushed from the others. I wish I had actually studied the codebase more in the past.

What are your specific goals for the next week?

My specific goals for the next week are to actually test the physics code for the cannonball and piano keys and make any fixes on the door/room code that I hacked together.

What did you learn this week, if anything (and did you expect to learn it)?

Documentation and architecture does not mix well with deadlines. The codebase is changing at such a rapid pace due to the deadline that it forces me to push subpar code that is not designed to be maintainable. I should have planned more, but it is difficult because the code changes so quickly.

What is your individual morale (which might be different from the overall group morale)?

I am a little spooked. I still need to work on another class due Tuesday, which is eating up my time. Things still don’t seem like it will be done, which is somewhat depressing. The code is moving so quickly that I honestly don’t know how close we are, so I could be underestimating. I personally don’t see much value in sacrificing my wellbeing for this class, but maybe this is something I have to humble myself in just for this final project of my entire undergraduate years.

General Game Implementation and Mini Games (Helen Lin):

What were your contrete goals for the week?

Add in the audio logic and interaction for the swamp minigame

What goals were you able to accomplish?

Got audio logic and interaction hooked up but then Annie adjusted the volume ratios of the audio files so I still need to adjust the code and hear it to ensure we can hear all the audio we want. Frog intereaction was connected up.

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

Wanted to work more over the weekend but had long events every day on Friday, Saturday, and Sunday. So didn't make as much progress as I wanted.

What are your specific goals for the next week?

Since demo is this week. Hopefully we get everthing done but progress order wise I would first to is to help Brandon get his door and room id update PR in, then adjust the audio ratios make sure they work and then utilize his logic to make it so that the swam ambience doesn't play the entire game as it does right now. Then with the logic in then hopefully Julie has the graphics in for the 3rd room if not I'll start with just the sever side logic and then client side after for the third doom

What did you learn this week, if anything (and did you expect to learn it)?

Nothing major but learned more about unique ptr in c++ and other pointers in c++ as we had unique pointers in our code initially which impacted the logic with the Door as two room need to own the door and so I learned more about it.

What is your individual morale (which might be different from the overall group morale)?

Excited but nervers really hoping we can finish all that we desire to finish.

Graphics & Network (Julie):

What were your contrete goals for the week?

This week, I planned to complete the shadow system, organize and add point lights, decorate the swamp room, and import all the animated characters.

What goals were you able to accomplish?

I loaded an animated cat character with idle animations and textures.

I also finished implementing point light shadows for both static and interactable models–each light now has two shadow cubemaps: one for static objects and one for interactables. I'm planning to add a third cubemap for players, but I'll need to see how it affects the performance.

I organized the point lights using a struct that applies the room transform and offset to easily place each light at the correct world position. I also stored point light instances in a map, where the key is the room name and the value is a vector of point lights. This structure helps manage point light shadow maps more efficiently.

During initialization, all static objects in each room are rendered into the static shadow maps of the lights within that room. Also, each interactable object is rendered into a nearby interactable shadow map. When an interactable object is updated, only the nearest interactable shadow map is re-rendered–so only one shadow map is updated at a time. Currently, shadows disappear correctly when a lilypad drops or a key is picked up. Also, if an interactable shadow map has nothing left to render–like when all related objects have been removed–it is marked as inactive so it won't be used in the fragment shader. This helps avoid unnecessary texture lookups. I chose not to render shadows for doors since their visual impact is minimal, but the performance cost is relatively high. Both static and interactable shadow maps are sampled in the fragment shader.

I implemented a skybox, but it didn't look quite right for our game, so we decided not to use it.

I added fireflies and dark fog to the swamp room, and made the water transparent.

Although we decided not to use the skybox, here's how it looked:

This is our current swamp room:

This is what it looks like when a player is submerged:

If the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.

Jasmine and I have been trying for days to export multiple animations in a single FBX file, but we haven't been able to get it working. At one point, even exporting just one animation stopped working. Some of our earlier exports did work, but we weren't sure why. Today, we finally figured out a way to reliably export one animation per FBX file, so we'll probably stick with that for now.

What are your specific goals for the next week?

Now that we've finalized the map, I'm planning to load all the rooms into the game by tomorrow morning.

I'll also load all the animated characters and set the correct animations at the appropriate times (like idle or running).

Since we'll have a large number of rooms–over 20, excluding hallways–I'll make sure to render only the rooms visible to the current player. I also plan to implement player shadows, though I'll need to see how much I can optimize that.

Once Gabriel finishes the UI for the lobby page, I'll work on the networking side of it.

What did you learn this week, if anything (and did you expect to learn it)?

I learned more about how skyboxes work. Before trying it myself, I thought a skybox was just something to make the background look infinite, but I didn't realize it moves with the camera and is mostly meant for open environments. I didn't expect the skybox to show through open doors where it shouldn't be visible. I also didn't know that to actually see the skybox from inside a room, I'd have to remove the walls completely. I think I could've made it look better with more time, but I can't really afford to take that risk right now.

What is your individual morale (which might be different from the overall group morale)?

I'll do my best to get everything done, but I have two programming assignments due this Friday, so the next couple of days will be very challenging. I'm honestly really sad that our journey with this project is coming to an end. I wish the quarter were a bit longer.