Tasks Undertaken
Player Animation and IK Rig
- Created IK rig for the player character.
- Developed a retargeter to apply the IK rig to the Unreal Engine mannequin used for networking.

Enemy AI Enhancements
- Increased the recall time for enemies regarding the player.
- Implemented fixes to address issues related to enemy forgetfulness of the player.
- Adjusted enemy movement speed to be slower.
- Disabled unnecessary print statements in the code.

Main Menu Updates
- Replaced the cockpit model in the main menu with a textured Blueprint version.
- Added lighting to enhance the scene in the main menu.
- Created an emissive material for FPS and ms text to ensure visibility unaffected by lighting.
- Replaced the door frame model and material in the main menu.

Navigation and Collision
- Modified player collider to block other pawns, preventing walk-through of players and enemies.
- Implemented triggers for enemy states, ensuring they only activate once.
- Added a damage variable to enemy projectiles.
- Added triggers for foliage enemies.
- Adjusted NavMesh data in the blockout, tweaking agent height, max angle, and radius.

Lighting and Mesh Updates
- Set Lightmap Type to Force Surface for spaceship meshes to aid in lighting baking.
- Replaced enemy models, animations, and materials with new ones, including motion capture
- Recorded motion capture for enemies (got to wear the suit and record!)

Animation and Behavior Tree Refinement
- Disabled text 'L' on the player.
- Made text material on left and right hands emissive for constant visibility.
- Removed weapon equip on start for ranged enemy.
- Removed equipping and unequipping of the sword for melee enemy.
- Removed camera grabbing on start for ranged enemy.
- Implemented setup to dynamically change the behavior tree for the ranged enemy.

Validation and Error Handling
- Added IsValid checks to several blueprints.
- Addressed errors related to birds with IsValid checks.

Projectile and Attack Animation
Incorporated projectile model into the attack animation for ranged enemies.

Cockpit Videos
- Added cockpit desk videos, including both big and small versions of code and lines.
- Imported new steering wheel console
- Added videos to the steering wheel
- Removed emissive material from the cockpit.
Double Diamond
During the discovery phase, I delved into understanding the existing framework and functionalities of our project. This involved creating an Inverse Kinematics (IK) rig for the player character and establishing a retargeter to seamlessly integrate this IK rig onto the Unreal Engine mannequin used for networking (Figure 1). Simultaneously, I identified and addressed issues related to enemy artificial intelligence (AI), focusing on enhancing their memory and adjusting movement speed for improved gameplay dynamics.

Following the discovery phase, I honed in on defining the specific improvements needed. Notably, I focused on refining enemy behavior and addressing issues with their memory recall. Additionally, I concentrated on optimizing the player experience by making adjustments to animation, collision, and lighting in the main menu. The definition phase also involved incorporating better error handling through IsValid checks in various blueprints, ensuring a more robust codebase.

In the development phase, I executed the defined improvements. This encompassed implementing changes to the enemy AI, such as adjusting movement speed, disabling unnecessary prints, and enhancing recall mechanics. The main menu underwent significant upgrades with the replacement of models, animations, and materials, as well as the addition of new cockpit videos (Figure 2). Furthermore, I refined the animation and behavior of both player and enemy characters, utilizing motion capture for a more realistic and immersive experience (Figure 3). Additionally, I placed the ranged enemies in the scene and ensured that projectiles now cause damage (Figure 4 & 5), collider triggers have been incorporated to set the state of enemies (Figure 6 & 7), and motion capture recordings were applied to enhance enemy animations.

The culmination of the double diamond process was the delivery phase, where the developed changes were integrated into the project. This involved meticulous testing to ensure the seamless operation of the IK rig, enemy AI enhancements, and overall gameplay improvements. Additionally, the delivery phase emphasized the importance of error handling, validated through IsValid checks, for a stable and error-free user experience. The final result is a more polished and refined project, with improvements in animation, AI, and user interface contributing to an enhanced gaming experience.
This week, I spend most of my time creating the IK Rig Retargeter, record motion capture animations for the enemy, and fix bugs. With the first two, I had help from other people or documentation. Debugging was done with trial and error, and sometimes rubby ducking Tycho.

- Tycho Tuitert: General feedback, discussions, and help throughout the week.
- Nils Kwade: Help with the problems we encountered while recording the motion capture.

Reflections and Learning
This week, we finally go to do motion capture, with me in the suit! I have waited so long for this moment (since we started developing Apollo Arena in Unity). It was a very unique and fun experience to record the animations for our enemies.
During recording, we kept stumbling against an unknown error of the Xsense record software. After 4 hours of debugging and trying different things, we found out that the index finger on the right finger was broken. When we disabled the input for that finger, everything worked perfect. It was such a shame that it took so much time to solve.
For our player, I got the task to create a retargeter, since I had some knowledge about it from the start of the project. It was not a very difficult task, but creating the source chains for the whole body took some time. Since the default poses of our rigs are different, it took some trial and error to get those to project right onto each other.
To make it easier for the enemies to target the player, I made a trigger collider that takes a list of enemies it has to change the state of, and the state it needs to set those enemies when the player walks through the collider. This allows us to make enemies attack the player from a distance, while, technically, their perception hasn't noticed the player yet.

Figure 1 - IK Retargeter for player to mannequin

Figure 2 - New cockpit videos & New steering wheel console

Figure 3 - BTS of the motion capture set-up

Figure 4 - Static ranged enemy in the blockout level

Figure 5 - Collision of the projectile

Figure 6 - Enemy state trigger in the demo level

Figure 7 - State change in the 'StateTrigger' blueprint

Other projects