Week 5: May 9, 2017

Overall Status

After integrating our code together, our application is beginning to look like a real video game. Interactions are well fleshed out, along with collision detection and asteriod fields. We are also making progress towards finding all of our necessary assets. Michael completed particle effects, which will be useful for fire and fuel thrusters. We are making great progress towards a good number of mini games, and their culmination is very impressive.

Group Morale

This week provided our group with a much needed morale boost. After the deadlock and hardships of last week, seeing the project come together as it has is incredible. We are excited to further develop more game events in order to make the project feel more complete.

Screenshots

Goals for This Week

I continued work on the Hull crack object and its player interaction. I updated the tool object to be picked up or dropped by the key press of F. Interacting with any other object now uses the mouse left click. I also added a Navigation Control Object, which I wanted to tie Anish's ship movement code into.

Accomplished Goals

I was able to do everything I wanted to do with the hull crack this week. For example, the crack now requires a wrench to be held by the player when the player left-click interacts with the crack. If the player is holding a wrench, then the crack's "progress" will be incremented and once the max progress is reached, the crack is fixed and disappears. I was able to create the Nav object as well that sets the player as a driver, but I wasn't able to get Anish's code in time for this week.

Unmet Goals

The only unmet goal was getting ship movement controls hooked up into the Nav object.

Goals for Next Week

First, I will finish up all interaction with the crack. The only puzzle piece left is to damage the room it belongs to if it isn't fixed. Willie has code for room detection, so I will be using that to detemine the room that will be damaged. Once this is done, the hull crack code should be finished. (And this part can be reused for any damaging room objects.) We also now have the ship movement merged into our base code. I will be integrating that into the Nav so that a player can swap between self and ship controls. Once I get this done, I will be doing the next interaction with a fuel cell and fuel tank. This will be a slightly different interaction, because this will be something that can be carried like a tool, but to "use" it, it will need to be dropped into the fuel tank.

What I learned

I learned how to use the mouse callback to capture the mouse left click, which was something that wasn't being used yet. I also learned that there are definitely some assumptions being made in terms of which id number the player is. I added server game objects initialization and when the player wasn't the first object, there were some problem areas that needed small tweaking.

Individual Morale

I'm really enjoying the code I get to write. It's fun to see the object interactions come together and actually be playable. Every week, it feels more and more like a game!

Goals for This Week

My concrete goals for this week was to port both asteroids and ship movement onto the server.

Accomplished Goals

I was able to complete my goals of porting both the asteroids and the ship controls to server. However this has been a backlogged task for the last few weeks so I plan to do more exciting things this week.

Unmet Goals

I met all the goals that I planned for the week, but I still hope to do more in the coming weeks since I feel like this week I did not do enough.

Goals for Next Week

The initial goals for next week is to create the asteroid field event and to make asteroid procedurally spawn such that we only need to render ~50 asteroids at any given time. I also hope to start working on stuff inside the ship that perhaps focus more on gameplay.

What I learned

I learned a lot about how player movements should be controlled nicely and transition over from client to server. I also came across a lot of refactoring I had to do in trying to accommodate my code with other teammates' code.

Individual Morale

Morale was again frustrating in trying to get my server changes to work, especially when the merge came into play. However after the merge came together, everything seemed to work nicely, so it was very worth to go through all that struggle to actually see the world changing around the player.

Goals for This Week

This week I wanted to get collision detection working on the server side of user movement. I also wanted to hae lighting working on the client.

Accomplished Goals

Collision detection is now fully working on the server along with the other huge changes made by my teammates. I will be working on lighting tonight and hope to finish it by the morning.

Unmet Goals

I did not finish lighting as early I had expected.

Goals for Next Week

I hope to get the gunner events completed by the end of the week. I also would like to finish lighting.

What I learned

I learned about the server very much this week. Working with server code demystified a large amount of the process.

Individual Morale

I am very excited about the direction our project is heading in. Aspects of the game are culminating and it is very motivating.

Goals for This Week

Integrate the random spawn system with a specific event: spawning cracks. Also experimented with the audio library.

Results

I worked with Amanda to allow randomly spawn cracks in the ship. The event timer system I made on week 4 means that we can not only set up events like an status effect may last 5 seconds, but also a COOLDOWN (CD) should be in effect for X seconds. So for the random crack spawning, we set up an init CD for spawning cracks. Then after a crack is spawned, we activate another CD to avoid overwhelming players. As of Audio library, I opted for FMOD. It took a lot of time to figure out how to properly include all the libs and dlls required. But after that, the FMOD official documentation is mostly sufficient. I can now make our characters move with some hover-engine-ish sound, which stops right when the player stops moving. I mentioned on last week that Yuxiang would be using my event timer system for ship status changing. He got it working, too.

Goals for Next Week

I'll try to add some BGMs to our game. Also we may need to add a system that provides a set of locations for spawning cracks/fire/etc.

What I learned

Consistent styles is important. We had to debug some keyboard issue for 2 hours, which turns out that a key to the map was named in two styles.

Individual Morale

High flying. Got a lot of stuff done!

Goals for This Week

My concrete goals were to finish particle effects, find more assets, and work on the ship model.

Accomplished Goals

I was able to accomplish these goals.

Unmet Goals

I pretty much finished what I set out to do, although particle effects took me a lot longer than I anticipated.

Goals for Next Week

My goals for next week are to work on a Fire event and linking particle effects to it. I will also work with Willie on Menu GUIs. Of course, there will always be model work as well.

What I learned

I really began to understand OpenGL when working with particle effects and I’m confident I can extend this knowledge to render some more effects.

Individual Morale

My morale is high because I feel like particle effects were my first major code contribution. Most things before that were having to do with modeling.

Goals for This Week

I finished up the ship states exchange protocol and merged my code with Amanda’s player-object interaction functionalities. Also I added some recurring events on the serverside which changes the ship states in an deterministic way.

Accomplished Goals

States exchange is tested and basically working as expected. Also the server would handle events that changes the states, and the client would receive and updates its copy accordingly.

Unmet Goals

For now the events are most like place holders. We have not yet finalize the specific logics that determines ship states. Good news is that it would take little effort to refine it when we have most game-object classes implemented.

Goals for Next Week

My goal for next week is to start working on GUI interface with Willie. And I will also coordinate with Michael to make more game models.

What I learned

I learned a lot by reading HuaJie’s event timer system codes. It’s really elegantly designed and scalable and extensible.

Individual Morale

My morale is high. As I have only one Midterm left I will have more time spending on the project.