Week 6 Update

This looks really janky, but it’s exactly what this test animation was supposed to look like. Bonus point lights!

Individual updates

Shane

What were your concrete goals for the week?

Full full integration, multiple clients, basic map generation, flag pick up mechanic

What goals were you able to accomplish?

– Full full integration

– Saving multiple clients have been tested and confirmed to work, more testing is required for controlling multiple clients at the same time though

– Didn’t get mad at Boost a single time this week. I think this might be because I have reached the fifth and final stage of Boost mastery: Acceptance.

– Passed the torch of debugging pain to Thomas and the animation team.

What are your specific goals for the next week?

– Fix map generation and make it actually work. Randomize levels generated using online algorithms for generating rogue lite dungeons.

– Fix collision with James.

– Rewrite client side architectures. It’s bad, really bad.

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

The more stuff we do, the more stuff there is to do. After just figuring out integration, we now need to think about the initial client server handshake, sending back client ids for each client to register, acquiring the pregenerated map, move things to async so we can plan for future pre/post game lobbies, how to handle client quitting and rejoining, what happens after the game finishes, and many more 🙂

Apparently my internship starts in 2 weeks. I did not find out until this afternoon 🙂

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

No malding over Boost == couldn’t be better

Suddenly discovering 35 new problems to solve == couldn’t be worst

So overall, I feel not bad, but the limited amount of time left is getting scary O_O

Thomas

What were your concrete goals for the week?

I wanted to finish the different types of lights in the rendering engine and finish animations!

What goals were you able to accomplish?

We got animations working!!!! Sheila and I spent a LOT of time banging our heads against a wall here. We were following the LearnOpenGL tutorial to get started, and it was really helpful to conceptualize what we needed to do.

If there were goals you were unable to meet, what were the reasons?

I didn’t finish spot lights, since we decided to focus on animations.

What are your specific goals for the next week?

Clean up our somewhat messy animation code, and merge it into main. We should also finish directional lights, since that’ll be nice to add some flair to the game’s visuals.

We need to consider making multiple shaders for animated and static models, and how we want to handle them differently.

I think we should also get some basic UI code working, and I need to do some reading about the best way to get that set up.

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

Debugging code on the gpu can be a PAIN IN THE BUTT. Since we are doing our animations in the shader, it’s difficult to see exactly what is getting passed in. The tutorial we were following used an ivec4 to represent the indices of the different bones to apply to a vertex. We thought everything should be integers, right? So we should use GL_INT as the type in glVertexAttribPointer, right??? But after many hours of debugging we tried changing the type in glVertexAttribPointer to GL_FLOAT, and somehow everything just worked. I don’t understand what conversion it was doing, because GL_FLOAT and GL_INT are both 32 bits. But for some reason it works perfectly fine, even though the values are all ints and they’re passed into an ivec4. I suppose glVertexAttribPointer just refuses to work with GL_INT, idk.

I really miss CUDA, it makes this stuff so much easier.

“LOL this is boost 2.0”

–Shane

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

Before finishing animations: I was getting pretty frustrated and feeling like we weren’t making progress.

After finishing animations: Pure dopamine, I’m super excited to see what we do next.

Sam

What were your concrete goals for the week?

Start working on some gameplay mechanics, full integration of quadtree collision on the server-side 

What goals were you able to accomplish?

With the help of James, we were able to accomplish a very crude version of collision happening on the server where the camera stays still if it is colliding with another object (no more passing through other entities like a spooky ghost!). I was mostly brainstorming code and designing the data structures for the other code needed for the gameplay mechanics but I wasn’t able to achieve some of that. 

If there were goals you were unable to meet, what were the reasons?

Integration of the quadtree onto the server took much longer than I thought, and there were a lot of bugs when it came to running it. There was this one bug which counted the world itself as a hitbox and so we were always colliding with the world (as we should). This delay meant that I wasn’t able to start developing features for the game mechanic and since my birthday also happened to be on this week I was basically MIA for a day and unable to work. 

What are your specific goals for the next week?

Actual gameplay 

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

C++ is a fickle beast, and if you want it to perform A, it will perform B no matter what you try 

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

Since integration is now happening at a much faster pace, I can slowly start to see how everything is supposed to work together and it’s giving me a lot more hope and I can actually understand how things are supposed to work (bless, because I don’t have any experience with networking). However, I’m also a bit scared since it’s already week 6 and we don’t actually have any gameplay yet, but I believe that we can make something happen.

Sheila Pham

What were your concrete goals for the week?

Our goal for the week was to get animations to work, at least get something to move. 

What goals were you able to accomplish?

Yes, after almost a week of pain and suffering from trying to make sense of the tutorials online, deciding how to set up our structures and unpacking all the information and getting the ones we  need for skeletal animations, we were finally able to get some sick cubes to bend and flop on the screen from blender.

If there were goals you were unable to meet, what were the reasons?

One step forward, twenty steps back, and two steps forward. The rigging of the female model with her knife and the animation of her walk cycle is not loading correctly. She will have to be re-rigged before she can go on her killing spree. 

What are your specific goals for the next week?

I need to remake her skirt, and will not use cloth simulation for this round, unless I have more time to play around with it. She needs a new skirt. I am going to make a new and simple rig for the girl. I will also need to properly parent the bones to certain parts of her body or weapon. After, I will remake her walk cycle, and more animations like dabbing, running, idle, death and attacking.

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

I learned that the shader is very fussy with passing in certain types. We were trying to use an array of ints (which stores indexes to another array of matrices), but the shader was NOT HAVING IT.

We had to change this line…

glVertexAttribPointer(3, 4, GL_INT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, boneIDs));

…to this line.

glVertexAttribPointer(3, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, boneIDs));

And it magically MADE EVERYTHING WORK, after 6 hours of debugging and passing in colors to the shader to debug because it cannot print statements or use the visual studio debugger. 

Also, Assimp importers can just die on you and you lose the pointer to access this thing you need. Yeah, we had to save what we wanted to another variable.

For blender’s part, I learned more on how to export more things like animation in the collada (dae) file and how to read it too. A blender dae file will have animations by the name tag <animation> somewhere. To make sure that tag shows up, I had to make sure the armature had something in the action tab, not just in the niaTrack.

This one has an action in the action track, the one above has “no action”

I also learned how to combine multiple action tracks into one big action, since I noticed that the animation was missing other components that move each individual part in the keyframing process. I had to select everything and “bake the animation” by going to the Object mode, selecting all the object, like the cubes, armature (bones/rig). Do as below

You can see two NIA tracks. I want to make them into one action by doing the above.

This is how I combine multiple NIA tracks and action into one so I can export it. Not the best way cause I don’t know any better. ¯\_(ツ)_/¯

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

I wanted to scream this past few days. The code broke somewhere, I don’t know why and how. Some was due to circular dependencies, other because of losing the memory access to those pointers. But there were times when it just stopped loading, so we had to bomb our directory and re-pull from GitHub. I LOVE GITHUB more as the days pass by.

But I feel like a huge weight has been lifted off my shoulder now that animation is working, because now, I have the power to goof off and make more dank animations.

James

What were your concrete goals for the week?

Get map generation working.

What goals were you able to accomplish?

Sam and I were able to move collisions onto the server, and get them working with at least 2 cameras. 

If there were goals you were unable to meet, what were the reasons?

This week definitely was a slow week for me due to midterms. Shane and I were able to start working on map generation; it isn’t working yet due to issues with serializing glm::mat4’s but we are close.

What are your specific goals for the next week?

Hopefully, we’ll be able to have some sort of map generation working. Additionally, I hope to be able to start some gameplay mechanics, such as having a score board, getting flag capturing to work, etc.

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

I learned a little bit about how networking works and how to send things over the network.

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

Same as usual, some concern about getting all of it done in time.