Tasks Undertaken
MAIN PROJECT
Small Fixes
- Added L_MainMenu level to build list.
- Fixed warning with light sources in L_MainMenu.
- Cleaned up Async C++ class.
- Cleaned up level loading in BP_VRCharacter.
Logo Changes
- Changed the project logo to the new design (colored).
- Added colored and black logos as 2D sprites.
Button and Lever Integration
- Linked button state to lever in hyperspace.
- Linked lever and button to warp effect.
- Addressed the need to fix the speed of lever going back.
AI PROJECT
Initial Setup
- Completed the initial commit.
- Imported the project and implemented initial changes.
Engine Settings and Meshes
- Adjusted Engine Settings.
- Imported necessary meshes.
Perception System
- Added Sense Enum and Passive State.
- Implemented senses for player sound and damage.
Behavior Trees and Patrol
- Cleaned up the enemy base.
- Added a new material for enemies.
- Implemented investigating and defined a new patrol route.
Damage Handling and Health
- Added CanSenseActor function.
- Implemented GetCurrentState.
- Added HandleSensedDamage.
- Introduced multiple enemy types (melee and ranged).
- Implemented sub-enemies and sub-behavior trees.
- Added debug features to the enemy base class.
- Implemented attack sequence for ranged enemy.
- Ensured enemies always see the player.
- Added health for enemies.
- Implemented enemy healing mechanics.
- Implemented various EQS systems for the ranged enemy.
- Introduced a new color scheme for enemies.
- Enabled enemies to attack each other.
-------------------------------------------------------------------------------------------------------------------------------
Double Diamond
Discover
In the initial phase of the project, I began by exploring and understanding the existing codebase of the main project. This involved identifying areas that required attention, such as fixing warnings in the L_MainMenu level and enhancing the clarity of the Async C++ class. Additionally, I focused on refining the level loading process within the BP_VRCharacter.
During this discovery phase, I also took the initiative to update the project logo to a new design, incorporating both colored and black logos as 2D sprites.
Simultaneously, in the AI project, I conducted an initial import and delved into the existing structure. I adjusted the Engine Settings and imported necessary meshes to lay the foundation for subsequent enhancements.
Define
Having identified the areas for improvement in the main project, I defined specific tasks to address these issues. This included the integration of button and lever functionality in hyperspace, as well as linking them to a warp effect and landing sequence (Figure 7 & 8). A specific focus was given to rectifying the speed issue of the lever during its retraction.
In the AI project, the definition phase involved creating a robust sensor system. I added a Sense Enum and Passive State, introducing senses for player sound and damage. This step laid the groundwork for implementing more complex AI behaviors.
Develop
With a clear understanding of the tasks at hand, I delved into the development phase. I systematically implemented the defined fixes in the main project, addressing the issues related to the MainMenu level, light source warnings, and optimizing the Async C++ class and level loading process in BP_VRCharacter.
Simultaneously, in the AI project, I executed the defined tasks. This encompassed further adjustments to Engine Settings, importation of meshes, and the establishment of a sensor system. Notably, I worked on enhancing enemy behavior by cleaning up the base, adding a new material, and implementing investigating behaviors with new patrol routes. Additionally, I introduced health mechanics, diverse enemy types (Figure 1 & 2), and behaviors, extending to sub-enemies and sub-behavior trees (Figure 3 & 4).
Throughout the development phase, I continually tested and debugged, ensuring that each implemented feature functioned as intended.
Deliver
In the final phase, I optimized the main project with small fixes and updated visuals. The button and lever integration in hyperspace was successfully completed, along with the linkage to a warp effect.
In the AI project, I made a comprehensive set of improvements. These included an advanced sensor system, refined enemy behaviors, and a more diverse range of enemies using the same base class (Figure 6). The project now features enemies with distinct attack sequences, health mechanics, and the ability to heal themselves by using EQS systems (Figure 5). Moreover, the addition of new colors and the implementation of enemies attacking each other added a layer of complexity to the AI system.
Overall, this iterative process of Discover, Define, Develop, and Deliver facilitated the enhancement of both projects, ensuring a more polished and feature-rich final product (Figure 3).
-------------------------------------------------------------------------------------------------------------------------------
Research
This week, I spend a lot of time following the Smart AI Tutorial Series from a guy named Ali Elzoheiry. He explains and shows in great detail how to create a strong and robust AI system. I followed his tutorial and adjusted it to our own needs. It took me some time to understand, but the tutorial series, and a lot of trial and error, got me to the point I am now.
People
- Tycho Tuitert: General feedback and discussions throughout this week.
Internet
- Smart Enemy AI Tutorial Series (followed the first ten videos): https://youtube.com/playlist?list=PLNwKK6OwH7eW1n49TW6-FmiZhqRn97cRy&si=VYYakisGSTHLwFxZ
-------------------------------------------------------------------------------------------------------------------------------
Reflections and Learning
This week was all about the enemy AI. I spend around 10 hours following a tutorial series that I found and adjusting it to our own needs. I have learned so many new things from watching the tutorial, it is incredible! Most of the new knowledge is about class inheritance, parent classes, behavior trees, and EQS systems. It was very fun to work on the AI system. It is very complex, but that makes it interesting to work with. Trying to make a function as clean and reusable as possible is a fun and learning full challenge. It took me a long time to make the AI's work, but I am very proud of the result. In a later stage of the project, I will probably adjust it more to our own needs and add more functions.
Linking the button and lever to the landing sequence was also very insightful. It allowed me to experiment with linking the functions and different stages within the three blueprints. It took me several iterations, but I am satisfied with the current result.
-------------------------------------------------------------------------------------------------------------------------------
Figures