This week has been absolutely insane. Our team is great at iteration but Sprint 8 has been a whole new level. To see the progress that happened, let's see where we started this week at.
Thursday, the build we brought into QA is the same one I referenced in my last post. I write these blogs usually pretty late on Wednesday nights (and sometimes really early on Thursday Mornings). During our Sprint planning meeting we decided to have a Spike meeting on Friday to discuss two things, Player Agency and our Game Loop. For the first time since August 30th nobody on the team worked on the game for a night because this meeting was about to be massive. (This literally never happens, due to our workflow someone is almost always doing something on the game.)
Friday rolls around and along with it the spike meeting. I’m actually a little mad that I wasted the Council of Elrond joke last week, because this meeting was like the Council of Elrond decided to have another meeting just to discuss the entirety of the Council of Elrond. It was that huge. What happened in this spike meeting basically boils down into this. We needed player agency, Greed currently just smashes stuff, and the players just kinda shoot greed. It is fun in the same way that a top spins, eventually it just stops spinning.
Our game stopped being FUN.
That is when the idea of poker chips came back up. We have a model in the game for one right now, but neither Ellie or I have made an effect using it yet since it has never really served a purpose (It still kinda doesn’t at the moment, but I have some ideas on how to use it). This is what got me thinking, what if when Greed destroys something it drops bags of chips, and those bags have to be turned in somewhere on the map to score points. The kicker is though that Greed isn’t guaranteed to get all of the bags as anyone is allowed to pick up the bags (along with that anyone can turn in bags in regardless of the form they are in). With this we now make the Act’s Special (Right Bumper move) be related to making whoever Greed is lose bags they are currently holding. We also now are going to make Greed cause the players to drop bags when abilities are used. Right there is what I would call killing two birds with one stone (or well, two birds with one gigantic grotesque monster).
Saturday rolls around so Dustin and I decide to do a work session the entire day until QA starts. We managed to get the entire gameplay loop in as well as sound effects for every single ability we had in the game at that point. This work session proved to be incredibly useful because we saw results immediately at QA later that afternoon. Suddenly we had a realization at this QA, and that was something big.
Our game was FUN.
Not only was our game fun, but we had people laughing and screaming. We brought in a similar build to QA on Monday, and I had multiple first years tell me that they want to play it more. One even told me it was the best game they played at QA, then they proceeded to go tell another person in the room (a tester who hadn’t gotten around to us yet) to come and play our game. For the first time after 8 weeks of long hours, constant iteration, 18 Quality Assurance Testing sessions, and way too much caffeine everything finally worked. Thankfully we still have 4 remaining sprints and 11 QA sessions remaining to keep making this game better, but it is amazing to know that the imposter syndrome that plagues the Game Majors can take a backseat when it comes to this project.
At Monday’s QA we also had a tester ask me a question we never thought about, “So uh… How does this game end?”. Thinking about it now we didn’t have an end state that made sense with the game anymore. It used to be that when every destructible in the environment was destroyed the game will end. Which in theory worked, but now we have the bags which need more context to be used other than arbitrary points. Oh, also the fact that there are at least over 400 destructibles in the level didn’t help either, so we decided to balance the level around collecting $10,000 as the goal.
Also our fantastic artist Ellie got some Environment Assets done, so we will actually have or game not just be basic boxes anymore! Here is an awesome scene she set up to show off the assets!
In these posts I normally don’t give an explanation to the titles, as they speak for themselves usually, but this one not so much. The title is a reference to Lord of the Rings’ Council of Elrond where they decide what they are going to do with the one ring (Note, I have never seen LotR, but I have seen the Martian about 15+ times). I chose to go with this title as we had a meeting that was just pure magic and Cody, our Producer, leads all of our meetings. Hence the name The Council of Douglas is born!
The Council of Douglas set a ton of major things into motion and set up the second half of capstone perfectly.
The first and probably most important was that we did Doomsday style planning for every remaining Quality Assurance Testing (QA) session in the semester. This way our team would know exactly what we will be testing for in the next 13 Sessions until of Presentations on November 19th!
One of my major tasks this week was doing a basic level design blockout so that Ellie could have a better vision of some environment art that we could have in the game. I put the majority of my time this week into creating a space that is open enough to allow for some chaos, and have definitive sections that create a believable environment. The map currently may not seem like it has much in it, but that is because we only have destructible objects at the moment and grey/white bricks don’t do the best job at selling our world feel.
Some other things Dustin and I have started adding is player feedback. This can range anywhere from VFX using Cascade in Unreal, SFX either by finding free sounds online or using my voice, UI for basic images that show players something is happening, and controller rumbles. Player feedback in our game is huge because we really want players to know what is happening at all times in our game. We added a hitmarker and noise for when players successfully use an ability on greed, and a rumble for greed when they are hit by an ability.
The main few aspects of “The Council of Douglas” allowed for all of the progress our team had this week. With the QA scheduling, future sprint planning, and overall preparation to guide us to the Presentations!
Something none of us knew though that it would also create a new drive within us to change our team’s name to what we originally wanted it to be going into the semester. Say hello to “The League of Evil”.
Not much has happened this week design wise due to our Fall Break being the majority of this sprint. I went home with my good old Chromebook which sadly can’t run Unreal. I gave my docs a quick look through while at home and made a few changes where they were needed.
At our Sprint planning meeting this week we realized that we needed to give the Acts and Greed their distinct roles and fast. Moving forward we are going to try and morph Greed into the giant monstrosity that uses melee and short range attacks, that way it has to get close to its destructible target. Greed however does need escape options, as our game is a bit cat and mouse like (If the mouse was on steroids I guess). We also are beginning to rework the way players become Greed. At the start of the match players must rush to the center of the map to unleash greed from a pedestal, whoever touches it first becomes Greed. Once greed is last hit that player will receive some sort of bonus (we aren’t sure if we want it to be points or something else yet, but this is why we have QA). Then the spirit of Greed will fly to a random pedestal in the map and players must race there. The player who was just greed will have less movement buffs on them right after being Greed so it will be tough for them to become Greed a second time in a row. This allows for more player strategy and planning when it comes to turning into Greed.
Dustin also began a ReadTheDocs for us this week, this serves as our master document its a combination of a Game Design Doc (GDD), a Technical Design Doc (TDD), and an Art Pipeline. The goal of this is to make sure anyone on the team is able to read about how anything works in case they get stuck and nobody is available to help them. Dustin has made a few sections of it already, but along with getting more in engine (aside from my GAS work last week) this next week I will be writing a few sections in this as well.
The link to our ReadTheDocs can be found here!
This week was all about GAS (Not the passed kind). GAS, otherwise known as Gameplay Abilities System, is a feature in unreal that allows us as a team to rapidly make abilities with tons of different effects for our game. These can range anywhere from a simple speed boost to a multi shot explosive that sets everything on fire. It's an extremely useful tool, but the huge downside is that it is not documented online well.
To go into detail on what exactly I do when using GAS I’ll run through how one of our basic abilities is set up.
First we need to decide which of the ability slots that it will go in. For this blog post I’ll show off a primary ability (Right Trigger). From there we then need to make the ability and give it the correct tags. Tags allow for the ability to have cooldowns and other effects, they also keep the ability from firing off multiple times on one button press. The “Target Blocked Tags” keeps this ability from firing off while the secondary is firing.
Now we need to make the cooldown. This is called an Effect. These allow me to change a property of an ability, this can be anything from Movement Speed, Attack Speed, Attack Distance, and more. For cooldowns we will need to change the duration to .250 (Or 1/4th a second).
Next we need to give it tags so it works with the ability. Once that is all rigged up, this ability will now be able to fire 4 times every second after we attach the cooldown to the ability.
Now we make the physical look of this ability. This one is a yellow sphere with some flames particles coming out of it. The particles are done in Cascade which I may do a post on later as I got to play with it a good amount while at IronBelly Studios and grew to really love it. Regardless of that though, we can do a few things on the sidebar like change the damage and lifespan!
Next we need to hook up the physical part of the ability. It goes into the “Spawn” area of the ability graph.
Now that all of that is done we just need to compile all of the code, save and hook it up on the Character!
Since we finally have everything hooked up, here is the primary in action! It does 1 damage, and shoots 4 times per second!
And here is the secondary I made to show contrast between abilities in action! It does 2 damage and shoots 2 times per second!