Week 4: May 2, 2017

Overall Status

A lot of progress was made this week! Guillermo finished up with collision detection and we are happy to merge his hard work on it these last few weeks. Amanda was able to get player object interaction started by having us able to select objects and carry them or push them away. Anish was able to work on the environment of the space by setting up an asteroid field and starting to map ship controls to keys. Huajie was able to set up a timing system to spawn random events throughout the ship, which will help us create the main chaos in the game. Yuxiang started working on create the "state" of the game in order to keep track of things like ship health and score. Finally Michael was able toadd a lot more models in the game and add more components to the ship.

Group Morale

We got so much good work done this week that is making our game seem more and more playable. We can start to see things come together, which is nice but this has its problems too. The word for this week is deadlock. A lot of our individual features deal with each others code, so making assumptions on how the code will look at the end of the week before we merge has been sort of tiresome and hard to keep track of. Furthermore merges are getting more and more hectic, so hopefully we can take better care with this.

Screenshots

Goals for This Week

  • Implement object interaction with cone+radius checking
  • Implement object interaction for tools that can be picked up and dropped

Accomplished Goals

I accomplished both of my goals for this week plus created a Wrench object! There was also some refactoring of how we were passing positions in our Protobuf to add extra structure and reduce some crazy long namespace declarations.

Unmet Goals

I had another class project and midterm that didn't allow me push for more work. Even though I was able to finish all of my planned goals, I would have liked to try to add more, but couldn't due to my schedule.

Goals for Next Week

I'm going to be working on even more object interaction. I'll be adding left click iteraction and keeping our current "F key" interaction to just pick up/drop. I'm also going to be implementing one of the objects for our random events (a crack that forms in the hull of the ship to be fixed by a player with the wrench). The goal is that it will take a number of hits to fix the crack and there will be "progress" associated with that. Once that's done, I'll be implementing our navigator "podium" that a player will interact with to become the driver. This involves placing the player "in" the podium and then change the wsad controls to move our ship. The wasd controls will most likely require working with Anish since he has some of this implemented and my work will involve integrating it to our normal player movement.

What I learned

I relearned geometry and calculus! Yeah, I had to go look up how to do some of the mathematical formulas I ended up using. I knew what to do once I saw them, but man it's easy to forget those little things you don't use often.

Individual Morale

Getting the player to be able to work with objects was really awesome! I was very excited to show the team how a player can pick up an object, walk around with it, and still interact with other objects. I'm ready for more!

Goals for This Week

My concrete goals for this week was to work on ship movement and start work on create a seemingly random asteroid field.

Accomplished Goals

I was able to complete my goals of accomplishing creating the asteroid field and handing the ship movement, but on the client side. I have yet to port this over to the server, because of some deadlock issues on waiting for the server side code.

Unmet Goals

Like I said previously, I got stuck waiting for the server changes, and also am currently stuck with figuring out what was wrong with my merge that has a bug for object interactions. After I figure this out, I can continue with porting my work over to the server.

Goals for Next Week

My goals this week are to catch up porting over my asteroid field and ship movement to the server as well as implementing for ship interactions. For example what happens if a ship is hit by an asteroid, and how will that affect ship health. I will also look into create an asteroid field event which will make it very hard for the pilot to steer.

What I learned

I learned a lot about designing the game from a high level. For example we were initially thinking of creating a scene graph to handle all the complex movements that would happen when the ship moved, but we re-thought this and instead made the world move around a stationary ship. We hope this will be an optimization that will especially show in the near future.

Individual Morale

A little bit frustrated this week because I was unable to meet expectations, but I really hope to catch up and do even more next week. My goal is to make sure that these asteroids are going to be a pain for the unlucky person who chooses to be driver!

Goals for This Week

I wanted to start combining assets and transforming them into a semblance of a game. Although we've made progress on aspects, this is the first week where we see the game itself take shape

Accomplished Goals

The collision detection is fully fleshed out. I also implemented aspects of lighting (point, spot, directional)

Unmet Goals

The collision detection is not currently being routed through the server, which makes me feel that less progress was made on that front than was expected.

Goals for Next Week

I want the first few game events spawnable and playable by the end of the week.

What I learned

I learned that although I am skilled in graphics, I need to get a handle on the server packet sending/receiving code in order to help the team more.

Individual Morale

I feel sort of gridlocked right now, and am having trouble finding where I should fit in to the work flow. I'm excited to see the game take shape in the next couple of weeks however.

Goals for This Week

Adding a random spawn system, and better yet, a random event spawn system.

Results

The random part of the system is easy enough to implement with C++ random library. The first step was to make server and client spawn an object upon a dice roll. After that, I wrote a timer class and event class. The timers store a time when an event should be triggered. The timers are maintained by a heap, allowing dynamic insertion of timers while maintaining trigger order. Currently the event causes change to things like fuel loss rate, which is done by changing some modifiers. Other than functionality works, I also refactored server code to better utilize polymorphism.

Goals for Next Week

We'll probably start to extend the amount of events. Also I may be working with Yuxiang on getting the actual status system working.

What I learned

How to revert git pushes. We had to fix a bad merging. It took an awful amount of time just to figure out how to rewrite git history properly.

Individual Morale

Doing OK. Midterm week is past.

Goals for This Week

My concrete goals were to find assets, work on the ship model, learn more OpenGL, and working on holding objects.

Accomplished Goals

I was able to complete these goals, except I was moved from holding objects to doing fire particle effects from holdable objects. I am midway through the particle effects process.

Unmet Goals

I didn’t have much time in the beginning of the week to get holding objects done so someone else worked on it. I feel that particle effects are a good replacement because they won’t bottleneck our work and give me a chance to write a large portion of OpenGL code.

Goals for Next Week

My goals for next week are to finish fire particle effects, keep finding assets, and update the ship model as people request it.

What I learned

I learned a good deal about OpenGL (shaders, particle effects, texturing) and a lot about Visual Studio configuration (to be able to work on a new desktop).

Individual Morale

My morale is high because my schedule frees up a lot this week, so I think I will be able to contribute a lot more now.

Goals for This Week

My concrete goals for the week were adding the functionalities that allow server and client exchange states with each other. Client should be able to send events to server and server should therefore update corresponding states of the game object. And the server then will update the states kept be client be sending protobuf packet back.

Accomplished Goals

I finished part of those functionalities: updated proto file, and wrote functions that handles incoming events and interactions.

Unmet Goals

I was unable to finish the function that populates protobuf packets due to I managed my time poorly. I will introspect my schedule and be more productive in the upcoming weeks.

Goals for Next Week

My goal for the next week is finishing up the client <-> server states exchange and integrate my parts with Huajie’s timer class.

What I learned

I learned more visual studio git merging tools. I did not expect to learn it as I was sticking to git bash ever time merge conflicts occur. Huajie pointed it out for me.

Individual Morale

My morale is high as I know I will have more time to spend on the project once I’m done with cse127 mt which is going to take place tonight.