Raj’s Update: Week 9

What were your concrete goals for the week?

For this week, I planned to get score updates sent to the client, get those updates reflected in Brandon’s leaderboard GUI, then make sure that the game gracefully ends after some player reaches a target score. After this, I wanted to work on defining the scoring rules: e.g., how should we calculate the points awarded when a unit or city is destroyed. Also, I wanted to work on getting City population to grow and factoring that into the City’s production.

What goals were you able to accomplish?

 

Early in the week, I got the leaderboard updates communicating between servers and all the clients, which worked well with Brandon’s existing leaderboard implementation on the clients. This made it possible to establish an end-game based on the player score.

I also worked on fine-tuning some key gameplay aspects. For one, I enabled disabling unit spawning when players have insufficient resources. Second, I fixed a bug in combat that would cause the server to go down when more than one unit was attacking the same target. Further, I made sure that a unit’s client window, which details the unit’s stats, disappears when the unit dies. Lastly, I acquired audio for unit shooting, UI interactions, and explosions.

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

After some discussion with the team, we decided to move our focus away from game balancing and towards fixing bugs.

What are your specific goals for the next week?

First, I plan to connect the audio I acquired to the corresponding gameplay.  Next, I want to help address the severe lag on clients that are not running on the same machine as the server. After this, I want to do some important game-balancing issues that we noticed last week. And lastly, I want to play the game as many times as I can so I can weed out any latent bugs.

What is your individual morale?

My morale is high! Not panicking! Let’s finish this off strong!!!

Raj’s Update: Week 8

 What were your concrete goals for the week?

For this week, I planned to work on getting resources on slots and having those slots yield players a resource instance incrementally over the course of a game (as I mention in the next paragraph, Brandon already finished this the week prior). Also, I planned on tying up city and unit combat, getting city destruction working on the client-side.

What goals were you able to accomplish?

I got back from my interview on Wednesday morning, so my week was a little shorter. I was able to finish city destruction on the client-side and get it merged into master: so, units can now target and destroy other players’ cities, rather than just attacking other units. This finalizes the core of combat, as any new unit or city types will use the same fundamental combat logic.

Regarding resource allocation: Brandon finished this last week, which — being preoccupied with preparing for my interview — I was unaware of when writing last week’s update. Thus, I worked on getting player score updates to the client, efficiently. We only want to send these updates when the score has been changed, but also don’t want the server to be explicitly checking for changes on each tick. Thus, I’ve worked on a solution that mirrors what we are doing with combat updates: having the player tell the game server when its score has changed through a PlayerManager. I’ll be continuing this effort for this week.

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

I was able to meet the city destruction goal, but not the score updates. I’m planning on getting the latter up by tomorrow night though.

What are your specific goals for the next week?

For the upcoming week, I plan to get score updates sent to the client, get those updates reflected in Brandon’s leaderboard GUI, then make sure that the game gracefully ends after some player reaches a target score. After this, I want to work on defining the scoring rules: e.g., how should we calculate the points awarded when a unit or city is destroyed. Also, I want to work on getting City population to grow and factoring that into the City’s production.

What is your individual morale?

My morale is still high! I got the job! Now, I’m looking to put in extreme focus this and next week to finish our backlog!

Raj’s Update: Week 7

What were your concrete goals for the week?

For this week, I planned to start working on city combat — getting units to attack cities, and vice-versa. Further, I also planned to help Sylvia and Jessica with integrating rotation with the changes I made to Units and the Unit Manager. Lastly, I wanted to get the ability for Units to follow other objects and group unit selection added on the server side.

What goals were you able to accomplish?

This week, I was simultaneously preparing for my interview. However, I was able to finish most of what I got planned this week. City combat is up in a PR, which I hope to get merged into master by tonight. Also, during the week, I was able to help Sylvia work out some issues with combat animations on the client side. Further, we decided to not let units “follow” other game objects, but rather have the unit move to the location of the object when the selection was made. As that functionality is already implemented, I forwent this goal.

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

I was able to get through all of my goals for this week.

What are your specific goals for the next week?

For the upcoming week, I plan to work on getting resources on slots and having those slots yield players a resource instance incrementally over the course of a game. Also, I need to work on promoting a player to either destroy or capture a city that they have won, then handle the appropriate transfer of ownership on the client side. After this, all aspects of city and unit combat should be covered.

What is your individual morale?

My morale is still high! My interview went well, and since last week I finished all of this week’s homework in my other classes, I will be able to focus more time on the game!

Raj’s Update: Week 6 (15 May 2017)

What were your concrete goals for the week?

My goals for this week included finishing working out the issues with the combat system that I recognized late last week. I wanted to decouple combat from unit management, which would lay the foundation for integrating cities into the combat system. After this, I aimed to finish up the combat demo on the client, so we can get some visualization going.

What goals were you able to accomplish?

This week, I worked predominantly on setting up a unit combat demo on the client side. Earlier in the week, I was able to refactor our unit manager on the server-side so it could more elegantly and efficiently aggregate unit updates to send to the client. This solution also abates having the unit manager handling updates for other attackable objects that may engage a Unit, like Cities.  After that, I put together a quick client demo for unit-attack, which includes allowing one client select a Unit with the left mouse button, then select a target with the right mouse button. The attacking unit is shown moving towards the target, then engaging in combat (no animation, so it just stops), then the target dies.

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

For the most part, I was able to get through all my goals for this week. There were some changes made to camera controls and key handlers, so I will need to refactor my demo a little to get it working with those updates.

What are your specific goals for the next week?

For the upcoming week, I plan to start working on city combat — getting units to attack cities, and vice-versa. Further, I would like to help Sylvia and Jessica with integrating rotation with the changes I made to Units and the Unit Manager. Lastly, I want to get to adding the ability for Units to follow other objects and group unit selection on the server side.

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

Poor management of C++ iterators can present interesting bugs (cough, cough.. I mean features).

What is your individual morale?

My morale is higher than it was last week, since I was able to sort out some of the issues with the combat system and unit management in general. With some unit combat action going on the client-side, we’ve not got something that resembles a  game! I look forward to playing with what we plan to add this week!

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.

Raj’s Week 4 Update

What were your concrete goals for the week?

My goals for this week was to interface with Brandon, Sylvia, and Ethan to get some movement going on the server, then communicating that movement to the client. We aspired to have done the ability for clients to select an arbitrary unit and its destination.

What goals were you able to accomplish?

This week, Sylvia and I finished movement on the server and mocked up an example that illustrates updating movement propagates correctly from server-to-client. To get this done, we put together a Mediator on the server side that abstracts away how Units are updated (for movement, combat, etc.), set up two dummy units, set their destinations on the server side, then served updates of those units’ position to the client. We assured that the client received the correct updates through logging the differences. Also, we had the clients move two spheres, representing the units, to provide some visual assurance.

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

We haven’t finished Unit Selection on the client-side, but the graphics team got the core of this set up yesterday, so integrating this with unit movement should be done by today (Tuesday), given we have assured that unit movement updates are being communicated correctly between the server and client.

What are your specific goals for the next week?

My immediate goal for next week is to get unit selection done, working with the graphics team. Also, Ethan has set up the client-to-server updates (which we call “commands”), so the next thing after unit selection will be unit creation, where the client issues a “Create Unit” command and the server responds by creating the unit and sending confirmation to the client. Then, I will work with Sylvia to integrate combat into the server side, using the Mediator we set up for the movement updates. So, by the end of this week, we will hopefully have unit creation, movement and combat examples up.

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

I learned that my Windows VM doesn’t have access to my Graphic Card 🙁 — I think I have a solution to fix this, so I can develop from home again, but for now I’ll be spending a lot more time in the lab this week.

What is your individual morale?

My moral is high still. I’m excited that we have communication between the server and client (in that direction) working for unit movement. Looking at the team’s progress this week, I feel like much of the foundation has been set and much of the work for this week will be integration!

Raj’s Update: Week 3

What were your concrete goals for the week?

My goals this week were to set up the foundation of the game’s combat logic. This includes handling how units engage in combat with both cities and other units. Further, I aimed to better understand how we will be sending updates between the server and client

What goals were you able to accomplish?

This week, I implemented the unit-to-unit combat logic and am set up to complete the unit-to-city combat logic. Through development, I became more familiar with the Visual Studio development environment and developed a few tests for the combat logic using Microsoft’s C++ Unit Test Framework.

Regarding the overall design of the combat system, we maintain an interface that implements the foundation of combat (i.e., check if a target is in within your range; if so, attack, otherwise respond appropriately). Then, subclasses may implement interesting combat logic using one of the hooks that the interface provides. For example, there is a hook for being out of range to attack, which our Unit class overrides to tell itself to move closer to its target. These hooks allow us to handle special needs without rewriting the common logic.

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

I haven’t finished the unit-to-city combat logic yet. However, with the hooks I’ve implemented in the combat interface, extending combat to cities shouldn’t take much time. For example, by overriding the hook to handle defeat within the City class, I can tell the city to transfer ownership to the victorious player.

What are your specific goals for the next week?

My first goal for next week is to complete the Unit-to-City combat. Then, I will interface with Brandon and Ethan to hopefully get some combat going on the client by the end of the week. Further, I will be working with Sylvia to clarify aspects of the core game logic that are still ambiguous, then from there, we can set up a priority queue of tasks to finish on that end.

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

I learned a lot about developing in Visual Studio, being that I had worked predominantly on a Mac prior to this quarter.

What is your individual morale?

Overall, my moral is high still. Looking at the team’s progress this week, I feel like we’re getting close to seeing some (very minimal) game action going on the client, which will hopefully happen this week.

Raj’s Update: Week 2 (18 April 2017)

What were your concrete goals for the week?

I had two goals this week: help Brandon on networking and define an INI configuration parser.

What goals were you able to accomplish?

I completed the INI configuration parser. The implementation includes an extendable base class, so defining other parsers, if ever necessary, would require minimal code. (Explicitly, descendants must define the reading logic and a getter and setter that respectively handle `string` values.)

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

Having minimum networking knowledge and experience, I struggled this week to fruitfully assist Brandon in developing the `heliocentric` networking package, `SunNet`. Brandon knocked out the package like a champ!

What are your specific goals for the next week?

I aim to set up the server-side communication logic using the `SunNet` package and assist in core game logic development and design.

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

Through Brandon’s thorough walkthrough of the networking package design, I learned a bunch about the low-level, OS networking API and the challenges it presents.

What is your individual morale?

Overall, my moral is high. Looking at the team’s progress this week, I’m more optimistic than last week that this game is doable. However, I’m looking to ramp up my contribution and carry more weight.