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

1) What were your concrete goals for the week?

Box selection and highlighting selected objects.

2) What goals were you able to accomplish?

I got box selection done, but it’s a little buggy so I want to tweak the parameters before I merge it all in so it matches up with what the player sees better.

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

I was unable to get box selection merged in and didn’t get to highlighting selected objects. I lost a lot of time and have had lots of difficulty working due to being sick, which I definitely didn’t plan for.

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

Merge box selection in, try to get unit highlighting working, and then help with anything else the team needs help with or determines is high priority.

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

I didn’t learn much at all, just implementing box selection and resting.

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

Very low, and hoping that the doctor’s can determine what’s wrong so I can get better quickly and get back to contributing as much as I’d like!

Dylan’s Update: Week 7 (22 May 2017)

1) What were your concrete goals for the week?

Learn more about the UI library, add more UI functionality, and implement box selection.

2) What goals were you able to accomplish?

I implemented an overlay window to display player resources and the client’s framerate after a lot of struggling with the UI. The library isn’t very intuitive when it comes to anything more than a really simple window setup, so it forced me to learn quite a bit about how it works and what the available operations are. I made some changes to how we store spatial data to fix some very rarely occurring bugs now and safeguard against bugs in the future as they would grow increasingly frequent with the old strategy. At the request of a couple team members I implemented some visual aides to debug mode to make debugging client code easier.

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

I was unable to complete box selection. I still have a preliminary implementation from long ago that needs to be updated, tested, and tweaked, but it isn’t quite ready yet. My unexpected, extra work combined with an extra busy week and an unwelcome illness put me behind a bit, but not by too much. Hopefully it clears up and I will be back to full productivity!

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

Box selection, highlighting selected objects. Depending on our team meeting I might end up needing to work on getting objects of each player to display differently.
Stretch goals are lobby window/system.

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

Most of what I learned was just about how to use our UI library and about how it works internally. I definitely expected to learn these things.

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

Definitely high. The game is starting to look a lot nicer, and we are getting lots of important functionality in faster and faster!

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

1) What were your concrete goals for the week?

Get the UI linked and working with basic windows, finalize unit selection and orders. Adding a basic lobby system and box selection were stretch goals.

2) What goals were you able to accomplish?

I was able to link the UI after some pain and quite a bit of tinkering with openGL loaders and dependency building. I added some basic windows as examples that display information about your current selection and set up a lot of infrastructure for further UI development. I also refactored the camera system quite a bit to allow switching between free and orbital camera modes with some QoL improvements for each as well.
I spent some of my extra time doing some serious client optimization, reducing our memory usage by quite a bit, speeding up loading, and improving the framerate, etc.
I made some progress on box selection as well, but it still needs some time before it’s ready.

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

I finished all of my specific goals and even did some extra work on top of them this week.

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

Lots of UI improvements. More windows with better information, buttons to do in game actions, displaying unit statistics when units are selected, context menus, etc.
Finish box selection.
Stretch: Get some kind of basic lobby system with other players information visible.

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

I learned that Nuget package manager is beautiful and manually adding and linking dependencies can be a pain. I learned about openGL cross platform loading and that you can pass C++ lambdas to C style APIs which let me strip a lot of ugly code that was shielding us from some gross GLFW stuff.

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

Very high! Got lots done and set up a lot of solid infrastructure to make further development on the UI and camera movement really easy as well!

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!

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!

Dylan’s Update: Week 3 (25 April 2017)

1) What were your concrete goals for the week?

A failure of mine was actually in defining my concrete goals. I left them very abstract this week. One concrete goal was definitely to push the long list of PRs through that we started the week with, being mostly concerned with the huge ones with lots of conflicts. Other concrete goals for me were to finish the octree implementation that we would be using for unit selection so I could start testing UI and control schemes better.

2) What goals were you able to accomplish?

I was definitely able to help get the PRs pushed through. I was also able to complete a much needed refactor of our client code. At the beginning of the week, we were still using the poorly organized code that I used to throw the initial demo together and we were starting to feel some pains involved with managing everything on the graphical side. The client code was split up between the main function and a massive static only Client class. I initially used this setup to play nicely with GLFW, our openGL wrapper, since it is strictly a C-style API and doesn’t like member functions at all. This week I changed this to make Client a regular class and add a static GLFW handler class to handle setting up and keeping track of callbacks. I’ve also done some further abstraction to move code out of Client, such as making a generic Camera class to handle view and perspective information that can be passed around. Though this was not in my initial goals for the week it was a lot of much needed changes that I’m glad I completed.

I additionally completed the Octree implementation. It is a little inefficient in that each frame it must be reconstructed instead of doing more efficient object sized updates to move things around in the data structure as their positions update in world space. Due to the nature of our game, almost all objects will be moving each frame and doing a full update every frame won’t be too far from what the updates would be anyways, so I’m choosing to use my development time now for more important, pressing matters.

I started on a simple UI, but was unable to complete my goals of a rough implementation this week. I will continue this as a priority next week.

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

My failure to complete the basic UI was entirely a result of a busier than expected schedule this week for me. Poor planning of my other assignments as well as some prior engagements reduced the number of hours I was able to put in this week. I expect to work quite a bit more than usual to catch up, if not get ahead, next week.

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

Next week’s goals are to work much more on the graphical UI. I want to have a smooth UI that is easy to add to as we move forward, that is capable of displaying the basic UI information that we are anticipating thus far.

Another goal of mine is unit selection. Now that we have some client server communication going, I want to be able to create units on the server and select them on the client using ray testing with the spatial data structure we now have, and then issue commands related to the selected unit back to the server. We should also update the UI with information about the selected unit.

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

I learned that UI in openGL is not as easy as anticipated! There are a lot of options and I’ve spent a bit too long trying out various options. Otherwise everything I’ve been learni

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

My morale is still very high, though a bit lower than last week, mostly due to me being a slacker this week! I feel excited about my work for next week, though, and am looking forward to see our game progress!

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

1) What were your concrete goals for the week?

My concrete goals for this week were to add some abstract classes to the Core library that was being developed that the Client would make use of to render as the server sent updates, and also to set up the groundwork for handling network updates.

2) What goals were you able to accomplish?

I set up a lot of basic classes with half implementations so that I could start connecting everything properly, even if not all the data or functionality we would eventually want was there. I added Update classes that the server would be using to push updates to the client, added a very basic implementation of unique ID generation for both the server and client, added basic interface for the client to render game objects that wouldn’t interfere or slow down the server’s processing (however, it will have a minor impact on memory usage).

After writing a bunch of these classes I changed the visual studio project and solution settings such that our shared libraries, Core and SunNet, would output static libraries instead of executables, and our two application projects, Client and Server, would link with the header and library files of these projects so that their code can properly be used.

After linking everything together I had hoped that a couple of PRs would be fleshed out and merged, but they were still under review and being changed. That is, the model rendering and loading that Jessica was implementing which added a lot of great changes that I would want to make use of in the Drawable interfaces I added, and the Core libraries that I had pulled into my code to make use of despite not being merged with master from Ethan and Sylvia. So my code is currently waiting behind those two to get fixed up and merged in once those changes are finalized.

This meant that I was blocked on finishing this changeset and so I looked for something else to do and decided to jump ahead a bit and work on implementing the Octree that we planned to use for both rendering efficiently, and doing unit selection in the client. I completed my initial, fairly inefficient implementation and just need to more thoroughly test it now.

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

Although I completed basic implementations for linking things together, I was unable to thoroughly flesh out the graphical interfaces to sync up and draw on the Client with by the end of the week. This was both due to time and a failure on my part to talk more with Jessica about her changes and maybe pull them in ahead of them being merged. I was unable to complete an Octree implementation that successfully updates over time, and in its current state must be completely rebuilt each frame. This may or may not be sufficient since so many of the objects in our game will be moving so much anyways.

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

My specific goals for next week are to finish the implementations of the Update classes so that they work properly with Brandon’s network code and to fully implement the update handler’s on the client. Additionally this means syncing with Jessica’s changes in order to finish the Drawable interface and then writing the code on the Client’s display loop to start drawing everything we are getting from the server. Additionally, finalize the Octree implementation and implement unit selection with the mouse, and along with that the orbital camera movement mode.

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

I learned quite a bit about implementing spatial data structures during the octree implementation. Though tricky, I think I found a good middle ground between performance and design complexity. I can always go back later and update it if we find it isn’t meeting our demands.
Additionally I learned that group coordination is not easy, and slacking a little on PR review is a great way to really slow the whole group down, and I plan to stay more on top of that in the coming weeks.

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

My morale is very high at the moment! We made some great progress this week, and everyone is showing great enthusiasm for not only the game, but the development process. On the client side of things specifically, Jessica churned out some massive, high quality changes this week that I really look forward to using in my planned work for this next week!
There have been some growing pains with the development process of the group, but things are starting to move more smoothly and I’m very optimistic!