Ethan’s Update: Week 9

1) What were your concrete goals for the week?

My goals were to finish up tech tree implementation (last week’s version wasn’t really completed), music playing, implementing buildings and settlers.

2) What goals were you able to accomplish?

I completed the tech tree implementation and got it ready to be integrated with tech tree UI. I also finished up music player, which loops through the sounds loaded, and allows user to adjust volume with left/right bracket.

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

Obviously there were too many goals for me to finish this week, but building implementation is mostly done, and we’ve decided not to implement settlers anymore (which would be a non-attackable unit used for settling, and can be taken by another player if not protected). Instead, we will have a settlement limit to limit the number of cities a player can settle, which will increase as player progress through tech tree.

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

I aim to finish up building implementation, and settlement restriction. Possibly adding a menu/lobby to the game as well. That’s really all we can do before the demo. I won’t be working on debugging a lot given that I’m mostly working on last-minute features.

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

Didn’t really learn anything technically, but I did realize how good design makes development easy. Most of our design in this game are pretty good and were aiming for good extensiblility, which makes last minute features easy to implement. Good logging practice and error handling is really important for debugging as well. The project also starts to emphasize documentation and encapsulation. As the game grows larger, it’s hard for every team member to fully understand how other parts of the game work, which makes good interface design and documentation critical. I’m glad that I did a pretty good job in that respect.

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

As the demo is approaching, I guess we are at our most productive moment. I’m pretty excited for the demo this Friday, and I am confident that we can deliver a good game.

Ethan’s Update: Week 8

1) What were your concrete goals for the week?

My goals were to get background music playing when game launches, and finish up tech tree implementation and integrate it with current unit building mechanism.

2) What goals were you able to accomplish?

Tech tree is mostly done at this point. It’s up as a PR and allows player to research and unlock new technologies, which may unlock new units, unit upgrades (not in game yet), and many other powerful high-tech thingy.

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

Unfortunately I wasn’t able to get music working due to some technical issue using the sound library. I was blocked by dealing with linkage issue early on, and now the game will not find the dynamic library, which means it won’t even start.

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

Obviously our goal should be get the base game finished by the end of next week, so I would expect to have everything game play related done. I expect myself to be wrapping up tech tree and trading system, and integrate them into the rest of them game.

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

I learned about how to set up Visual Studio and use an external library, even though I’m still having some problem hooking it up with my code…

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

A bit disappointed by the little progress I made this weekend, but I’m fairly confident about us finishing the game, so I’m very excited to see what we can deliver at the end.

Ethan’s Update: Week 7

1) What were your concrete goals for the week?

My plan was to finish up trading system, and implement the tech tree before getting them integrated with UI.

2) What goals were you able to accomplish?

I managed to finish the trading system with its basic functionalities, and a working tech tree that doesn’t do anything in the game yet.

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

I pretty much met all my goals this week, but I am a little behind schedule in terms of the progress on tech tree. I thought I should get tech tree integrated into unit production, but I didn’t have much time over this weekend to work on it, and we haven’t discussed much about how it should work either.

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

I’m hoping to finish up all basic game play implementation this week, as we don’t have much time left before we should produce a basic working game. All features we have at this stage are just proof-of-concept. I really want to get all of them settled this week before we start to actually put the game design down.

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

I didn’t learn much this week, but I did learn a trick to avoid circular dependency by forward declaring a class. I also learned, surprisingly  for the first time, the difference between including a header in a header file against including in a source file.

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

My morale is as high as before, as we are getting closer to finish the base game. With the UI being laid down, we now can see what the game will eventually look like, and I’m pretty excited about it.

Ethan’s Update: Week 6

1) What were your concrete goals for the week?

My goal this week was to finish up the basic trading system, and potentially get started with implementing tech tree.

2) What goals were you able to accomplish?

I did manage to finish most of the trading system. The core functionalities are there, but there are still quite a few refinements waiting to be done. Now players can send a trade deal to another player, and the other player will be able to choose to accept, deny the trade deal, or to counter offer a deal.

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

As I said, the trading system isn’t “completely” finished yet, and I wasn’t able to get tech tree started yet. I probably should’ve put more time into getting trading system finished quickly, but I was busier over the weekend than I imagined.

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

Definitely I will need to get tech tree done, but still not sure what should can I do — I’m definitely willing to help with what other people are working on. We don’t have much time left, but we still have lots of features to implement in this game, not to mention that we might need quite a lot of time to debug.

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

By diving into networking more thoroughly, I got more familiar with how to deal with unique_ptr and shared_ptr in C++. They’ve been there since the very beginning, I’ve heard of them and I searched C++ reference for how to use them, but never really used them in this game until I started dealing with interplayer trading, which deals with quite a lot of data transmission. I learned quite a lot from the discussion with Brandon about how to design the trade system as well.

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

My morale is as high as before. I was a little bit down when I found trading system to be much more complex than when I took this task, but it turned out to be quite fun to design it. I’m quite happy to have it mostly done.

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.

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.

Ethan’s Update: Week 3

1) What were your concrete goals for the week?

My goal was to implement a timer that allows the server to process updates every 30 ms, as well as processing all incoming updates from clients. Code reviewing will also be a big part for this week, as I didn’t do as much last week.

2) What goals were you able to accomplish?

I finished the basic logic for the server to run indefinitely in a loop, processing every certain amount of time, as defined my user, and showed how to create a separate thread to terminate server correctly. I also reviewed most of the codes submitted on Github, including some from last week that I did not review, which helped me understand what’s going on in other parts of this game.

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

I was not able to finish handling client updates because we did not clearly define how would clients send updates/commands to the server. I have the basic logic down in server, but my full implementation was pretty much blocked until we have some further discussion on server-client communication.

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

Since we assign work during Thursday meetings, these are just my personal expectation. I expect to be working on further developing the basic infrastructures for server-client communication. Probably work on the game launcher or the lobby system as well, which was planned to be done by week 4.

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

The most thing I learned is how important code reviewing and documentation is. All of us have been working a lot since the very first week, and it’s quite hard to keep track of what other people are doing. It took me quite a while to get how exactly the networking library (aka. SunNet built by Brandon, which was definitely a fantastic job) works. Having detailed documentation would significantly decrease the time people have to spend learning other people’s code.

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

Again, our morale is pretty high at the moment. I can see all our team members have been putting lots of effort into this game. We seem to be assigning lots of work for this week in our original plan, but since we got ahead of plan last week, we were able to keep up with it for this week. We haven’t encountered any major problem yet, but I guess we will have to deal with them at some point as the game grows.

Ethan’s Update: Week 2

1) What were your concrete goals for the week?

My goal was to implement classes for basic in-game objects, including different types of units, and base classes for them. I also proposed to add a utility class where we can put all shared utility functions such as debug logging. Aside from those I planned to keep working on game design, which I started from week 1, and help with building networking infrastructure.

2) What goals were you able to accomplish?

Sylvia and I designed and implemented a hierarchy for all game objects, and I finished the implementation for a base Unit class as well as a sample concrete unit class derived from base Unit class that represents an in-game unit. I also added a Lib class that contains two basic utility functions useful for all projects.

In terms of game design, I decided to put that on hold after some detailed discussion about combat system, as we have the basic game design drafted already, and the detail of all game design aspects won’t matter until we finish the baseline for the game.

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

I didn’t manage to help with basic networking infrastructure because implementing classes took longer than I expected.

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

My goal for next week is to keep working on debug logger and other utility functions, while start to help with finishing networking layer, and start building the server.

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

Not much that I learned programming-wise, but I did learn how to use Pull Request on Github, which I pretty much have never used before. It turns out to be really useful for code reviewing and communication throughout a group development process.

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

My morale is pretty high. I’m very excited about this game. All our teammates worked very hard in the past week as well, and we are sticking to our plan at the moment.