User Experience 10: creating the punching bag and reflections
As I am reaching the end of this project, I am implementing a target for the player to use their combat on. I have created a punching bag that the player can knock back when hit. This punching bag registers collisions with the player character and is knocked back appropriately with contact. Below is the programming that I set up for this function:


I have also purchased a punching bag asset from the Unreal marketplace. This asset has a cute face and also is floppy and reacts when hit. This is another layer of game juice that I’m implementing into this project, as it should provide visual feedback for the players as they make contact with the punching bag. This is the last element I’m adding to this project. On reflection, and considering the major issues that I faced with the majority of my data not working for the purposes of this project, I’m pleased with the outcomes. I have learned a lot about programming in Unreal, though I still find it quite difficult to find what nodes im need without finding someone else’s tutorial on the subject. As a result, in future projects, I am more likely to pursue film-based projects on my own, though I very much would like to work on a game with other people more versed in programming. As for the elements of game juice, I feel I implemented as many as I could in the limited time that I had. I would love to add more tactile inputs, such as rumble input and controller supports, as well as having all custom visuals. I think one of the aspects that doesn’t work as well is the use of mixamo animations, as many of the animations do not blend seamlessly with each other. In theory, I would in future be able to replace these animations with custom animations that worked much more seamlessly with each other. I would also like to add things like a UI, a combo counter, and other more game-ified elements. That being said, for a demo and my first experimentation with programming I’m very pleased with the outcome.
User Experience 9: Adding exclusive actions
As the basic control of the combat is completed, I wanted to add exclusive actions to the jumping and crouching functions. I implemented new animations exclusive to the jumping and crouching states which allow for a jump-kick attack and a crouched floor-sweep. I had to create a series of code for each function that would ensure that the animations could only play while mid-jump or mid-crouch. This was very challenging, as I am extremely unfamiliar with programming, but I was eventually able to make it work. One of the challenges I faced was ensuring that after a crouching attack, the player would not return to their idle state. I needed to create several chains that fed back into each other to make it work. This is the resulting code that I created for both the jumping attack and the crouching attack. Both of these animations play on mouse click, but only when they are mid-jump or crouch.

I used the following tutorials to support me when I was working on this, though I had to modify the code throughout:
Advanced Animation 18: Blocking Plus
This week I have developed this shot into blocking plus. I’m generally happy with the timing, but I’d like to push the poses to be more dynamic and less symmetrical. I have also understood that I need to polish the facial animation, since often the default controls, such as the eye look can not translate that well and need to be adapted for the shot view. I was pleased with the mouth animation since I think it is mostly passable without being distracting to the audience. The next phase of developing this animation is taking the curves into spline.


User Experience 8: Creating animation montages and combat
Now that I have created the base of the character controller, I want to add the ability to attack. I have created two strings of combat, a series of light attacks and a string of heavy attacks, which are programmed respectively to different mouse inputs (left and right click, respectively). In order to create these, I created two animation montages, adjusting and blending together different animation strings that I had collected through mixamo. This process took some time, as the animations initially did not blend together at all, and required a lot of editing in unreal to blend together. After creating these montages, I added notify states at the start of each segment of the string. In the character blueprint, I created a chain of codes that would allow the player to advance through each segment of the montage by clicking consecutively. If the player does not continue to click the mouse button, the player character will revert back to their default pose. This function allows the player to do basic attacks in a combo. I am really pleased with how well this works, and even without much else in the scene, I find it quite satisfying to go through the animation montages.


Advanced Animation 17: Blocking
This week I have roughly blocked out the poses for my scene. Ultimately, I can see that on reflection there are not enough poses- I worked from a reference of myself, but it would benefit the scene a lot if I added in some varying shapes and directions. I will continue to work on blocking, adding in blocked mouth animation, synced to the audio. I have found that I really like the rig that I have used, and I would love to work on other scenes with this rig.



User Experience 7: Making the Animation Tree and Basic character controller
Now that I have collected the animations I will be using in this project, I have begun working on creating a character controller. The third-person character controller that is created when making a game level in Unreal does come with a default movement set-up, but I wanted to create this from scratch. I created an animation blueprint and made a locomotion state machine that allows me to move from idling to running, as well as the ability to jump and crouch. All of these states are programmed to only flow in one direction, using keyboard button prompts to function. Both the jump and crouch functions required me to create three states, a beginning, middle and end, but in terms of programming, they were quite different. The jumping function requires a very quick response time so it doesn’t feel sluggish, so needed a lot of modification, but only triggers once on a button press. The crouch, by contrast, needs to be held down to remain crouched. I created this system in Unreal that allows the player to hold down the crouch button, and on release, the player will stand back up. The jump by contrast will end automatically on landing. This state machine is the foundational basis of the game character.


Advanced Animation 16: Acting reference and blocking
This week we are moving on to our acting shots. I have chosen a short clip from It’s Always Sunny in Philadelphia, since I think it has some clear beats in the timing, as well as being dramatic enough that I can create some strong poses. For now, I am focussing on poses and eyes only and will move on to mouth animation when my blocking is clearer. I am going to create a reference of myself acting to this audio for reference for my blocking, and later for my mouth movements.
User Experience 6: Pivot to mixamo – reflection and new plan
The current development of this project is going to require me to modify my plans, since unfortunately due to technical issues, the VICON motion capture data is not going to be suitable for this project.
A necessary element required for adding animations to the game controller is the ability to enable root motion and force the root position, otherwise, the mesh of the model would move away from the character controller- this requires an extra leaf-level bone or joint that can be set to 0.0.0 on all axes. Unfortunately, the Vicon data I have collected does not have this necessary bone, and though I have experimented with several different methods it does not seem possible to add this data to the materials at this stage. Although this is frustrating, It’s a good learning point for future potential projects and experiments with this software. In future, i either need to adapt this data before it is exported out of VICON, or i need to adapt my project to not require a connection to a playable character controller.
As a result of this, I need to find an alternative to VICON, and I will be using animations collected from Mixamo. This is not ideal, as I would have vastly preferred to use animations I was involved in creating and recording, or more ideally further, have animated myself, but using mixamo is a good substitute with the limited amount of time that I have left. As a result, I have collected the previously listed animations from Mixamo. I think it is likely that visually these animations may still have some issues, but they should be far more functional than the VICON data. I need to use a blender plugin on the mixamo data to add the required root bone.
Advanced Animation 15: Polish and Reflection
I’ve now moved into the polish phase of this shot, and overall I’m happy with the outcome. On reflection, I think I would like to adjust some of the timing since I think the comedic pantomime element of this shot could be even more exaggerated. I also would like to improve the pancake that I’ve put in this shot since it’s just a short cylinder with four bones. I think with a better method of creating this pancake I could show stronger peel-offs that at the moment I am limited in. I think working on this shot has helped me work on my timing, which I often feel is something that I struggle with, and also consolidated my understanding of moving between poses.