Group Status Report
Week 2 was a very productive week for each subteam. The graphics team set up a game view window that can import and render object files as well as set up the foundation for building entire scenes. The network team successfully created an echo server that can connect clients to the server and send data back and forth. These two sub-projects were successfully integrated together at the end of week 2 with the aim to make the systems more complex in week 3. The art team has begun learning blender and producing various 3D models that we have started to incorporate into the game scene. Overall, our team is very optimistic about the coming week with a lot of big plans to be executed.
Individual Status Reports
Alex Garza
Concrete Goals:
My goals for this week were to set up a Scene Graph and a Scene Loader to populate the scene graph. I also wanted to set up a way of rendering the entire scene graph.
Goals Accomplished:
I was able to set up the Scene Graph and Scene Loader. We are able to specify the transforms and object files for game objects in our world and it will automatically populate the scene graph.
Justification for unaccomplished goals:
I didn’t have the time to fully implement the rendering of the entire scene graph, but I did have the opportunity to test the functionality of the graph with hard-coded tests and it works!
Specific Week 3 Goals:
My goals for Week 3 are to set up a GameManager and GameObject. These classes will allow us to start refactoring our current gameplay loop into a centralized class and start sending game-specific data to our server/clients.
What I learned this week:
I learned a lot more about OpenGL this week thanks to Evan. I also had the experience to learn a lot about the systems used for rendering a game world while implementing the Scene Graph/Scene Loader.
Individual Morale:
I am very proud of what my team and I have been able to accomplish this week and I am optimistic for next week!
Andrea Sudharta
Concrete Goals:
Over the past week, I:
- Made a model for Geisel
- Made a model for a UCSD structure
It wasn’t easy. I had to stare at a satellite image of Geisel and an online image of Geisel, plan dimensions, and round edges! I remade it three times before deciding on its final form.
Goals Accomplished:
Made a model for Geisel
Justification for unaccomplished goals:
I underestimated how much planning and work you needed to make a model and to learn how to use Blender. Plus, Geisel is complicated structure-wise.
Specific Week 3 Goals:
- Make a model for Sun God
- Maybe learn to animate Geisel when lasers are shot from the cannon?
What I learned this week:
Following a Blender tutorial on Udemy, I learned how to create models and add textures with Blender, and how to plan out a 3D model.
Individual Morale:
It’s been a lot of work but rewarding! I think I am in better shape to make another model
Carlos Wirawan
Concrete Goals:
For week 2, my goals were to
- Meet with Priyal to get the echo server up by the end of the week,
- Set up a key logger for the keyboard input listener.
- Meet with the team to discuss the gameplay mechanics for the game in a whiteboarding session.
Goals Accomplished:
I accomplished all my goals this week and the client can now send messages not just to the server, but also to all clients.
Justification for unaccomplished goals:
No unaccomplished goals this week.
Specific Week 3 Goals:
- Get the server to do more functionalities like send actions (e.g. move, shoot, etc).
- Create a handler on the client-side for the messages received from the server.
What I learned this week:
I learned a lot about networking as I haven’t really got that deep into networking in the past. This project also refreshes my memory about C++ and taught me to do proper refactoring in C++.
Individual Morale:
I am definitely happy with the progress me and my team made. But I think the hard part is coming in the following two weeks.
Cora Xing
Concrete Goals:
For week 2, my goals were to (1) meet with Andrea to create initial concept art for the planet and spaceships, (2) learn Blender via a 3-hour Udemy crash course and figure out how to make basic low-poly 3D models for what we needed, and (3) model the enemy spaceship, Stonehenge, and create a basic planet with islands.
Goals Accomplished:
I accomplished all of my goals this week, in addition to learning how to do basic texturing and figuring out a basic understanding of where common tools in Blender are located.
Justification for unaccomplished goals:
No unaccomplished goals this week.
Specific Week 3 Goals:
- Texture islands, ocean, Stonehenge
- Figure out the proportion of current models to each other; resize assets if needed
- Split up modeling each of the following with Andrea: clouds, Sun God, and the Triton Statue
What I learned this week:
Learning how to use Blender wasn’t as daunting as I initially thought; I carved out blocks of dedicated time to do this and bribed myself with pantry snacks to concentrate. Starting out with the basics in terms of figuring out how to use the interface and items in the toolbox first rather than jumping straight into learning how to model was really impactful and paid off (compared to my past experience trying to do jump straight into making rather than learning with Adobe tools yikes).
Initially, I wasn’t planning on doing texturing at all; however, when I started working on the fire blast on the enemy spaceship, I realized that texturing the fire would breathe a lot more life into the spaceship. As a result, I started to learn to texture using Blender Nodes, and was able to apply a texturing tutorial from an older version of Blender to a model that I made with the current release by digging the YouTube comments from kind folks on the internet; however, I still don’t understand much of texturing and probably can’t come up with texture recipes by myself. Hopefully (and most likely) whatever textures we need in the future have premade tutorials on the internet; otherwise, at the minimum, I’ve figured out how to apply basic colors.
Individual Morale:
Pretty happy with my progress. I’m really glad that Blender has a lot of free resources and such an active, helpful, and supportive community, which really enabled me to keep going despite the mountain of steps it took to understand the initial overhead of learning the tool. A little worried about how Andrea and I are going to make our assets look consistent stylistically, and even for my own assets how consistent they will be as well (polygonal shapes on some, but with varying polygonal surface sizes from object to object), but I guess this is just something to keep in mind, and is a lower priority that can be fixed after we get all the initial assets down and become more familiar with Blender over time.
Evan Laufer
Concrete Goals:
For week 2, my goals were to get basic OBJ rendering done, as well as get the rendering engine completed enough so the team could start working on integrating gameplay. This also includes loading OBJ files from a file, creating a scene graph,
Goals Accomplished:
I was able to accomplish all the major goals for this week. We have a basic renderer that can take a scene graph and render all the objects within the graph. We can also populate the scene from a file (very useful for levels or initial state), and it will automatically load the files from their corresponding obj files.
Justification for unaccomplished goals:
I was able to complete all my major goals for the week.
Specific Week 3 Goals:
I think the biggest thing is getting basic material support (I am almost done with basic Phong shading, but I need to consult with the art team to ask what materials we need to support, e.g. textures or not). Once materials are done, basic rendering is essentially complete, so I can pivot to adding more advanced rendering features that could make the game look nicer (e.g. shadow mapping). Because gameplay work is also starting this week, I will make sure to consult with them to make sure the renderer system API is sufficient. That way, hopefully, I can avoid making any breaking changes so the gameplay and graphics teams don’t step on each other’s toes.
What I learned this week:
This week I learned (or more like relearned) about the C++ rule of five, which became important because we created smart pointers to manage our OpenGL mesh resources (like the vertex array objects, vertex buffers, etc.). Because we wanted the resources to get deallocated in the destructor, we had to make them move-only, in order to prevent ending up with dangling pointers.
Individual Morale:
Pretty good, I think progress is moving smoothly. I am a bit tired, but just because I have had a lot of work for my other classes this week, which should be resolved next week.
I am also getting a bit worried about complexity creep, which has been a major source of technical debt in my past projects. That said, right now everything is pretty simple and clean, at least for now.
Priyal Suneja
Concrete Goals:
For week 2, my concrete goals were:
- research and understand what it would mean to set up a server/client infrastructure for a game
- get the echo server and client set up
- talk to the rest of the team to start thinking about the game architecture & logic
Goals Accomplished:
- All three of them! Carlos found an amazing tutorial for us to watch which explained networking in the context of gaming and helped me understand the architecture of the networking library that we decided to heavily borrow from (which was also a part of the tutorial). Everyone has also been very active and available to chat, so we were able to begin thinking about the game logic.
- Integrated networking client with the graphics client
Justification for unaccomplished goals:
No unaccomplished goals this week.
Specific Week 3 Goals:
- Implement the classes that we came up with as a part of our gameplay mechanics for the server-side.
- Meet with Edward to go over our game architecture and logic.
- Adapt the game architecture/logic based on Edwards feedback
- Start working on full server/client.
What I learned this week:
- SO! MANY! TERMS! related to gaming. I don’t have a special dictionary yet, but I might just start one
- A model of asynchronous server/client communication
- how to use VSCode for things other than editing files
Individual Morale:
Pretty high. Everyone on the team has been working super hard already and that is motivating me to work hard too. I have been learning a lot of new stuff, and am excited to learn even more!