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
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.