Skip to main content

WEEK 7


Group Blog


Over the course of this week, we fixed up and integrated many of the features we were working on from last week. AI and decals have been merged in, the server serialization code was redone so that component data can be sent to clients (allowing the new gameplay features to work on the server side and allow us to optimize the amount of data we send [only variables that changed]), and the level loader now correctly imports transformations, hierarchy data, colliders, and even animations. As a result, we now have a level you can run around in as an actual character from the game.
For next week, we plan to get the later levels done with all their components wired up so that we can start demoing the game, while continuing to improve on our graphics, menus, and other features.

Blog


Alex Hawker

For this week, I had planned to do SSAO, Crespular Rays, Foliage Rendering and perhaps a bit on Cloth Simulation. Instead, I pivoted my focus to the scene loader and animations. The scene loader now properly handles transforms and parenting (thank you to Stephen for his help figuring out the right rotation and tracking down a very elusive bug), components are able to be loaded properly, old loading methods were cleaned up, and we can more easily load in animations now (which also now have root motion!) Along the way, I made several optimizations to the graphics (e.g. fixed no stencil buffer for the point light speedup, avoided updating perspective matrix unnecessarily on FBO switch, etc.). I also fixed up decals (normals now work in all directions) and added some profiling code.
Goals for next week are to get to SSAO and hopefully Cloth Physics, add Animation Blending (smoothly play between two animations), and help with general polish. My morale is pretty high, as we actually have characters now and should be able to start testing over the course of next week!

Ara Jermakyan

This past week’s improvements instantly surfaced the flaws of our communication between client and server. Any sort of transformation or event triggering on the server side had no real way of being activated on the client side, especially since the only real thing being sent over was the transform tree and player controls. This weeks goals were to tackle refactoring our communication protocols, and integrating all of our changes onto this new methodology. This new method involved sending deltas to specific objects that had updates.Before, the objects were only accessible through traversing the tree hierarchy; now we created an index table to allow direct access to update. In addition, we added a check to determine if a delta has been applied to each object to determine whether to serialize the data or not. This solved two problems: reducing the footprint of the tree (rather than sending transforms for a 100 objects of which 99 were unmoving, we will only send 1), and allowing direct access to the game objects. On top of these transforms, we enabled functionality to serialize each objects components. With this in place, any component that needs to be serialized can easily implement the necessary methods and automatically be included. With all of this in place, we needed to merge everyone’s code together. AI integrated seemlessly. Currently the branch with the scene loader has introduced some new bugs in terms of non-functioning gameplay, but the core basic movement still works in the client/server model. Due to timelining, we did not get enough time to completely merge this new branch for this week, and thus will be pushed to next week. Next week’s plans involves cleaning up any loose ends on client/server integration, and beginning to assist with component creation in Unity, so custom made components will automatically be available when the scene is loaded.
Seeing the game with all of its models/textures running with server/client integration was really the highlight of the week. Morale is very high.

Arno Gao

What I did: Wrote in code to do animation states and have the object’s state reflect the animation’s (which indicate what is physically possible). Thought through a lot of the details and assumptions that are required for a state machine of this sort to accompany min time for animation and transitions between animations. As well as dealing with buffered state change requests and how an object is going to indicate it wants to change states. Turned out to be more complicated than first imagined. Was able to talk with Alex to build up the abstraction complexity to handle more cases. And then talked to Stephen to bring it back down to earth, only taking on what we need.
My unaccomplished goals: Did most of what I wanted to do.
My new hopes and dreams: Integrated it with how the current animations work and do some thorough testing
Morale: GOOD

Austin Sun

My goals for this week were to start revamping the sound engine and try and get it fixed on firefox as well as start working on more sound design. I continued to create more sounds for the game as well as starting to get them integrated into the demo to make sure its ready. Stephen recently presented me with a list of suggested sounds in order to let me get started on the more difficult time consuming sounds to make.
Due to the time crunch with finals and the end of the quarter on the horizon, it's really starting to get hurried. I'm feeling pretty good however and with grading out of the way I can start to contribute more on the gameplay aspect of the game and not just debugging and sound design.
This week my goals are to be able to get all the sounds for the game in by the weekend and get at least some temporary sounds in for everything so that we have a proper experience ready when we need to demo it and get testers. My morale is high and I'm starting to get really excited with how the game is progressing

John Pellag

My goals for this week were scene building and modeling. Like last week, I was able to make a number of assets for a level, and continued working on building the level with Stephen. I’ve started creating a number of assets for more detailing as well as larger “set pieces” for some of the bigger parts of the game.
As we are approaching the last few weeks, there will be more pressure to build out the level. Right now, I’m just working on creating models as need be and using them as needed. As we start to figure out the layout of the level, I can go to work detailing it for the final game.
This week, my goals are the same (and probably will be more-or-less the same for the rest of the quarter). I’d like to see a one or two “set pieces” in the game by next week. My morale is high and I’m getting excited to see where the final game is going.

Justin Chou

This past week we hoped to update and modify our existing server/client networking code to send not just the transforms of the game objects but also serialize and apply information of various components such as sounds and lights such that it can be synonymous across all clients as well as support specific client component triggering. This issue arose when trying to trigger a 2d sound for all clients to hear and we realized that it was not possible as we are not sending that info (the sound was technically triggered to play on just the server). In addition, we hoped to integrate as many gameplay changes with the server as possible.
We were able to revamp the way we were sending server/client data and am able to trigger specific events on client from server. This involved saving a dictionary of game objects indexed by their id’s on both server and client. Server would go through all the game objects and send only data that has changed. Furthermore, we integrated the other gameplay branches including AI and door events. We also worked to get a server game scene reload functionality but ran into many blockers/stack overflow errors that need to be resolved.
For next week, we hope to have server and event components integrated with the newly developed game loader. In addition, we hope to get familiar with unity so that we can create prefabs of our gameplay objects so that we can easily create new levels.
My morale is great. Seeing John’s assets and models load into our game was really amazing.

Stephen Trinh

My goals for the week were to continue the development of the AI and the design of the set pieces.
To start off, I got side-tracked by higher priority tasks that arose such as getting our scene loader from Unity working. Alex and I spent quite a bit of time trying to debug what was wrong with our scene loader, and we were able to eventually figure it out. It was a combination of two things: the way we were changing from a left-handed coordinate system in Unity to our right-handed one, and the colliders in our engine incorrectly using the world positions to set the local positions of its game object. Debugging is fuuun!
The AI hasn’t really been worked on that much. The only thing I really did was fix the cases where the AI might traverse off the navmesh (causing it to just be stuck outside), and when the player being chased ends up off the navmesh (causing the AI to stop moving until the player walked back in). The fix was, for the first, to move the AI back into the navmesh and, for the second, to have the AI move to the closest spot on the navmesh to the player.
I’m relatively happy with how the design of the set pieces is going. I feel like the ideas we have in mind for the environment/architecture will make for some great “wow!” moments. The main issue I’m still stuck on is the fact that progression is directly tied to a scarce resource, the player’s health. Making the resource not so scarce takes away the tension of being hurt, and leaving it like it is restricts the design space I can work with because of the possibility of deadlocks. I feel like the answer is to separate the gameplay into two phases, fast and slow. The fast phases are the ones we had in mind at the beginning, where the players make their way through a maze while being hunted by the AI. The slow phases are the ones where the players solve a simple puzzle to progress further into the dungeon. The separation allows us to make having the ability to sing inessential to progression in fast areas to maintain tension (since we don’t have to heal players), while giving free reign to heal players in slow areas so they can progress.
For the next week, I want to get at least the layout of the first set piece done. I’m hopeful that we can even get in the gameplay/interactive bits in as well.
We’ve been on the cusp of being able to make a complete level for a while now, and I think we’re actually going to hit the tipping point by this weekend. So that’s exciting. I’m ready to get some playtesting in. I’ll give this week a dragon fruit and some dark red cherries. And more of whatever’s got vitamin C.

Tim's Book Report


And so Rand and Mat finally arrive at Camelyn. They seek out an inn Thom told them about earlier, and found that the innkeeper is sympathetic to their plight. Rand also meets Loial, an Ogier. The Ogier are reclusive creatures who live in the stedding. In the past, they have created many structures that are still intact after many generations. Loial decides he want to join Rand in his journey. While in Camelyn, Rand discovers there is great political tension between people who support the current regime, and those who dislike the Aes Sedai’s influence over the queen. Camelyn is crowded with people who want to see the captured false Dragon. To give context, a king of a previous age was called Dragon, and his use of magic drove him mad and he destroyed the world. And currently, a man named Logain claimed to be the next incarnation of Dragon and mustered up an army for his plans of conquest. And to add some intrigue, the Dark One has been appearing in Rand’s, Mat’s and Perrin’s dreams and claims the Aes Sedai have actually been the ones manipulating Logain and other previous false Dragons. The day the captured false Dragon was being paraded through the streets, Rand was trying to get a better view, climbed up a wall, and accidently fell into the royal palace, where he is found by the Daughter-Heir, Elayne, and her brother. Someone in the palace calls the guard and he is sent to be questioned by the queen, and thanks to some support from Elayne, Rand is set free and goes about his business.

This part actually felt out of place. We have been following Rand and Mat as they struggle with all they have just to travel to Camelyn, with the hopes that their friends are still alive. And suddenly he falls into the palace and meets the princess, who seems to have at least a positive image of him, like a scene out of a cliche fantasy story. It was a major change of pace that I wasn’t prepared for.

Meanwhile, with Perrin and Egwene, I got the escape scene I was looking forward to. Moiraine, Lan, and Nynaeve track Perrin down and discover Perrin and Egwene have been captured. Nynaeve unties the horses and Moiraine calls down thunder to create chaos, while Lan frees the two. The scene was a little underwhelming, but I guess it got the job done. They head to Camelyn and meet up with Rand and Mat.

After they meet, Moiraine announces that there has been a change in plans and needs to head to the Blight, where there are humans fighting off the Dark One’s minions, and find the Eye of the World, so that some large turning point in history will be forced to happen there. And because the dark forces are surrounding Camelyn, they need to find another way out. Moiraine requests Loial that they use the Ways, a sort of separate dimension that the Ogier used in the past to move between places quickly. However, the Ways were build by male Aes Sedai in the past, and thus became tainted as time went on, so it’s super spooky right now. Oh, and at some point Moiraine helped cure Mat from the evil dagger possessing him, but not completely.

And thus our party entered the Ways, with the guidance of Loial, and made their way to Fal Dara, a fort on the borderlands of the Blight. The Ways are corrupted, and they also discover the Dark One’s forces have also been using the ways to move around. Anyway, our party arrives at Fal Dara mostly safely and make plans to travel into the Blight and find the Eye of the World.

Many of the parts I read this week seems to be just progressing the story with nothing too interesting happening. I can’t really blame the author, he needed to wrap up all the separate stories and bring them all together for the final conclusion. But it also feels a little strange to bring up so many new characters who feel like they will contribute greatly to the story like Loial and Elayne. Well in Loial’s case, his purpose has been fulfilled by guiding the party through the Ways. But they also mention how Thom is mostly likely not dead. I am nearing the end of the book, and it feels like all these characters probably won’t have their story fully fleshed out until the sequels. Maybe it’s just how I read books, I try to understand how each character contributes to the overall story. And thus, I like predicting what purpose different characters have in the story. So I have an expectation that certain characters will have a big impact later on. But I guess this is how authors get people to read the sequels.