Week 5 Report



FRIDAY APRIL 29th 10AM-11AM
MONDAY May 2nd 10AM-11AM
WEEK 5 STATUS

This week we were mainly working towards integrating the client and server. Most importantly we completed a single client integration.

As a group we were able to complete these tasks: 

  • Completed single client integration.
  • Integrated camera with client.
  • Began work on multi-client integration.
  • Got modeling work on the game maps and some other elements.
  • Basic wheel animations is complete
GROUP MORALE

Group Morale is doing relatively well.

IMAGES
Blocked out map with some detail
Makeup pit stop and makeup assets

Individual Reports

  1. Concrete goals
  2. Accomplished goals
  3. Unmet goals
  4. Specific goals for next week
  5. Lessons this week
  6. Individual morale

Aiden

  1. My goal for the week was to catch up and complete the “makeup pit stop” which will be an important gameplay mechanic, model the map, and start adding decorations to it. I also created makeup assets which will be needed for animating this week.
  2. I was able to accomplish all of the modeling I set out to do, but was unable to get to texturing, which I will get to this week.
  3. I was able to accomplish most of what I wanted. Anything I haven’t created yet is due because I’m still actively thinking about decoration assets as I go (since they won’t affect gameplay).
  4. My specific goals for next week will be to create an animation for the makeup pit stop/texture it, model a hair dryer, and continue decorating the main map
  5. While making the map, I learned about good practices for creating good topology. Since the map needs to be flat for mechanical reasons, I had to be extra precise when combining parts of the map.
  6. My morale is good and much better than last week.

Andrew

  1. My goals were to complete the multi-client integration.
  2. I was able to write the logic to complete the multi-client integration by processing packets from various clients in a single time step and updating the game logic accordingly.
  3. Unfortunately, I discovered that our server was sending and receiving corrupted data, which prevented us from testing the integration. I initially thought the error was due to a serialization bug, but after extensive debugging, I found out that the error was because of scoping in a lambda function for a server’s asynchronous handler.
  4. My goals for the next week are to implement synchronization with our server and continue to modify the server to support new features.
  5. I learned how to set up a basic asynchronous server in Boost. I also learned how to use a bit masking approach to accumulate client’s actions when processing packets within a server tick.
  6. My individual morale is good because Evan and I were able to resolve the bugs with the server.

Emily

  1. This week I wanted to animate the wheels, get the car movement working properly, and, again, work on the transparent elements for the UI and the visibility blocker. Ideally, the four client integration with the server would also be done by Tuesday. 
  2. I was able to animate the wheels. This required a refactoring of the scene graph and the creation of two new classes, a Game class and a Player class, to perform the transformations on the models. We were also able to integrate the car movement code with the single client server. 
  3. I wasn’t able to get to the transparent elements this week. We just found that the car movement integration was more important to get done this week so that the network side can work on the integration of multiple clients. Integration, as usual, is taking a lot of time, but I feel like we’re really close to getting the four clients integrated. 
  4. Next week, once the multiple clients work with the server, I would like to be able to get the scene built and for each player to be able to see their third person view from the camera. I would also like to finally work on the transparent UI elements and begin the design for those. 
  5. Communication between team members is still really important. I could’ve been better at communicating this week. I also recognized that it’s important that when other people are relying on your work, to prioritize it so that other people aren’t prevented from working themselves. 
  6. This week, I hit some challenges that required me to go back to refactor the work that I did last week. That definitely made me less motivated to work for a bit in the middle of the week. But I fixed the issues I was running into, so I’m ready to work again!

Evan

  1. My goals this week were to finish integration with a single client and work on multi-client integration.
  2. Our single client integration works, but we are not finished with multi-client integration.
  3. We are running into a lot of race conditions and network communication issues. We need to debug to find out where these occur and how to fix them.
  4. Next week we will have the entire multi-client integration completed with all of the network code merged with Graphics.
  5. I learned how the server queue works and how it will store packets that it receives throughout the tick, before processing them all at the end of the tick.
  6. Morale is still pretty good. Generally things are going pretty well for me despite the bugs we are running into, and working on the project is still fun.

Steven

  1. My concrete goals this week were to work on crown stealing and the scoring system.
  2. I split the object types into their own distinct classes and added some relevant fields for each one. Players should now be able to steal the crown when hitting another player (or by being hit by another player while sitting still). For now I’ve given the player iframes after stealing the crown to make sure the crown doesn’t immediately transfer back (and so that the player has time to get away). I also made an idle function that will be called each server tick to increment score, change makeup levels, and adjust player speed based on a few factors (possession of crown, makeup level, and presence of a trail).
  3. I met my goals but didn’t really do much to test the new functionality, which is slightly worrying.
  4. My goals for next week are to implement makeup stations and try to improve movement. Right now collisions with solids just cancel the move, which is not ideal. I will also try to implement basic sloped terrain and pushing other players (this would be nice for players with iframes to have to prevent other players from trapping them against walls), though neither of these are particularly high priority.
  5. This week I learned a decent amount about inheritance in C++, which I knew I would need to use as object types became more complex and distinct.
  6. My morale is good.

Terry

  1. My goals for this week were to implement the queue to be able to handle messages from multiple clients
  2. We were able to build out the logic to connect multiple clients with asynchronous messages and implement a queue where all these messages would populate. We currently have messages being sent back and forth.  
  3. We aren’t complete with the queue and multi-client integration because there are a lot of issues that we ran into with synchronicity and being able to handle data via boost async reads. We have a lot of debugging and memory checking to make sure that we can perform read/write operations without losing/corrupting data flow. 
  4. My specific goals for this upcoming week are to test and debug multi-client integration queue work and then work with Steven on game logic to handle our server game state. I will also start working on our game music. 
  5. I learned that there are a lot of challenges in implementing a server handling serving multiple clients and handling threads (explicitly or implicitly via libraries). For every piece of code that we’ve written, there’s so much that we’ve needed to re-evaluate to make sure that it will be foolproof from race conditions to thread handling, to player move priority order, and even game logic robustness. 
  6. My individual morale is feeling good about the amount of work and thought I’ve put into tackling the solutions that we’re facing. Hopefully, I’ll have the time to get some of those obstacles out of the way for this week.

William

  1. My goals for this week were to update the scene with packets from the server, and fully implement the camera. A stretch goal was to get multiple clients working.
  2. I was able to fully implement the camera, and update the scene graph with data from server. The client can use WASD or arrows to control a car, and the camera will follow the car. When you press W/forward, the car moves in the direction of the camera, as you would expect.
  3. We did not get multiple clients working yet, simply because it was a stretch goal and we didn’t have time to fully implement it.
  4. Next week, I will be working on implementing animations, particularly for the makeup station. I also will do some work to integrate multiple clients, mainly making sure the camera follows the correct player.
  5. I got a much better understanding of how mouse controls for camera work in games. The implementation is quite simple, but it was just something that I never had to think about before. 
  6. Overall, I am very confident that we can finish this project, although the time crunch is certainly on.