Week 5: May 4, 2020
Overview
Since we just migrated to the Forge and it's pretty complicated working with the forge, everyone is trying to
run the
the code on their own machine. Most of us got stuck a bit but we all eventually got it to work. This week we
are mainly
working on animation and organizing the code.
Group Morale
This week our group is getting used to the Forge. However I think our game is almost playable. We got the
basic movement to
work and the server is able to accept multiple client.
Showing Off Our Screen Shots!!
We got a new male character
AOE Tower
Super Minion
Individual Updates
Charles
Last Week’s Goals:
Finish merging network, graphics, and gameplay in scene management and then implement and diversify gameplay
classes
Completed Goals:
The scene management merge is taking longer than expected, but it's almost complete. On the server-side it's
more or less done,
and on the client-side it's implemented but, as of writing, still being debugged. Once the client-side is
debugged, the core system for scene management will be complete.
Unmet Goals:
I didn't get to implementing gameplay classes, but Aditi has been working on that, so I think we're ok on that
front
Next Week’s Goals:
Once networked scene management is complete, I'll need to implement networked gameplay functions,
like collecting resources and building towers.
What I Learned:
Once again, all the different aspects of networking, graphics, and gameplay is definitely nothing to scoff at.
Any number of things can happen, like an unexpected number of bytes being read on the server or client,
or graphics not behaving as I expect it to.
Individual Morale:
I think we're in an ok spot. Getting networked scene management is a pretty big step,
so I think having a good system in place will be a big help. Networked gameplay will build on that system,
so it should be a relatively more simple implementation. I've got another kind of busy week coming up,
but I think I'll be able to get stuff done.
Jimmy (Jiajian)
Last Week’s Goals:
Use multithread to handle each player's input on the server side.
Completed Goals:
Tested server accepting multiple client sockets and have a basic skeleton of multithread.
Unmet Goals:
Haven't tested the multithreaded code yet. And I'm worried about compiling the code because I included the
library.
In gcc I would need to add the -pthread flag to compile. I don't know what I would need to add if we are using
the visual studio compiler
to compile.
Next Week’s Goals:
Finish up multithreading and have each client handling thread update the global structure of client inputs.
Then have the main server thread read the structure to update game states.
What I Learned:
I learned that handling user inputs coming from the internet can be very complicated because
the inputs can overwritten before the server thread gets to read them.
Individual Morale:
I think we are doing pretty good so far. At least we got to play the game a little bit while testing.
Esther
Last Week’s Goals:
I planned to model additional towers and start to get the map layout going before I proceed to model the
environment.
Completed Goals:
Modelled the male character and additional variety towers such as an AOE tower and a tower that spawns
minions.
Also modelled another minion that is more powerful that the players can spawn themselves possibly.
Unmet Goals:
Did not work on a map layout because I spent my time trying to make more variety of game components like
towers and minions.
Next Week’s Goals:
We have most of the core models ready so I plan to start designing the map layout and actually model some of
the environment
like ground texture and surrounding buildings. My biggest goal is to have idle and running animations done for
one of the player characters so that Kevin can test animations on the client. A side-goal is to get the build
running on my
computer so that I can test the rendering of the models myself for faster testing in case I make a mistake
exporting,
or if the model doesn't render correctly.
What I Learned:
Starting to learn how to do animations using the Blender action editor through online tutorials.
Individual Morale:
My "next weeks' goals" seems pretty ambitious but it's because I dropped one of my other classes by the Week 5
deadline
so now I have more time to dedicate to CSE 125! Dropping that class really lowered my stress level
(it was a class that I didn't need to take at all but decided to take it to "challenge myself" and indeed
I was challenged lol! I feel like I learned a lot but keeping it would just add more stress to the latter half
of the quarter)
I'm happy to see the drive getting populated with more and more models. Slowly but surely.
I'm a little apprehensive about animations though since the professor warned that that is the part that
usually takes the longest.
Kevin
Last Week’s Goals:
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.
Completed Goals:
I got the blender to client asset pipeline mostly functional (at least on my computer),
and animation and skinning seem to work with multiple bones.
Unmet Goals:
I wasn't able to work on an animation controller yet, or look into animation blending or debug GUIs.
Next Week’s Goals:
I would like to integrate animated objects into the scene graph for instanced animated meshes,
and create an animation controller to manage animation state (time ratio) to allow multiple instances to
animate
independently (currently all instances of same object animate the same).
If time allows, implement animation state machine with multiple clips, and possibly look into partial
blending.
What I Learned:
Asset pipelines are weird to get set up. Blender API was in python,
and The Forge's pipeline was an executable written in C++. There were a lot of intermediate files that
took a while to reverse engineer to figure out how to move from Blender's GLTF exporter to the Ozz format
(which The Forge uses). In the process, I had to note several restrictions on how the animated model should be
created.
Also I learned that scene graphs get really complicated when instancing with independent states gets involved.
Individual Morale:
I anticipated this week to be busy (two projects and a midterm), so I didn't expect to reach all the goals I
set last week.
Overall, with a single relatively complex animation working in the client (with a temp model),
I'm pretty content with what I was able to get done this week.
Aditi
Last Week’s Goals:
Finish implementing gameplay classes and get network and scene management connected.
Get the build to run on my dual boot version of Windows (for testing and faster development purposes).
Completed Goals:
Basic shells for the gameplay classes are complete and all functions are close to being done.
The server scene manager is working and the client is still a work in progress.
I have been able to build the server on my windows OS but I haven't been able to quite get the client and
the forge application running yet. I hope to get that wrapped up either today or tomorrow.
Unmet Goals:
I didn't get to get much work done on the scene management stuff, but since Charles has the server management
working,
I can now hop in on client and help debug whatever still needs to be debugged on that end.
Next Week’s Goals:
Hammer out details on what resources we are going to allow players to mine and
how many are going to be required to build each of the elements in our game.
This will help us to finish implementing the gameplay logic and just focus on expanding
the network communication to handle these gameplay functions.
What I Learned:
Debugging is a lot more difficult than it seems when networking is involved.
Sometimes the most unexpected factors in your code can be causing something to break and
finding it is a lot more difficult than just using VDB and GDB.
I also learned that getting projects like this to build on visual studio is non-trivial.
Individual Morale:
I definitely think things are coming together. I feel a little bit in over my head sometimes trying to
understand
everything that's going on with server client communications, but I'm hoping that spending some more time
working
with the scene management code will help clear things up. I definitely want to increase my contributions this
week,
which I think will be more possible as soon as I get the project to run on my computer successfully.
(Sorry no puns this week ;))
Hao
Last Week’s Goals:
Establish the connection between multiple clients and server. Fulfill multi-threading features.
Completed Goals:
I read through the networking code from Spring 2019 group 2. They have similar structures as we do.
From there I modified our existing code to have a multiple threads and each thread will handle one client's
connection.
I also spent a lot of time to configure my local virtual machine in order to build/run our project.
Unmet Goals:
We haven't tested the multi-client connection.
Next Week’s Goals:
Finish testing the multi-client connection and wrap up with mvp.
What I Learned:
I learned how to use trhead package in C++ and how to integrate it with the socket connection.
Besides from coding, I learned how to set up the environment for visual studio to work.
Even setting up the environement is much is much more complicated than I thought.
Some very small issue like different version of SDK may result in miserable failures when building/runing the
project.
Debudding seems to be much harder in a project of this scale.
Individual Morale:
I was very stressed when I can't get the project built sucessfully.
I feel much better while seeing the project running on my machine.
Shout out to Kevin who offered me so much help and guided me through the set-up process.