Dev log – Day 3
Summary
Today was focused on building the foundation for the interaction system by creating a parent interactable class, establishing child Blueprint types, and beginning work on a modular door system. I also created a set of colored material instances to help visually differentiate level components. Significant time was spent implementing door logic, including opening, closing, and locking behavior driven by timelines and overlap events. The day concluded with several quality-of-life improvements, followed by a major setback: an accidental deletion of crucial asset folders during a restructuring pass, resulting in the loss of meshes, materials, and level asset Blueprints—highlighting the urgent need for version control.
What I Worked on Today
Creating Interactable Parent Class
- Created a new parent class Blueprint for interactables named BP_Trigger.
- Added an event dispatcher: OnTriggered.
- Added a boolean input IsTriggered to track when the object is triggered.

Setting Up Interactable Blueprints
- Created new interactable Blueprints as children of BP_Trigger:
- BP_Button for buttons
- BP_Switch for switches
- BP_PickUp for pickups
- Moved BP_Pickup_Test to deprecated.

Creating Base Door System
- Created a Blueprint actor named BP_Door.
- Modeled a door mesh using grid block modeling: SM_Door, sized 120u × 220u × 20u to fit existing doorframes.
- Added box collision to SM_Door.
- Added a static mesh component to BP_Door and assigned the door mesh.
- Added box collision to act as a player sensor.
- Reduced door thickness to 16u to prevent clipping when sliding into walls

Creating Colored Material Instances
- Used the engine material M_BaseColor_Constant as a starting point and made base color instance-editable.
- Created the following material instances:
- MI_BaseColor_Black
- MI_BaseColor_White
- MI_BaseColor_Grey
- MI_BaseColor_Red
- MI_BaseColor_Green
- MI_BaseColor_Blue


Adding Door Logic
- Added OpenDoor and CloseDoor custom events.
- Added Lock and Unlock functions.
- Created a timeline with a float track named DoorPosition, length 2 seconds.
- Track keys:
- 1 is Time 0 → Value 0
- 2 is Time 2 → Value 1
- Used the timeline to drive the door’s relative location.
- Door sinks into the floor (Z = -220) to avoid lateral clearance issues.
- Door location is multiplied by the timeline value for smooth animation.



Overlap Logic
- BeginOverlap: checks if other actor is the player → if true, triggers OpenDoor.
- EndOverlap: checks if other actor is the player → if true, triggers CloseDoor.
- Door now lowers into the ground when the player enters and rises back up when leaving.


Locking System
- Created boolean variable IsLocked.
- Added a Branch after OpenDoor to block opening when locked.
- UnlockDoor sets IsLocked = False.
- LockDoor sets IsLocked = True.



Quality of Life Improvements
- Added a test platform near the rooms for easier feature testing.
- Added collision to the floor (need to investigate automatic collision generation).
- Reduced character max walk speed from 600 to 500 cm/s for better pacing.

Asset Folder Restructure
- Reorganized asset folders into a clearer structure:
- Asset/
- Materials/
- Meshes/
- LevelAssets/
- Renamed frequently used folders using a 00_ / 01_ / 02_ naming convention.
Major Issue
- Accidentally deleted critical assets during folder restructuring:
- Unreal created an empty folder with the old name after renaming.
- Believing assets were duplicated, the new folder (containing the actual assets) was deleted.
- Lost:
- All static meshes
- All materials
- Most level asset Blueprints (ceiling lights, emergency lights, etc.)
- Lost:
- Spent ~3 hours recreating all static meshes from scratch.
- Will need to rebuild lighting-related Blueprints tomorrow.
- Version control and backup system must be set up immediately.
Technical Notes
- A parent interactable class makes interaction behavior easier to maintain across multiple object types.
- Timeline-driven vertical door animation removes concerns about side clearance.
- Material instance color variations help during blockout for quick visual differentiation.
- Unreal’s rename behavior can create misleading empty folders—use version control to avoid accidental deletions.
Challenges & Lessons Learned
- Misinterpreting duplicate folders led to deleting essential assets.
- Engine rename operations can create confusing folder states.
- Rebuilding lost assets consumed significant time and highlighted the importance of backups.
- Door logic development demonstrated the usefulness of vertical movement to avoid geometry constraints.
Next Steps
- Recreate lost Blueprints (ceiling light, emergency lights).
- Implement triggers and interactions for door locking/unlocking using the BP_Trigger system.
- Set up version control and begin routine backups to prevent future losses.

