Tasks Undertaken
Scenes & Level Organization
1. Organized Level Folders & Renamed Sublevels
- Put all important scenes into a 'Core' folder in the 'Levels' folder.
- Renamed the sublevels from 'L_Name' to 'SL_Name'.
- Renamed strings in code for level loading (because levels have a different name).
- Added correct level names to build list.
- Fixed an issue with the wrong reference to Game and Editor Default Map.

2. Cockpit Improvements
- Calculated better collision.
- Set custom hand socket for lever.
- Changed settings for button in the cockpit.

Networking & AI Improvements
1. Networking Improvements
- Added valid checks to prevent errors.

2. Enemy Networking Fixes
- Added network sync to various Enemy actions (HitResponse, Die, Melee Attack, etc.).
- Fixed networking for projectiles.
- Fixed a bug where the client would not be sensed by the enemy.

Enemy Behavior & Animations
1. Replaced Hand Socket for Ranged Enemy
- Placed the socket on the left hand.
- Fixed an issue with the enemy skeleton not being found.
- Optimized the projectile throwing code to use the position of the socket.

2. Enemy Animations & BP Clean-up
- Melee enemy now walks to the closest point around the player if it cannot reach them.
- Ranged enemy now stops walking after 5 seconds to attack if it still sees the player.
- Ranged enemy now stops walking when it sees the player while in the GetToLineOfSight state.
- Fix for ranged enemy that keeps walking while doing defense attack.
- Added more attack animations to melee enemy.
- Optimized behavior trees for melee and ranged enemies.

3. Combat State Check on Player
- Added combat state check on player.
- Added Event Dispatcher to notify combat state change.

Rendering & Lighting
1. Fixed Wrong Name Reference
- Async Level Load got the wrong level directory.

2. Better Pillar Collision
- Baked better collision for pillar LOD 1.
- Removed collision for pillars LOD 2, 3, 4, and 5.

3. Fixed Visibility in Reflection Captures
- Disabled buttons, console, hologram and lighting from participating in reflection bake. This fixes       the problem of seeing the squares of the lights. 

4. Added Cover Planes & Fixed Reflection Capture
- Added plane to drain in the shower to block seeing the mesh from the floor.
- Added plane to block the gap in the roof of the bathroom.
- Changed material to be fully black with no reflections.

Gameplay & Mechanics
1. Crate Replacements & Better Collision & Videos
- Made better collision for the crate (lid and bottom).
- Replaced boxes in the spaceship that can be opened with the blueprint.
- Added radar videos to L_Spaceship and L_MainMenu.

2. Save Game improvement & Credits placement
- Improved the way how save data is stored, received and processed.
- Repositioned names at credits to fit better.

3. Pause Menu Improvements
- Removed the ability to change the player name during playtime.
- Added a respawn button that respawns the player at a shrine or startpoint of the level.
- Added async loading to QuitToTitle.
- 'Go back to title' now goes to the main menu instead of the playground.

Enemy Routes & Gameplay Features
1. Improvements for Melee & Ranged Enemy
- Arrow impact makes a sound for the AI, resulting in investigating state.
- Better BP structure and null checks.
- Reduction of NavMeshBounds.
- Finally fixed the rotation bug that was haunting me for weeks (The tick was disabled on start. Only
   senses set is enabled again.) Set State As now includes set state enabled and disabled (according
   to its behavior).

2. NavMesh
- Increased Agent Height from 144 to 215 (2 meters and 15 centimeters).
- Increased Agent Max Slope from 44 to 50.

3. Environment in L_Demo
- Precision of collision is set to higher, resulting in a longer bake time, but more precise collisions.

Social Media
- Edited social media content for YouTube, LinkedIn and TikTok.
Double Diamond
Explored various aspects of scenes and level organization, focusing on organizing level folders, renaming sublevels, and addressing issues with level references. Emphasized the importance of clean structures for effective development.

Set clear objectives for cockpit improvements, including precise collision calculations, custom hand socket setup for levers, adjustments to cockpit button settings and interaction with interior (Figure 3). Networking and AI improvements, defined goals for error prevention and synchronized networking for enemy actions, fixing bugs in projectile networking and enemy syncing in general.

Executed a comprehensive performance check of the spaceship, transferring components for enhanced structure, adjusting render and lighting settings. Addressed reflection probe issues in L_Spaceship and integrated radar and machine videos for dynamic content (Figure 1 & 2).

Adjusted NavMesh settings for higher precision in L_Demo, resolved another enemy rotation bug, and optimized behavior trees for melee and ranged enemies. The delivery phase saw a holistic improvement in gameplay mechanics, better collision for crates, and improved save game processing. Notably, the pause menu received enhancements, including the addition of a respawn button and async loading to QuitToTitle (Figure 4). Implemented improvements in enemy patrol routes (Figure 8) and combat states (Figure 6 & 7). Also made enemies fully supported with networking (Figure 5). Edited social media content for wider outreach on platforms like YouTube, LinkedIn, and TikTok.
In this last week of development, I mostly used the knowledge from myself and the other engineer. We discussed a lot this week and worked together to fix most bugs. Most of my research consisted out of debugging and trial and error.

- Tycho Tuitert: General feedback, discussions and help throughout the week.

- Undertanding the difference between 'GetRandomReachablePointInRadius' and 'GetRandomPointInNavigableRadius': https://www.reddit.com/r/unrealengine/comments/ck6qy5/difference_between_get_random_reachable_point_in/
Reflections and Learning
This week was the last we planned for development. That meant that on Friday everything needed to be finished, so that we could record the content needed for the trailer. If I look back at this week, I can say that I am proud on the amount of work we did. Especially the huge number of bugs we fixed and improvements we introduced! It was also very tiring, because we have spend so much time on debugging and trial & error, that it sometimes got on our nerves. But we helped each other out where we could and that usually helped a lot (and fixed the problem).
I am very glad that we decided to set the deadline for the game this week, and not next week (the official deadline from school). This allows us to fix game breaking bugs (if they occur) and makes sure we have enough time to edit the trailer and work on our blogs. I will probably spend most of my time editing the trailer and work on my blog.
This blog will also be the last of IMT-S, so thank you all for following me on this wild ride of learning Unreal Engine and developing the vertical slice of our game. It has been a true adventure filled with opportunities and fun moments!

Figure 1 - One of the two radar videos in the cockpit

Figure 2 - Videos on the left machine in the cockpit

Figure 3 - Showcase of the crates, videos and better hand sockets

Figure 4 - Respawn button in the pause menu

Figure 5 - Enemy with working networking (host & client)

Figure 6 - Improved behavior of the ranged enemy

Figure 7 - Raycast from ranged enemy to player (now head to head instead of feet to feet)

Figure 8 - Patrol routes for the enemies

Other projects