Week 7: May 18, 2020
Overview
Our infrastructure is pretty stable at this point, so this past week has been devoted to
developing the game logic and integrating together the visual components (models and map) with
the game logic code. Aditi, Hao, and Jimmy worked on minion pathing logic and attacks.
Charles finished all gameplay classes and is now in the process of developing object interactions.
Kevin worked on object/collision detection and particles system. Esther worked on modelling the game map in
blender.
Group Morale
Our team is feeling pretty good. We've completed several milestones such as pathing logic and
gameplay classes. There were a few live coding sessions and many of us were able to share and learn
new knowledge. This past week our group has experienced much more cohesion and initiative to
work together to put all the different pieces of the project together. We are excited to continue
the final stretches to get our MVP tangibly working.
Showing Off Our Screen Shots!!
Blender: Map model (with incomplete texturing)
Blender: Player's POV
Individual Updates
Charles
Last Week’s Goals:
Work with Aditi to finish up the implementation of gameplay classes so that I can finish player interaction. Get
started on expanding server->client communication to include game status and animation state information.
Completed Goals:
I took what Aditi had started with the gameplay classes and finished them up and added a couple more that were
missing, and now all the gameplay objects are instantiatable and renderable! Aditi, Jimmy, and Hao also got some
work done on attacking and pathing logic, and I fixed it some, and now minions are moving along paths too!
Unmet Goals:
I set hooks in place for when the background gameplay classes are finished in order to communicate that data to
the client, and for when Kevin finalizes what data he needs sent to the client to run animations and draw
particle systems correctly, but neither system is fully finished. Finishing them shouldn't be too much of a
problem, though.
Next Week’s Goals:
My goal for next week is mainly to finish up gameplay object interaction, specifically allowing minions and
towers to attack only enemy minions and towers, allowing entities to only be spawned in the correct places, and
allowing entities to die when their health reaches 0. This will require some expansion of the mapNode class and
the team class, but it's definitely doable.
What I Learned:
Gameplay is much easier to implement and debug haha. I don't need to deal with network error codes and locking
mutex's and different update rates. However, it does have its own complexity, and it definitely has a lot more
null pointer exceptions haha.
Individual Morale:
I'm cautiously feeling pretty good. I hit a bump in the road on Saturday and wasn't able to get much done that
day, but I still managed to finish most of what I had wanted to. I feel like we're in a pretty good state right
now, so I'm hopeful for this week. Kevin did say he's going to be busy this week, and he's been our frontline in
dealing with linear algebra and client-side rendering, so hopefully we're still able to keep up the momentum.
Esther
Last Week’s Goals:
I planned to model the entire map by next week based on the preliminary sketch. I also planned to texture map
all animated objects to replace the use of multiple materials. Lastly I plan to learn how to modify the client
code to test render animations so I can stop bothering Kevin every time I have a new model/animation file to
test. Side goal from last week: create animation for player characters when they are building towers.
Completed Goals:
I converted the initial map proposal into a fixed grid system to allow Aditi, Hao, and Jimmy to more easily
implement pathing. I modelled the map in Blender with the same grid system, and I was able to include the core
features like roads and buildings. I also learned how to test animations on the client side by following Kevin's
existing code.(Now I can test render without having to ask Kevin to do it for me :P)
I verified that all animations work! Just need to migrate from using multiple materials to using UV/Texture
mapping for our animationed objects.
Unmet Goals:
The map is not completely textured yet and not at the aesthetic level that I have in mind.
I found that my laptop couldn't handle UV Mapping and Texture Mapping objects with many and large mesh faces
well due to the strain on my GPU so it was very laggy trying to texture the buildings, hindering my
producitivity. I did not have time to texture map the animated objects yet.
Next Week’s Goals:
Absolutely need to finish up the map model and do integration testing with pathing logic that Aditi, Hao, and
Jimmy worked very hard on! Also need to texture map player characters and minions. If time allows, I will create
animations for player characters when building/spawning towers. And also animations for resources when player
interacts with them.
What I Learned:
I will most likely need to forgo some aesthetic goals I have envisioned in regards to the maps and my models
due to restrictions on what is possible to render on our client.
Individual Morale:
I had some personal issues to deal with last week that caused me to go into an unproductive slump for three
days. But I'm feeling back to normal this week and have my momentum back so I am ready to buckle down for the
final stretches. I really hope I can finish all this Blender stuff so I can contribute to game logic finally.
Kevin
Last Week’s Goals:
Work out collision/proximity detection and start building a GUI.
Completed Goals:
I think I was able to work out collision/proximity detection, implemented using spatial hashing and AABB
bounding boxes. These features were tested in a simplified environment.
Unmet Goals:
I ended up trying to work on particle systems instead of the GUI. However, I wasn't able to get particle systems
completely working. I am stuck on a weird issue where the color seems to be updating rather than the position.
Next Week’s Goals:
Finish up particle systems, integrate them into a scene graph, interface them with the communication protocol,
and complete the GUI framework.
What I Learned:
Instanced rendering can be a good optimization for objects drawn multiple times (like particles), but it's still
pretty tricky to do in practice.
Individual Morale:
I'm feeling mostly ok. The bug is a bit demoralizing since it seems to involve the vertex shader.
Aditi
Last Week’s Goals:
Worked with Jimmy and Hao to finish attacking logic and pathing logic.
Completed Goals:
We finished implementing the attack logic and designed a mapNode class that allowed us to implement pathing.
With some interfacing with Kevin's ObjectDetection class, we were able to finish implementing it. Charles helped
us polish and debug and pathing is now functional!
Unmet Goals:
None
Next Week’s Goals:
Debug and finish considering any cases in the attack and pathing functionalities that we haven't already. We
also want to finish up UI features such as a game lobby. I think we additionally have some work to do with
mining of resources to wrap up.
What I Learned:
I think this week was mostly about refining our object oriented design principles and organizing our code in a
way that made it easy to hook everything up together.
Individual Morale:
I feel pretty good about our progress this week. Pathing combined with Esther's blender map and Kevin's
collision detection code is really pulling things together! I think we also really need to buckle down this next
week and finish our development so that we can just test and play and add additional features in week 9.
Hao
Last Week’s Goals:
Work with Aditi and Jimmy to finish attacking and pathing logic.
Completed Goals:
Aditi Jimmy and I had several group coding sessions to get attacking and pathing done. We hard coded the path
for all possible spawn locations on the map so that minions would be able to move along the path to enemy's
base.
Unmet Goals:
We haven't tested our implementation thoroughly. For this upcoming week, we will work with Charles to make sure
the implementation is bug-free.
Next Week’s Goals:
My goal for next week is to finish up attacking and pathing. Besides from that, we hope to get the UI like game
lobby and game status display done, and hopefully, by the end of next week, to get the MVP done.
What I Learned:
While implementing the mapNode class for pathing, i learned more about the graphics code. We read through the
Player class to understand how to move a object from one location to another. I definitely feel more comfortable
with the matrix, velocity, rotation stufff etc. Also shout out to Kevin and Charles for popping in our coding
session to give us mini lectures on computer graphics :]
Individual Morale:
I'm feeling pretty good on the progress we had this week. I like the group coding sessions we had. Esther's
mapin blender looks very interesting, I can't wait to see it in our game.
Coding together definitely increases our work efficiency. With multiple people staring at the screen at the same
time, bugs like typos and logic flaws can be noticed and fixed very quick.
Jimmy (Jiajian)
Last Week’s Goals:
Work with Aditi and Hao to work on pathing.
Completed Goals:
We finished minion and towers attack implementation. Then we also finished implementation of pathing.
Unmet Goals:
None
Next Week’s Goals:
Finish up the UI design.
What I Learned:
I learned a lot about object detecting and other classes written by Kevin and Charles.
Individual Morale:
I feel we got a lot done this week, and we are close to have a completed game.