Week 3: April 25, 2017

Overall Status

We finalized the server-client communication protocol with Protobuf, which includes multiple layers of data structures that will be used in the networking requests and responses. We have started working on the object player interaction, event spawning, and collision detection. We expect to have a basic version of those functionalities by the next week. What’s more, we further refactored our server & client code and integrated the configuration reader code. Meanwhile, we made a few more game assets which could be added into the game later.

Group Morale

The group morale is pretty high as we were very productive last week. We have the core functionalities implemented and we are clear what the next goal is.

Screenshots

Goals for This Week

  • Continue creating server side data structures.
  • Get a player and an object interacting with each other.

Accomplished Goals

I created the data structures for our objects that will be interactable by the player. We only have one "cube" object that's a placeholder at the moment, but with the set up we created, it will hopefully be quick and painless to add objects as we flesh out more of the game.
I implemented skeleton code for object interaction. I had to hardcode some initial playtest values for sending the interact action to the server. There is not "real interaction" occurring, but during my work on it, I discovered that we will need to approach interaction differently than our original thought.
On the side, I updated some of the configuration in Visual Studio to use less hardcoded values for where to run the server executable from. I also implemented camera direction-based movement, updating from our naive N,S,E,W orientation. The latter still needs to be integrated into the main code.

Unmet Goals

I didn't get as much of the interaction working as I wanted to get done because I needed to discuss with the group about some of our original incorrect assumptions on how it would work. We did that Sunday and now I've started working on it again.

Goals for Next Week

I will get the player and object interaction working at a more robust level. This will take into account how far the player is from the object, if the player is looking at the object (to use it), and if the object that is in range is actually something that is interactable. If time permits, this will be extended to our weapons/tools which are interactable objects that once interacted with ("picked up"), will move with the player.

What I learned

While I was creating the camera direction based movement, I learned more about the OpenGl vectors I have access to and how I'll need to use them server side, especially for the direction the client is looking at. I also learned that object interaction is a bit more involved than just checking if a player is in the same position as an object, especially because the server has to decide all aspects of this. We often have to remind ourselves that the client shouldn't make these type of decisions.

Individual Morale

I think we're doing well. Usually at this point in my group project classes, we're still setting up environments. I know Anish feels that we're behind and while we may not be ahead, I think we're on a decent pace. Midterms might throw this off the next two weeks though. Luckily, I only have one so my contribution shouldn't be affected much.

Goals for This Week

My concrete goals for this week was to implement to a class hierarchy and change the networking protocols such that the client can change its state much more simply when receiving updates from the server

Accomplished Goals

I was able to complete my goals of accomplishing setting up this structure. I was also able to help push initialization to the server on top of my initial goals, so now the server literally has control of everything.

Unmet Goals

Again I was able to complete what I set out to do. However my progress (although a lot and definitely important) still feels a bit slow, so I'm planning to partake in taking on more "game" focussed goals.

Goals for Next Week

My goals this week are to focus on ship movement and creating a scene graph engine such that everything can move in relation to each other nicely. This will be very important in trying to achieve realism in our game, and furthermore it will actually make our game more playable!

What I learned

I learned a lot about making key design decisions, decisions that would impact the development for the entire team as well as planning overall. For example my changes directly affected changes made by Amanda and Huajie for example, so there had to be good communication on how we wanted to set up the protocols.

Individual Morale

This week's morale for me was quite standard because although I made a lot of changes to the game, they were such that they would not make the game "look" any different that how it is. However I will be adding a lot more key features in this coming week so I am quite excited for that!

Goals for This Week

My goal for this week was to get collision detection working along with help connect endpoints graphics wise between server/client.

Accomplished Goals

I have an object bounding box generator, along with rudimentary box-sphere collision detection. I also connected the player and the camera in order to route camera movement through the server.

Unmet Goals

I had hoped to do box-box intersection, and may still consider it if time next week allows

Goals for Next Week

I hope to get lighting done as well as help Anish generate game events.

What I learned

I had a project due for another class that I underestimated. It sidetracked me in this class a bit, but I learned not to underestimate homework for other classes.

Individual Morale

I am excited for the following weeks of development. We have core game aspects completed, so now is the time that we start turning it into a real game.

Goals for This Week

Fix libraries, expand the message we were already exchanging, and put a cycle time limit.

Results

Cycle time limit is no more than a couple lines of code. So far we haven't break the time limit yet.
Library issue was solved by Willie (Guillermo). He recompiles the other libraries we were using (SOIL) to use the correct version of standard libraries.
I restructured the client code to allow more convenient forming of exchange messages. Also I changed the code to send exchanges only on-demand (for example, when a key is actually pressed, rather than every cycle).

Goals for Next Week

I'll be adding a system that spawns objects in environment. This is a bedrock for an event generation system.

What I learned

Merging is hard. We had a special session to merge all the codes we had written over the week. Maybe we can spread that out over the week when we have definitive features written.

Individual Morale

Doing OK. I don't really have much else to do so I'm pretty focused when I'm working on it.

Goals for This Week

My concrete goals were to fix up the ship interior model. My other goals were to work on lighting and object interaction.

Accomplished Goals

I was able to accomplish improving the ship model, which ended up taking most of my time. Other than that, I got moved onto the graphics side of holding and using objects.

Unmet Goals

I accomplished some of my goals, while I ended up changing some of my other goals. Attempting lighting was a bit ambitious so we decided to give that to a graphics expert.

Goals for Next Week

My goals for next week are to find as many assets as possible to fill our object needs. I also want to finish holdable objects rendering and get more familiar with OpenGL. I will also inevitably end up tinkering with the ship model.

What I learned

I learned some OpenGL and got more familiar with our code base, since I was doing mostly modeling before.

Individual Morale

I feel like I haven’t accomplished as much as I should have, so while mostly feeling positive, I am looking to improve on that.

Goals for This Week

My goals for week 3 were creating more game models and integrating the config reader, and writing part of the Protobuf protocol.

Accomplished Goals

I found an asteroid model online and added a rocky texture. I contributed to part of the Protobuf specification. I integrated the config reader code with the help from huajie.

Unmet Goals

I postponed adding lighting and a finer-grained texture to the exterior of the spacecraft, as we wouldn’t need that model until a later phase of the development.

Goals for Next Week

Yuxiang add here

What I learned

My goal for next week is writing code for the sever to keep states of each client, and event handler when client accomplishes an event and sends a request for updating status to the server.

Individual Morale

My morale is pretty high as I accomplished most of my assigned tasks and my teammates are really helpful when I encountered any problems.