Tasks Undertaken
Renaming and Debugging
- Renamed company name and debugged game title.
- Fixed asynchronous level loading link
- Renamed AsyncLevelLoad plugin to make it custom.
- Removed Denise's plugin as it was not utilized.
- Set the default compiler from 'Default' to 'VisualStudio2022' to prevent potential issues with Visual
   Studio 2019.

Level Streaming in C++
- Integrated level streaming into the AsyncLevelLoadSceneComponent C++ class.
- Linked level streaming to the Warp2 Blueprint of Teun.

Scene Transition and Fullscreen
- Removed resolution setting provided by the plugin.
- Added blueprint for automatic fullscreen and window resolution.
- Enabled automatic fullscreen on startup.
- Fixed execution order issues when Async level has loaded, ensuring the menu console closes
- Added temporary videos for the cockpit with correct resolutions, removing the outdated ones.

Project Organization
- Moved classes to their respective project folders.

Fixed C++ Classes
- Developed a custom AsyncLevelLoad plugin to replace the previous one.
- Removed unnecessary Linux and Android from build settings.

Fixed Pause Menu
- Addressed issues with the first trigger of the pause menu not working.
- Removed default values from pause menu settings when save game data does not exist.
- Modified the process of obtaining save game data to occur every time the pause menu is enabled.

Fixed MainMenu Scene
- Incorporated a new space environment into the MainMenu scene.
- Resolved issues with the glass material causing instability in the menu widget.
- Cleaned up and optimized the main menu widget blueprint.

Main Menu & Enemy Animation
- Added a sheathing sword animation to the enemy AI.
- Optimized and cleaned up the main menu widget blueprint.
Double Diamond
In the initial discovery phase, I delved into the project to understand its existing state and identify potential areas for improvement. This involved renaming the company name and addressing issues with the game title, aiming to enhance the overall branding and user experience. Additionally, I focused on debugging the asynchronous level loading and added automatic fullscreen and resolution (Figure 1) for a smoother user interface.

With a clearer understanding of the project's current state, I proceeded to define specific areas that required attention and refinement. This included renaming and customizing certain plugins, such as the AsyncLevelLoad plugin and Denise's plugin, to better suit the project's needs. The definition phase also involved setting the default compiler to 'VisualStudio2022' to ensure compatibility and prevent potential issues with other versions.

Having defined the necessary improvements, I transitioned into the development phase. This encompassed the integration of level streaming functionality into the 'AsyncLevelLoadSceneComponent' C++ class (Figure 2), creating a more dynamic and efficient coding environment. Additionally, I organized project files into dedicated folders, enhancing the overall project structure for better accessibility.

The final phase involved delivering a polished and optimized project. I developed a custom AsyncLevelLoad plugin, removing the previous one, and fine-tuned C++ classes to enhance performance and reliability. The pause menu underwent significant improvements, addressing issues with its functionality and ensuring a seamless user experience. Furthermore, the MainMenu scene received updates, including a new space environment (Figure 3), improved stability of the menu widget and better fitting videos (Figure 4 & 5). The addition of a sheathing sword animation to the enemy AI and optimization of the main menu widget blueprint contributed to an overall enhanced task delivery.
Last week, I spend a lot of time researching and optimizing the level loading C++ class. I wanted to make my own, so I went ahead and removed the old one. After doing some research, I was able to also add level streaming, apart from Async loading, to the class. It took me some time, and trial and error, but the two different loading systems are now in one class and very easy to use.

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

Reflections and Learning
This week, I spend a lot of time working on and debugging the new level streaming C++ class. I wanted to get rid of the plugin, since I wanted to make my own classes. So I moved the code that I wrote to my own class and removed the plugin. After that was done, I also added the ability to Level Stream levels. Which is still build-in with blueprint functions, but I wanted to have one big class for all different kinds of level loading. I had to do some research on how level streaming works in C++, but the Unreal documentation was really informative about it, and I was quickly able to make the first version. After some debugging, I added the event calls to support the already existing blueprint structure.
Getting the screen resolution of the used monitor was somewhat difficult. The functions I used just didn't work. After some research and stumbling on an Unreal Forum, I was able to solve the problem. The fix was quite easy, I needed to use the 'GetSupportedFullScreenResolutions' function. This returns an array, which I needed to take the last one of to get the max resolution for that monitor.

Figure 1 - Automatic fullscreen and resolution

Figure 2 - Level Streaming the C++ class

Figure 3 - New environment for the main menu

Figure 4 - Cockpit videos left

Figure 5 - Cockpit videos right

Other projects