Week 3 Report


FRIDAY APRIL 15TH 10AM-11AM
MONDAY APRIL 18TH 10AM-11AM
WEEK 3 STATUS

This week we worked out a lot of the setup issues that had been plaguing us previously and began work on integrating the server and graphics client. There are still a couple decisions to be made regarding the specifics of how the client and server communicate, but they should be dealt with soon. As a group we were able to complete these tasks: 

  • Began work on model loading
  • Made a movable camera that can rotate around a fixed position
  • Decided on a networking protocol and what state needs to be sent
  • Implemented very basic game logic and moved in into the server
GROUP MORALE

The general group morale is fairly high. Everyone has their environments set up and we are on pace with our original schedule.

IMAGES

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 goals for the week were to figure out how to make cars more “pageant-y” and get different color palette textures for each car. While, not my main goal, I did start experimenting with creating a crown/tiara that cars would be competing for.
  2. I accomplished almost all of my goals for the week, but did feel like I might have fallen a bit short in terms of what I thought I could achieve to make the cars very “pageant-y”.
  3. I originally wished I could have created a dress/tutu for the car, but all of my attempts did no look “pageant-y” or accurate enough. This was a bit disappointing, but I am happy with the alternative design we ended up with.
  4. My goals for next week are to focus on the environment assets such as: starting lines, makeup booths, spotlights, catwalks, checkered flags and finalizing a design for the crown/tiara.
  5. This week, I learned about the value of going back to something after a couple days. I went back to my car model a couple times and each time added a small touch of detail that I feel helped the overall look.
  6. I feel pretty good, but I would like more confidence in the direction we are going in terms of gameplay and visuals.

Andrew

  1. My concrete goals for the week were to define the protocol for the data we would send between the client and server, implement the data serialization and deserialization for the protocol data, figure out whether we could use Microsoft Visual Studio Property Sheets to make sharing build configuration information easier, and decide on which unit testing framework (Google Test or Microsoft’s Native Tests) to use.
  2. I was able to accomplish most of the goals I had for the week, although my goal of getting a full server / client model implemented is in progress because I need to figure out the game logic. My goal of choosing a unit test framework is also in progress because of build compilation errors I get using Visual Studio’s default configuration.
  3. I did not meet the full server / client goal because our group is still working on the game logic.
  4. My specific goals for next week are to implement the basic game logic to complete the full server / client. This will include collision checking and resolution of conflicts among multiple clients by the server. In addition, I would like to help integrate the graphics client with the server to form a complete client and server.
  5. I learned (and expected to learn) how to implement serialization for a C++ struct. I also learned how we could use a clock tick based on Evan’s implementation of a clock tick.
  6. My morale is good!

Emily

  1. This week, my first priority was to finish up setting up the Visual Studio environment with all the OpenGL dependencies needed for the CSE167 starter code. This would provide us basic shading, lighting, and keyboard input handling. It would also get us started with creating the game’s scene graph. Next, I wanted to successfully load in one of Aiden’s 3D models to be rendered, without the textures. 
  2. Will and I were able to get everyone’s Visual Studio environment working to render the graphics scene with Alex’s help. We verified that the shaders, lighting, and keyboard input were still functional. I haven’t been able to integrate the model loading code with the current project yet, but hopefully I’m able to fix that before our team meeting tomorrow. 
  3. I’m still running into integration issues with model loading. 
  4. Next week, I would like to walk the networking team through the graphics code so that they’re able to use that to begin integrating the graphics with the network. I would also like to work out how we’re going to load textures on the models. And if there is extra time, I’ll begin working on loading in all assets Aiden has created so far and organize the scene graph such that it is set up for when our game begins to grow. 
  5. This week, I learned how to structure our project and resolve dependency issues. I’m so thankful for package managers like Nuget. I also familiarized myself with the CSE167 starter code, refreshing myself on a lot of the graphics concepts that I haven’t had to use for more than a year.
  6. Seeing Aiden’s models make me so happy. They’re so well done! It makes me want to work harder so we can see the cars drive around.

Evan

  1. My concrete goals this week were to design communication protocols between the client and server to allow the client and server to decode packets, and create functionality for a “clock tick” that will maintain loop iterations to only loop at a specified frequency. 
  2. I was able to accomplish both of these tasks, but communication between the client and server will likely need to be updated as we finalize the data packets and test across a true “client” and “server” (i.e. multiple machines).
  3. As said above, communication between client and server will likely need to be changed as we develop more of the project. Aside from this, all goals were met.
  4. Next week, I plan on focussing on helping integrate the graphics with the client/server. I will also help Terry work on having multiple clients with one server.
  5. I learned how easy it is to convert a struct to a byte array to send across a network. I also learned how the C++ library chrono works for the clock tick.
  6. I am getting more excited as things are gaining momentum!

Steven

  1. My concrete goals were to continue working on collision and write basic functions for movement.
  2. I refined the collision handling code so that it can work in 3D (I also worked more on the uniform grid but am not actively using it) and wrote a very basic movement function that simply takes a new position, checks that there is no solid object occupying that space, and then updates the object’s coordinates. This function will be expanded or used as part of a more complex movement system. I also started integrating my code into the server codebase.
  3. I was hoping to have a better movement system already but I instead focused on planning integration.
  4. I will be working more on the movement system and integrating the server and client. I will also be doing a game jam over the weekend, so I will probably accomplish less than usual.
  5. I learned a lot about the differences between GLUT and GLFW. I was not expecting this, though it was interesting to look into the pros and cons of each.
  6. I feel a little disappointed that I wasn’t able to get more done, but I am looking forward to being able to focus more on game logic in the coming weeks as we get the fundamentals finished.

Terry

  1. My concrete goals this week were to unify our server code documentation and investigate Google protocol buffers for how we would communicate data between the game client and the server. This would allow us to be able to send game frames and state data between the two entities. 
  2. I was able to implement Doxygen headers for our code files and worked with Evan and Andrew on defining our server-client communication protocols. 
  3. The goal that I wasn’t able to meet this week was implementing Google’s protobuf as our protocol for communicating serializing/deserializing data between the client and server. We looked into the documentation and attempted to compile our code but continually ran into errors. Due to our lack of experience with this method, we decided to opt for simpler structs that we could serialize as a byte array and send across the network.
  4. My goal for this upcoming week is to work on being able to have multiple clients communicate with our server.
  5. I learned a lot about the physics of our game through team discussion and planning out how collisions would work. 
  6. My individual morale is still a bit scattered being unfamiliar with graphics and client side of the code, but hopefully this week, I can get a better understanding of the game engine pipeline.

William

  1. My goals for this week were in regards to setting up the graphics engine. I wanted to load a model, have a shader, and load a scene graph. I also wanted to have the visual studio project set up and working on everyone’s computer. 
  2. Emily and I got the Visual Studio project running and were able to share code with everyone on the team. I used CSE 167 code to render a scene with lighting, but we have not loaded a custom model yet. Finally, I began implementing a basic 3rd person camera. You can move in space with WASD, relative to the direction the camera is facing. I also started implementing mouse controls for the camera, although they currently only work at the origin. 
  3. The main unmet goal so far is loading a custom model. I don’t anticipate this will be a major hurdle. Another issue we will be discussing and plan to figure out early this week is if we want to use glfw – which may offer extra benefits –  or glut – which we are currently using.
  4. Next week I would like to focus on integration. I want to load a custom model, and also integrate the graphics client with the server.
  5. I learned a lot more about visual studio this week. I also got to refresh my linear algebra knowledge while working on the camera. 
  6. I feel very good about our project. The only thing I am currently unsure about is choosing between glfw or glut.