Home Specifications Weekly Status Reports Media

Week 4: April 27, 2020


Overview


This week, we focused our efforts on bringing together the various aspects of our project together. We had a group coding session on Friday to bring together our various parts, and mostly finalized our code structure going forward. We have also completed the migration from OpenGL to The Forge, integrating our previous server-client code into the new client code while also cleaning up header files involved in communication.

Group Morale


Our group was mostly held back by work from other classes this week, so we are still a bit behind what we planned. Now that we are working with a more stable code base, and that each group member a bit more caught up with the progress on other portions of the project, we're optimistic on how we will move forward.

Showing Off Our Screen Shots!!


More 3-D Models in Blender

Model Model

Server-Client model working with Forge graphics and Asset Loading


Individual Updates


Charles

Last Week’s Goals:

Work with Aditi to implement gameplay classes, such as towers, units, and teams

Completed Goals:

Kevin managed to get the forge working so I worked with him to understand how it works with our project and plan what work we needed to do to enable everything else to start working. On friday we had a group coding session through visual studio liveshare where we decided on what the data that's sent would look like and implemented classes to manage that data, among others

Unmet Goals:

I had to leave the meeting before I could finish the object management classes, and since then my time has been eaten up by other matters, so the management classes and gameplay object classes aren't finished

Next Week’s Goals:

I have a bit of catch-up work to do finishing the management and gameplay classes, and once they're finished, I'll move on to this week's goal of diversifying gameplay objects and working on the resources and crafting systems

What I Learned:

Across the span of a multiplayer game, a lot of data gets sent. What we decided on was that every object in the server's scene would send its data to the client for the time being since we don't need to worry much about bandwidth and our scene won't be that complex, but for a major multiplayer game, there must be a lot of data coming and going every fraction of a second. Makes more sense when a game lags for a little bit now

Individual Morale:

I'm a little worried about whether I'll be able to get this + my other work done, but past wednesday, I should have more time to tackle this.

Jimmy (Jiajian)

Last Week’s Goals:

Work on multi-client and server communication

Completed Goals:

Finished migration to forge and gained clarity on how to continue developing gameplay logic.

Unmet Goals:

Haven't finish multiple client and server communication.

Next Week’s Goals:

Finish up multiple client and server communication. Planning to do a multithread server side that handle each client input on each thread and each thread manipulating the global structure that encodes the state of the game

What I Learned:

I learned a lot about the Forge.

Individual Morale:

I was working mostly on my paper due next week and midterm. So, I didn't spend enough time on this. I will spend more time on the project next week.

Esther

Last Week’s Goals:

My last week's goals were to catch up on the unmet goals from the week before. This entailed designing more unit/character/tower variations and coming up with a backstory for the game.

Completed Goals:

I continued to model additional assets such as the male player base character and resource units such as a dumpster and recycling bin from which players can gather material to build towers and minions. I also exported some of models as gltf/bin files so that Kevin can test to see if they can render fine on the graphics client. Turns out they render okay and materials are also rendered fine! The only issue was the minion model which wouldn't render (ironically it was the simplest to model). But Kevin was able to resolve that by converting the files to OBJ and then convert back to gltf. So we don't really know what the original issue was.

Unmet Goals:

No backstory again :(

Next Week’s Goals:

I plan to model additional towers and start to get the map layout going before I proceed to model the environment.

What I Learned:

I learned more about the structure of our codebase although I haven't really touched it myself. Our team did a live coding session where one person also shared their screen on Discord so I was able to learn from watching Kevin how I could load in the model files into SceneManager.cpp to test. Although currently I'm not sure how I can boot up the entire thing on my laptop as I haven't tried yet. I am also becoming more efficient while working in Blender as I am starting to get a hang of it. In hindsight I realized that I probably shouldn't have started with the human character model as one of the first things to model because I could have gotten more practice out of modeling geometric objects first, so that I didn't have to be so slow when modeling something more complex like a human. I also learned how to do UV texturing from Kevin and online tutorials.

Individual Morale:

I'm glad that I can rely on my team. I kind of feel like I am getting carried sometimes because I am not very involved with the codebase so it is amazing what everyone has done to make things work. I do want to be able to understand how I can contribute to the codebase--I fear that I would probably end up breaking something due to my lack of understanding but I realize the best way is to communicate and ask questions. On the modelling side of things, personally I feel good and motivated the more I work in Blender because I am becoming more efficient with its tools.

Kevin

Last Week’s Goals:

Replace OpenGL code with Forge code and set up scene graph and more robust model loading system.

Completed Goals:

I completed last week's goal and ended up going a little bit farther. In addition to Forge integration and model loading into a scene graph, I also set up a scene management, and started working on the debug GUI, optimizations, and animation. I met up with Charles on Thursday to catch him up on the Forge so we have multiple people who could diagnose graphics problems.

Unmet Goals:

I met most of the goals I made last week, but there were some bugs in the model loading system that were somehow solved by converting files to obj then back to gltf.

Next Week’s Goals:

I would like to get basic animation clips exported from blender working, along with an animation state management system. If time allows, look into animation blending and debug displays for render targets.

What I Learned:

Optimizing buffer updates is difficult, especially when rendering many object instances.

Individual Morale:

I'm pretty pleased with progress on the graphics side seeing that the scene graph looks pretty robust. There are a couple bugs in culling, but I'm not worried about that for now. I'm a bit concerned about building the graphics application on computers besides my own since that's all I've tested it on, since it does seem to have SDK requirements to correctly copy certain library files. I'm also a bit worried I won't be able to have as much throughput next week since I think I might have a lot more things to do for other classes.

Aditi

Last Week’s Goals:

Work with Charles to implement gameplay classes, such as towers, units, and teams.

Completed Goals:

Finished migration to forge and gained clarity on how to continue developing gameplay logic.

Unmet Goals:

Still need to finish fleshing out methods in gameplay classes. Should have more time to finish that today (hopefully before the check-in tomorrow).

Next Week’s Goals:

Finish game management and gameplay classes.

What I Learned:

I learned more about what the structure of our game is going to look like with the forge.

Individual Morale:

This week was a little bit less productive than I imagined. I had a lot of other things on my plate. However, this week should be better and it should be easier to forge on now that we have our graphics foundation laid out. (see what I did there ;))

Hao

Last Week’s Goals:

Finishing up connecting graphics code and networking code and modify the existing code to accomendate multiple clients and add multiple threading features.

Completed Goals:

Finished up putting networking code and graphics code together and migrated to forge. Discussed on the list of player actions and what data need to be sent.

Unmet Goals:

Current code can't support multiple clients and connection does not work via the Internent.

Next Week’s Goals:

Finishing multiple client and multiple threading features.

What I Learned:

Through the group coding session on Friday, I learned more about the graphics. I learned about the general code structure, and gained a better understanding of what data is needed for graphics.

Individual Morale:

I was busy with midterms and bs/ms application this week so that I did not contribute that much rather than the group code sessions. However, next week should be way better and I am glad to see the progress we made as a group.