Voice of the Monolith
Name: Voice of the Monolith
Engine: Unreal Engine
Team size: 10 people
Time: 5 weeks
Role: Scripter & Designer
This game was made during five weeks together with three other Designers, four 3D-Artists and two 2D-Artists. During this project I scripted the Character and all of its Movement mechanics and Interactions, as well as the Camera system and some Level scripting to make the environment look more animated.
Below are some screenshots taken from the different environments of the game.
I was the Main Scripter during this project, and I basically touched on almost every aspect of the game, so I thought instead of going through every little thing, I’d instead show the parts I had the most fun with.
Animation Retargeting through in-engine IK
During this project we encountered a problem were we had to somehow indicate to the player with which objects the character could interact, we discussed the different solutions available, like having an interface that lights up over objects when the character is nearby and I just thought, that it would be pretty neat if the character herself reacted to the environment instead of it being some sort of non-diegetic marker. So I suggested the idea and said that I would take it upon myself to find a way to implement it, and that I could work on it until the end of the week and if it didn’t work then I would give it up and we would go for some other option instead.
The solution I found was to add another layer of animation after the characters regular animation was finished, so after the character is updated with whatever animation it is doing(ie idling, walking) I added another layer of IK(Inverse Kinematic) Animation.
And so after having configured the IK, one for each arm, within Unreal I simply raycast around the character to check if there are any viable surfaces for her to place her hands on, and if so I send that location to the relevant IK and it moves the hand to the location with a slight lerp.
Originally we only used this as a way to indicate to the player which objects could be interacted with, but later on I realized I could also add this on top of animations such as pushing and climbing to make the hand placement look even better. I then also noticed that if the character was standing at an odd angle, with whatever object she was attempting to grab onto, one hand would be placed outside of the bounds of the box and so in that case I added an extra raycast to check if there might be a better location for that hand to be placed as well as rotating the hand so that it would align with the surface better.
Below is the main part of the blueprint that makes it work, it basically ray traces from two directions and tries to find the most appropriate place to put the hands from that point, if the first trace misses then it checks a secondary angle, depending on where a hit is found, the hands are rotated to suit the surface it hit. When an appropriate surface was hit by the raycast, I fed the location into a Vector Locator parameter which was referenced by the Animation Blueprint.
This final part is what I added to the animation blueprint of the character in order to retarget the hands. FABRIK was a new type of IK node that Unreal had just added and it was still in an experimental testing phase which is why it says Warning, but it worked just fine as you can see in the GIFs above.
So after having set up the FABRIK node with the proper parameters and which bones it should modify I just have to give it the location of where the Hands should try to be, this is where the Vector Locator came into play. If a hand found a target, the Vector Locator was set and its Vectors Length was no longer 0, this was when I set it to start lerping up the Blend values, so that the character actually blended from her normal animation into trying to grab hold or lean on something. Same thing goes for the rotation of the hand.
The last bit was just a little quick fix to make the character look at certain objects of interest in the environment as well. Although not as fancy as the hand retargeting it was quite effectfull for story moments when we could have the character clearly stare in a direction, this can be seen all throughout the trailer. A simple system really, just added an overlapp sphere to the objects of interest and when the character walked into the sphere, she was given a vector to look at, I originally just added had the head turn to look, but it looked a bit to stiff, so I added a slight turning of the upper torso as well to give it a bit of followthrough. Below the results can be seen.
All of these things make for suddle differences really, but I just love this kind of work. Making things look that little extra bit nicer is something I really enjoy.
Puzzle Design & Level Design
We had several sections in the game which we had set out to be puzzle areas, meaning that the player would have to complete a puzzle in order to gain a key element needed to progress the story of the game. And in these areas it was important that the player knew what they needed to do in order to solve the puzzle, basically we needed to convey to the player what was a puzzle area and give them a basic idea of what to do in order to solve it.
I took it upon myself to make a puzzle that revolved around the climbing mechanic that I had at the time just implemented, in order for the player to fully get an idea of how to use the contextual climbing in the game works and where it could be used. What was important when I thought about how to shape this, was the presentation from a distance of the puzzle, it had to be clearly visible from a far away distance so that the player would easily read the situation. At this time in the game the player knows that they want the glowy tubular things on the top platform, they also know that they can push boxes around and that they can climb up certain ledges, and there are to very clear warning lights flickering desperately to get the players attention.
So as the player enters the area they are framed to present the first problem, getting up on the first ledge using the box.
1. The room the box is placed in has ridges along the outer walls that block so that the character can’t take the box out of the room, so it’s clear that the player should use the box somehow in this box. Once the player has pushed the box to the ledge that is clearly marked with a wooden plank, which has previously been established as a climbable surface, they can climb up onto the box and then up onto the the ledge. This is further indicated to the player because when the character stands near a ledge that they can climb up onto, they place their hands on the object using the above described IK system.
2. After the player has scaled this first ledge the rest is sort of trivial, but its purpose is only to further ingrain it into the players mind that wooden surfaces are climbable so that later when they find other similarly marked surfaces they will know what to do.
3. Once they’ve successfully reached the top, they can get their little reward that furthers the story and can then either progress down the same way they came from or feel a little daredevil:y and just jump straight off the ledge like in the GIF.
What I really focused on in this section was the climbing but I felt it was really important to properly motivate the player all along the way, which is why I put the pod up the clearly visible in almost all the shots.
This was only a four week project so there wasn’t much time for polish sadly. but if I were to have some more time to really polish this up perfectly this is what I would change to improve readability.
Remove some of the things that look like obvious dangers like the rebars sticking out of the concrete where you are supposed to climb, since it just doesn’t read that well.
Add some flattened cardboard boxes or maybe an old mattress on the the first platform landing, since its sort of satisfying to have the player jump down the ledge to take a shortcut, which they can still do, but it looks like a bit to high for comfort and adding something that looks like it would soften the landing would encourage the player further to try it.
All in all I’m quite satisfied with this Puzzle section for the small amount of time I invested in it, it is really simple and during playtests I haven’t seen anyone get stuck here. But that was also the whole point of it, since it’s only there to further familiarize the player with the mechanics.