Week 0100 – 4/28/21

Group Status Report

Week 5 was a challenging yet productive week for team 2. Despite the multitude of errors we ran into, we reached our goal of being able to detect collisions on the server using moving objects sent from the client. Next week, we plan to make the game playable with context by rendering the player on a planet, where a camera follows the player as they move to enhance the perspective. Right now we have objects rendered and moving in a static location. We also plan to introduce win-lose mechanics to make the game minimally playable. Outside of game-related work, we team-bonded by (accidentally) going on a difficult hike on the Ho Chi Minh trail and video-called Carlos who was not able to attend with us.

Individual Status Reports

Alex Garza

Concrete Goals

  • A client that acts as a terminal that sends events to the server and waits for a response to update its gamestate
  • Creating a camera that follows the player and has the perspective of the planet from our design document
  • Basic collision detection between two cubes and bounding boxes 
  • Spawning new clients when they join the server and sending the info to all other clients to render game state changes

Goals Accomplished

  • A client that acts as a terminal and only reacts to game state updates from the server. The player now only moves based on server updates
  • Collision detection with rectangular bounding boxes (including pseudo-rotation [over estimates bounding box] and scale!)
  • Parsing and creating bounding boxes for objects defined in our scene file
  • Multiple clients on one server and being able to see another clients movements

Justification for unaccomplished goals

  • Over the last week, I aimed to create a camera that can follow the player sticking to the perspective of the planet. It turns out this requires a lot of math and is not as simple as I thought it would be. In turn, I focused more on server-client communication and collision detection.

Specific Week 5 goals

With the latter half of week 5 being busy for me, my main goals for this week are a bit smaller in scope than usual.

  • Research how to make game objects stick to the surface of a sphere even when the players move
  • Look into how to perform collision detection on rotating bounding boxes and consider if this is necessary for our game
  • Create a more defined server side enemy AI that will move towards the player and can kill the player

What I Learned this Week

I learned a lot about how delicate sending and receiving information across a network can be, and how to limit that information to not congest the network. We ran into a pretty big bug where as time went on, there was increasing long input delay until the player would update. It turned out that the issue was the server was sending updates too frequently to the client causing network congestion. Our solution was to instead only send modified data across the network - we considered this at first but thought it’d be too difficult to start with, but it ended up being a rather simple change.

Individual Morale

My overall morale remains high as we continue through our busiest weeks. Some of this week and next week are going to be slower due to midterms and other obligations, but I am confident that we will stay on pace!

Carlos Wirawan

Concrete Goals

I have only two main goals for this week because it’s midterm week!

  • Implement the collision detection of game objects
  • Research about how to stick the game objects to the planet. Something along the lines of ray casting if we’re using Unity.
  • Gameplay physics!

Goals Accomplished

Implement the collision detection of game objects

Justification for unaccomplished goals

This week is midterm week and mostly everyone is busy this week.

Specific week 5 goals

Continue working on the physics for the gameplay

What I Learned this Week

This week is a really busy week for me. I have two midterms this Thursday, but I am certain that we will be on time! We have most of the gameplay basics implemented, and next week will be a free week for me. Overall, my morale is high.

Individual Morale

This week is a really busy week for me. I have two midterms this Thursday, but I am certain that we will be on time! We have most of the gameplay basics implemented, and next week will be a free week for me. Overall, my morale is high.

Cora Xing

Concrete Goals

  • Simplify model of Triton Statue to make it easier to model

Goals Accomplished

  • Finished modeling Fallen Star

Justification for unaccomplished goals

  • Pivoted to modeling Fallen Star instead of finishing the Triton Statue model
  • Learned that it’s easy to get carried away trying to make the polygonal surfaces as close to the original round curved surfaces and faces that are not flat

Specific week 5 goals

  • Color Fallen Star, put Triton Statue on hold, try out sculpting Sun God instead of the Triton Statue, otherwise try to pick another landmark to model instead -- convert Geisel into tower instead of user spaceship
  • Figure out why materials aren’t being exported with the object files for certain parts of objects, and why this happens for certain materials but not others

What I Learned this Week

  • I overestimated the amount of work it would take to craft bumpy round surfaces, especially the Triton Statue’s buff arms and asymmetry for both the arms, tail, and face that increase the modeling difficulty.
  • Models with flat planes are a billion times easier to create :)

Individual Morale

Concerned about finding resources to learn how to export materials and textures with object files because most YouTube videos I’ve found online are about creating models and animations within Blender only, and there is less material for using Blender models for games. Will keep scouring the internet otherwise default color the surfaces without textures

Evan Laufer

Concrete Goals

  • Finish the textures additions!
  • At least make the basic QOL improvements to the rendering interface. There are a few low-hanging fruits that are really bad (i.e. at least allow passing in a whole scene to render instead of manually doing each one).
  • Got roped into collision detection, so I helped the gameplay team fix their collision code as well as added code to the renderer to display bounding boxes so the gameplay team could have easier debugging.

Goals Accomplished

  • Helped gameplay team with AABB collision detection
  • Added render support for the bounding boxes to aid in debugging
  • Added normal mapping shading to aid in debugging a strange model error
  • Helped Cora fix the spaceship model (for some reason the vertices are wound in the wrong direction for half the model, causing half of it to look inside out)
  • Refactored the rendering API to make it easier for me to make changes without breaking things for the gameplay team.
  • Textures are almost done I swear

Justification for unaccomplished goals

Basically I just got caught up fixing other bugs, which meant I couldn’t finish off the textures. Almost done though

Specific week 5 goals

  • Alex wants me to add a rainbow shader. Sure thing.
  • Textures will actually be done.
  • Refactor camera to be a part of the scene graph, so it follows the player
  • Honestly, most other rendering stuff is extra beyond the MVP. Need to consult with the team for most important future rendering (i.e. do we care most about shadows, or animations, or particle effects?)

What I Learned this Week

  • Don’t use pointers
  • Code works better when you start the server first
  • Scale and then translate.

Individual Morale

Good. Seems like we are getting pretty close to being able to have a MVP, which is nice. I am feeling pretty tired due to research obligations and other classes but that is normal for me at this point haha.

Priyal Suneja

Concrete Goals

  • implement basic collision
  • implement multiple clients 
  • implement clients so that they are dummy terminals that just render info sent by the server 
  • implement enemies that follow around the closest player 
  • make game logic more complicated, add win lose mechanics

Goals Accomplished

  • implemented collision with pseudo rotation
    • i.e., we just have cubes as our bounding boxes that don’t rotate with the object
  • implemented multiple clients 
  • implemented clients so that they are dummy terminals that just render info sent by the server 
  • implemented enemies that follow around the closest player 
  • made it so that the client only gets packets when there is an update instead of getting information about the entire world every tick

Justification for unaccomplished goals

The only thing we didn’t accomplish was adding win-lose mechanics and have rotation in collision detection. The reason for this is mainly that the algorithms for the things we did end up doing were very complex and we also ran into bugs that took forever to solve.

Specific week 5 goals

  • add rotation with collision detection
  • make gameplay more complicated for reals 
    • add bullets, add enemies that spawn in waves, win lose mechanics
  • bind player movement to the spherical world

What I Learned this Week

  • basic collision detection 
  • how to debug extremely weird errors like your game becoming slower the longer it goes on 
  • you’re more likely to finish a dangerous trail when you don’t know that its famous for being dangerous

Individual Morale

  • good :) This week has been a little busy, but we are getting things done. It seems like we might have to move our dev freeze up by a week, but we have been making pretty solid progress. Hopefully once midterms are done we can dedicate a little more time to the game and be ready for dev freeze by the end of next week.