Sylvia’s Update Week 5

What I Planned

In the second week of our core development, I plan to finish the major components visualizing and interacting with units. This include linking unit object with an actual spaceship model, spawning spaceships on key press, as well as making spaceships move in random directions. Having visualization on client hooked up with the server is my priority. As a stretch goal, I would like to work on animation of the spaceship, including orienting towards the direction of travel, attack and death animation.

What I Have Accomplished

  • Replace temporary sphere with an actual spaceship model
  • When pressing F3 key, player can spawn a spaceship in a random location with 1000 range in x, y, z
  • When pressing F4 key, a random spaceship is selected to move to a random location
  • Refactor Unit Manager to store unit ids as key and units as values

The Unexpected Factors

There were not many unexpected factors this week. The visualization process went on smoothly. We spent a whole day developing together, which we did for the first time. This proves very helpful because we can ask each other questions directly.

For the Future…

My next big goal is to get all the animations set up on the client. This could be challenging because of the sequencing. For example, if we want the spaceship to move from point A to point B, we would need to hold off the update call somehow for the spaceship to have a smooth orientation towards the destination. I also want to see if my teammates need any help with unit selection and unit attack visualization. At last, I will be working on a simple user interface for the client.

What I Gained

Our group usually communicates remotely and share codes through git pull requests. However, we gather for the first time solely for the purpose of writing codes together, and I thought that was very productive. We could communicate about the issues on the spot, and people come and leave when they have classes. I really wish we could have more of these sessions.

How I Felt

So far, I am pretty happy with the progress we have made. However, I am also concerned that people are starting to get busy with midterms and other homework. Sometimes communication falls through, and I become disconnected with other people’s goals. I want to help out as much as possible even when the teammates are busy.

Raj’s Week 5 Update

What were your concrete goals for the week?

My goals for this week were to finish the unit creation on the client, where the client issues a “Create Unit” command and the server responds by creating the unit and sending a confirmation to the client. Also, I planned to integrate combat into the server side, using the Mediator we set up for the movement updates.

What goals were you able to accomplish?

This week, I worked predominantly on setting up a unit combat demo on the client side. However, in the process, I came across some faults in our design of the combat system and had to address this on the core/server side. Therefore, I made little progress in actually visualizing combat. What I did get done on the client side was setting up a hot-key that tells the client to issue a combat request to the server, who — for now — just consumes the request without initiating combat. So, when we have two clients running, one client can properly issue an attack command on another client’s unit. I designed this example in such a way that when unit selection is finalized, we can easily extend this.

In terms of resolving the combat design issues, I’ve started coding up a solution that I hope to finish this week. This solution will also address how to separate managing combat from the respective management of unit (creation and movement) and cities, which are both “attackable” game objects.

If there were goals you were unable to meet, what were the reasons?

As mentioned above, I wasn’t able to finish a working demo of combat on the client. I plan to address the aforementioned design issues this week and finish up the combat demo by Thursday.

What are your specific goals for the next week?

My immediate goal for next week is to finish working out the issues with the combat system. I need to decouple combat from unit management — doing so should also help when we integrate cities into the combat system. After this is done, I will finish up the combat demo on the client, so we can get some visualization going.

What did you learn this week, if anything (and did you expect to learn it)?

I relearned the power of the delegation pattern!

What is your individual morale?

My moral took a shot when I ran into our issues with the combat system, which seemed like we were taking two steps back and one step forward. However, my moral is still high, and I’m excited that we got a simple demo up and running.

Ethan’s Update: Week 5

1) What were your concrete goals for the week?

My goal this week was to implement the inter-player trading system, which allows players to trade resources, cash, science points, or even peace treaties (once we have the option to declare war). I also had the stretch goal to implement the tech tree.

2) What goals were you able to accomplish?

Besides the concrete goals assigned during meeting, I did some work with refining the “commands” and “updates” class by adding constructors to them and make them easier to use. I was able to make a primitive working trading system where a player can send some free gold to another player, but the other player won’t be able to choose to accept or decline. The deal will be automatically applied to both players instead.

3) If there were goals you were unable to meet, what were the reasons?

Unfortunately, I didn’t manage to finish the whole trading system (it was not even close to finished), nor was I able to get started on tech tree implementation. The reason is basically I significantly underestimated the complexity of a inter-player trading system. Another point worth mentioning is that I spend quite a lot of time, maybe even too much time, designing the trading system instead of starting to get something done.

4) What are your specific goals for the next week?

Obviously there is no doubt I need to finish the trading system for the next week, and possibly get started with tech tree.

5) What did you learn this week, if anything (and did you expect to learn it?)

Not much that I learnt this week, but I did get to know that Visual Studio wasn’t able to find where the compile error occurs if an object is constructed with a smart pointer and is using an undefined constructor. I had to manually find all references to that class to find where an object of this class was constructed incorrectly.

6) What is your individual morale (which might be different from the
overall group morale)?

My morale is higher than the previous weeks. I guess this is because after we were finally done with the infrastructure, implementing game play related features are much more fun. Hopefully I can keep the high morale and do more work in the following weeks.

Dylan’s Update: Week 5 (8 May 2017)

1) What were your concrete goals for the week?

Concrete goals for this week were to get the UI up and running and to add orders/commands to complement the unit selection code.

2) What goals were you able to accomplish?

This week was a frustrating one for me because a lot of work on my goals had to be tabled while I spent quite a bit of time debugging and solving other issues that had been added into our code sometime in the past. Brandon and I spent quite a few hours one day trying to solve some errors that were being thrown during closing of the client that had us worried that our design was running into some problems. I spent another day of my work on this class trying to fix the problems that seemed to be coming from our shaders and how lighting was being calculated, but turned out to be from how materials were being loaded which was difficult to find because random values were being given instead. I fixed several bugs and inefficiencies with unit selection and have a slightly working version of orders being properly generated but have some work left to do tonight and tomorrow with that. I also got in another large refactor of how we are organizing a lot of the graphics code to make it much easier for everyone to add to the client without worrying about interacting with the more complex drawing routines and optimization logic.

3) if there were goals you were unable to meet, what were the reasons?

Lots of time consuming bugs ate away at the time I had allocated to UI work this week, and I am hoping to make up for it and work a lot extra this week.

4) What are your specific goals for the next week?

Get the damn UI up and working with some basic windows after all these set backs. Finalize the unit selection + order logic on the client. After these are done, I want to put together a basic lobby system and keep adding onto the UI and making it interactive. An additional stretch goal is box unit selection.

5) What did you learn this week, if anything (and did you expect to learn it?)

I learned quite a bit about smart pointers in C++ since I’ve finally had to use them in a non trivial context. I also learned about block uniforms in GLSL and relearned how awful debugging shaders can be.

6) what is your individual morale (which might be different from the
overall group morale)?

A bit low this week, just because it felt so unproductive and hit some walls with the bugs we found. I’m optimistic as always, though!

Ethan’s Update: Week 4

1) What were your concrete goals for the week?

My goal was to create some “command” classes, which serves as a medium for client-to-server communication where it contains user instructions from clients. I also planned to finish handling client commands on the server side, which I wasn’t able to finish last week.

2) What goals were you able to accomplish?

I managed to complete the command classes infrastructure, which laid the foundation for completing client-to-server communication. I was able to finish client-to-server communication as well. Now the client can send a command object to server telling it what the user has instructed, and the server will process that command and send all updates back to clients.

3) If there were goals you were unable to meet, what were the reasons?

Fortunately I was able to meet all my goals this week. Yay! Well I probably should have assigned myself more work this week, but I underestimated the amount of time I would be able to work this week, and the fact that we are mostly working on integration does slow down our pace a little bit.

4) What are your specific goals for the next week?

Again, I can’t say for sure before we have a meet, but I expect to be moving onto more core game logic this week, since the networking infrastructure is mostly completed.

5) What did you learn this week, if anything (and did you expect to learn it?)

I did not learn much this week. One tiny point worth mentioning might be the fact that I realized we can learn a lot by reading other people’s code thoroughly.

6) What is your individual morale (which might be different from the
overall group morale)?
My morale was still pretty high, probably because of witnessing our work finally being put together. I hope working more on core game logic in the upcoming weeks can keep my high morale.

Week 4 (1 May 2017): Team & Individual Reports

Overall Status

Our goal for this week was to integrate all parts of the game that we have been working on in the past few weeks, and present the first version of a fully working base game.

On the server side, we have finally completed the infrastructure for server-client communication. Now the clients can send user inputs to server, and the server will process those inputs, sending back whatever updates it has back to clients.

In terms of core game logic, we have completed basic unit moving and combat logic, and incorporated it into server. We now have a demo where a unit spawns from a key press, and moves automatically to a fixed point.

On graphics end, we have also made solid progress this week. The octree is completed, and we also have HDR bloom now, which makes our planets look pretty. Unit selection is mostly done, but not yet ready to be integrated into current game.

Group Morale

Our group morale doesn’t seem as high as it was in the first few weeks. We’ve seen a few days with barely any communication, code reviews, or commits done (although people might be working locally, which we never really know). Part of the reason might be the fact that we are no longer working on separate modules this week, but instead working on integration, where all our tasks are highly dependent on each other. Hopefully we can keep our high morale in the upcoming weeks with the infrastructure finally finished.

Individual Report

Brandon’s Update

Dylan’s Update

Ethan’s Update

Jessica’s Update

Raj’s Update

Sylvia’s Update

Jessica’s Update Week 4 20170501

1) what were your concrete goals for the week?
After discussing with the team, Dylan wanted to take on the user input. With no other unblocked graphics goals set in place,  I volunteered to work on our last week’s stretch goals of having the hdr bloom shader. In addition, Brandon wanted some optimization on the particle effects.

 

2) what goals were you able to accomplish?
I was able to finish the bloom and hdr shader so that our planets have a nice slight glow to them.

3) if there were goals you were unable to meet, what were the reasons?
I’m still a bit stuck on particle optimization. I wanted to work on the bloom and hdr first because it seemed to be more exciting, and put off going back to particles until the end. Brandon had suggested a linked list data structure of some sort, but I was still trying to understand how that would work. As of last night, I ran into the idea of something called instancing, so I was going to test that out, but as of now, it’s not working for me.

In addition, I lost a whole day of working due to a ridiculous situation.

*cue long backstory, but it leads into what I learned this week. skip to question 5 to get to the point*

On Wednesday, my laptop had lost charge and I couldn’t even turn it on anymore. I brought it home, hoping my parents would be able to fix it, and after disassembling my entire laptop, they decided that my charger was not delivering any voltage. My solution was to quickly order a new one on Amazon Prime, but with my parents both being EE alumni from UCSD who never want to spend extra money, they wouldn’t let me order it because they were going to fix my charger themselves. After cutting up my charger and bringing out the soldering iron to attach its wire to another charging cable, they realized the issue was in the head of the charger, not the wires. In the end, my dad told me to go buy a new one, so I ran to Target 5 minutes before their 11pm closing and bought a new charger for a whopping $66 just so I could charge my laptop and try to salvage some time to get work done.

The next day, I came home and wanted to charge my laptop so I reached into my backpack to pull out the charger, but it was not the charger I bought at Target. I thought it was strange because my dad already cut up my charger. I reached in again and pulled out the Target charger.

TLDR: My charger wasn’t working because while my real charger was inside my backpack, I had accidentally grabbed my old one that had broken several months back and taken it to school with me to use that day. Even though I should have disposed of it many months ago, I just left it out on the sofa the whole time next to all of my stuff.
4) what are your specific goals for the next week?
I need to discuss this with the team since we seem to have deviated from our original weekly plans, but we probably want to get some UI up and going.
5) what did you learn this week, if anything (and did you expect to learn it?)

After the entire charger fiasco, I learned several things:

  1. I need to be more organized instead of letting things lay around everywhere.
  2. If my laptop had been the issue, I would have lost some code that was locally committed but unpushed. My plan B was to pull the latest commit from github and work inside B220 or the VR lab where the tools I needed were already installed, and plan C would have been to steal my brother’s laptop to do work. That would have given me something to work with, but there would have been a lot of work lost. Note, that this is also still week 4 so time would be a bit more forgiving if I had to redo some stuff, but had this been in week 9 or the day before the final code freeze, my team would be in big trouble because of me. As of writing this, I realize that I need to PUSH OFTEN. If I made any valuable progress, I should also push anytime before I close my laptop or step away from it.

I also learned from trying to implement bloom in our graphics. I had actually tried to implement bloom in my 167 final project a year ago, and it failed miserably. Now that I’ve revisited bloom and reimplemented it successfully, I realized that I had misunderstood how to implement it the first time. Now I can implement additional post processing effects if need be.

6) what is your individual morale (which might be different from the
overall group morale)?

I was slightly frustrated on Wednesday while trying to get my laptop up and working again, but now that it’s charging and I managed to get most of my goals for the week accomplished, it’s back to my original level of morale. I’m not very emotional until I get stressed out or accomplish a big goal, so my morale will probably be a flat line during most of the development process.

Dylan’s Update: Week 4 (2 May 2017)

1) What were your concrete goals for the week?

Concrete goals for this week are to continue developing the graphical UI that will be used for gameplay, and to finish unit selection.

2) What goals were you able to accomplish?

I finished basic unit selection, but I implemented in a pretty poor manner. I am continuing to work on it tonight and tomorrow and will merge what I have in with my other changes that I made this past week once I test it more thoroughly. I finalized a lot of the logic and hierarchy for how game objects were going to be marked as drawable and how the client would actually go about interacting with their graphical components. This is the 3rd or 4th iteration thereof and I believe should be flexible and full featured enough to support everything we need and want to have. There were lots of problems with our previous iteration in terms of the client extending the core game object definitions to allow for more functionality and therefore messing with the server’s dependency. All of this is no longer a problem, and also allows for much easier development going forward as we add functionality and make optimizations.

I got a little too focused on doing optimization work and improving the code organization and structures and my work on the UI suffered as a result. I did some more work, but haven’t gotten anything more than simple windows and basic messages and the like working. I intend to make this a top priority as we move into week 5.

3) if there were goals you were unable to meet, what were the reasons?

Getting too focused on one aspect of the code or another was the primary reason I was unable to meet some of my specific goals.

4) What are your specific goals for the next week?

Next week I intend to get a nice informational display working in the UI that displays information about the selected unit. Getting the client to correctly order selected units with basic move/attack orders using unit selection is an additional goal. A stretch goal of mine is to refactor how we deal with textures and shaders to use a more extensible system that allows for a lot more optimization and ease of use going forward.

5) What did you learn this week, if anything (and did you expect to learn it?)

I didn’t learn too much this week. Most of my work was just implementing and debugging more with the spatial data structure to do culling / optimization work and doing ray casting with unit selection. I have done all of this before, but it was a little tricky getting everything working alongside the far more complex system that we have going than I’m used to in terms of graphical rendering environments.

6) what is your individual morale (which might be different from the
overall group morale)?

My morale dropped a bit this week just because I got hung up on a few bugs a lot longer than I think I should have, but I’m very excited to get the UI working and start really working on making the game look nice and getting all of the controls to feel right!

Sylvia’s update Week 4

What I Planned

As the Scrum master, I will be in managerial position to write the Week 3 team report, update the Trello board and hold the team meetings. We are in an important transition from abstract design to seeing actual visualization of (super early stage of) game play. With Professor’s guide, we moved many things scheduled for week 5 to be a week prior. I plan to do pair-programming with Raj on handling unit updates on the server side. We will be making a unit manager class to do all the update calculations for movement and attack.

What I Have Accomplished

  • Create a Unit Manager class which handles updates such as movement and attack
  • create unit destructors
  • visualize unit movement on the client side with dummy creation
  • got up-to-date with client and server logic through pair-programming

The Unexpected Factors

  1. Our planning started off with ambiguity because we were switching our schedules around. I felt a bit lost on how everything is going to be connected, but doing pair-programming helped counter that.
  2. I realized that there are a lot of inter-dependencies on features that other people are working on, and it partially constrains the progress we make.

For the Future…

In the next week, we will have most of the individual components for commanding and visualizing units ready. This include unit selection on graphical window, player command of unit creation, connection sockets between client and server, server side unit updates, and so on. We will be able to link all the components together and see how it works. I also hope to mock some units attacking each other, as well as getting to the concept and visualization of slot.

What I Gained

I realize that pair-programming is super efficient in terms of approaching an area of code that I am not familiar with. For example, I was concerned about understanding how the server and client work together. Ff I were to be working on this part alone, it would have taken so much longer. Working with Raj helped us nitpick each other’s errors and brainstorm the best way of implementation.

How I Felt

On one hand, I am really happy on seeing the progress of the team. We have the server-client connection established, hdr and bloom implemented on the graphics end, a full universe system in display (hopefully) and tested units flying from point A to B. However, it was also a rather messy week in terms of breaking down the tasks and keeping track of everyone’s progress. As a Scrum master, I feel little disoriented and perhaps waiting around too much for people’s progress. Even though I implemented the destructors, it was a very trivial part for the game, and I could have spent time on something more significant.