top of page

Blueprints for 'The Curse of Curiosity'

This was my first project in which I used Blueprints. I started with no knowledge of experience meaning this game was a massive learning curve for me as whilst having to make a whole game in one semester, I also had to efficiently learn how to use a brand new engine. I committed myself to online courses and youtube to help me grow my confidence and to produce a solid enjoyable game. I have outlined and condensed the primary issues below. I managed to address each of them by applying problem-solving skills, modifying various aspects of the game, especially the puzzles - and obtaining assistance from tools like ChatGPT. These experiences contributed to my growing confidence and allowed for a more self-sufficient attitude toward troubleshooting and design.

Desk Drawer System- Followed a YouTube tutorial to create drawers that open/close on interaction.- Issue: All static meshes moved forward when interacted with, not just drawers.- Fix: Set unnecessary meshes to "static" instead of "movable", but this conflicted with puzzles that needed movable objects.- Later resolved using more refined knowledge of Blueprint structure and separation.

Screenshot (747).png
Screenshot (749).png
Screenshot (748).png
Screenshot (750).png

8x8 Keypad Puzzle (64 Buttons)- Started from a 9-button door-unlock tutorial.- Needed only specific buttons (not all) to be clicked to unlock.- Initial attempts to filter "correct" button presses failed due to lack of Blueprint knowledge.- Consulted ChatGPT but didn’t initially understand the logic.- Eventually solved by checking the state of each of the 64 buttons every time one was pressed (a brute-force but functional approach).- Used logic like: - “If Box A, B, C are pressed AND Box D, E are not pressed → Unlock.”

Corrupted Game File Recovery- Game became corrupted and got deleted.- Solved by learning how to restore or rebuild the project from backup/cache.

​

Nanite Texture Issue- Faced issues related to Nanite assets or compatibility.- Resolved after research and project settings adjustments.

​

Laptop Widget Interface- Created a laptop that shows a password-entry interface using UMG widgets.- Aligned the widget with the static mesh in-game.- Used Blueprint logic to show/hide specific text elements depending on player's actions.- Changed visibility states (hidden/visible) depending on progress.

​

Phone Unlock System- Followed a YouTube tutorial to implement a passcode-based unlock system.- Reused similar logic for laptop password.- Bug fix: If 5 digits were entered, it would reset incorrectly (e.g., last number became first). Debugged and resolved input string issues.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​​​​​​​​​​

 

​​​​​​Diary Padlock Puzzle- One of the first implemented puzzles.- Followed a tutorial to make a combination lock using dials.- Faced issues: - Dials not rotating. - Combination not being validated correctly. - Invisible widget buttons: tutorial suggested arrow widgets to rotate dials, but they were not visible in your scene.- Fix: Replaced arrows with invisible rectangular widgets above each dial.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​​​​​​​​

 

 

Diary Page Navigation (Widget)- First experience with widget logic: - Used a “Page Index” integer to handle "Next Page" and "Previous Page" logic. - Learned visibility toggling and widget state management.

​

Wardrobe and Drawer System Refinement- Improved early drawer logic by making each drawer its own Blueprint.- Implemented smooth open/close transitions via rotation/translation.- Added a cooldown/timer so drawers couldn't be spammed (open/close instantly). - Used delays or disable interaction temporarily.

Photo Album- Used same page-turning widget system as the diary.

​​

Decoding Wheel Puzzle- Attempted to use widget buttons to rotate wheels.- Failed to get widget logic working with rotating static meshes.- Fix: Abandoned widget interaction; used direct clicks on static meshes to trigger rotation.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​​​​

Jigsaw Puzzle (Paper in Pot)- Intended to allow players to drag puzzle pieces to complete a torn-up image.- Searched for tutorials — found none.- Consulted ChatGPT for custom implementation.- Ultimately left this feature incomplete due to time constraints.- Replaced with static complete image of the paper.

​

Key and Lock System (Core Logic)- After solving a wall dial puzzle, a key spawns.- The key unlocks a specific drawer.- Based on a tutorial that assigns a specific key to a specific lock using a boolean flag or actor reference.- Issue: Spawned keys weren’t present at game start, making references fail.- Fix: With ChatGPT’s help, modified logic to assign spawned keys dynamically.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

 

 

 

 

 

​

Chisel and Pot Interaction (Item-Item Unlocking)- Implemented a "key-to-lock" system where the chisel acts as a key to open a sealed pot.- After pot opens, another pot spawns with clay inside.- Issue: These objects didn't exist at the start of the game → couldn't reference them.- Fix: Initially tried to spawn/destroy actors dynamically, but led to complications.- Final Fix: Placed all needed objects outside the playable space (hidden), then used `SetActorLocation` to "move" them into play when needed.

​

Rain Particle Effect- First implementation caused performance issues (large area).- Fixed by reducing area of effect and optimizing particle spawn logic.- Used a YouTube tutorial to set up rain with weather volume.

Wall Combination Lock- Similar to diary lock but with vertically rotating dials.- Faced rotational axis confusion.- Adjusted rotator values to rotate vertically instead of horizontally.

​

Drawer Collision Issues- Needed players to pick up items from inside drawers.- But drawer’s collision blocked interaction.- Fix: Changed drawer mesh collision and added custom collision boxes only on the front panel for interaction.

​

Typing a Name on Paper (Entity Puzzle)- Implemented custom font for immersion.- Created two fonts: - A "clean" keyboard font. - A handwritten-style font drawn in Procreate.- Logic: - On keyboard press → update widget text. - Show text with appropriate font.- Used similar text comparison logic as in passcode systems.

​

The Entity Mechanics (Endgame Horror)- After player writes The Entity’s name: - Entity appears and begins approaching the player. - Every 7 seconds, it halves its distance to the player. - If player gets too close → jumpscare triggers.- Player must seal the paper with clay and insert into pot to win.- Logic used: - Timer. - Distance check with player. - Trigger-based game state change.

​

Interaction and Pickup System- Initially used Unreal’s built-in “E to Interact” system via line trace.- Left-click to pick up items.- Faced issues with item rotation and positioning once picked up.- Followed YouTube tutorials but they were inconsistent.- Debugged and added: - Correct rotation transforms. - Option to use 'E' key for pickup instead of mouse click.- Considered adding hover UI hints for interactables, but chose not to for stylistic reasons (based on genre research).

​

Cutscene Dialogue Text Typing Effect- Implemented typewriter-style text effect for cutscenes.- Each sentence typed out one letter at a time.- Manually coded each sentence into Blueprint due to lack of dynamic dialogue system.

Screenshot (751).png
Screenshot (755).png
Screenshot (754).png
Screenshot (753).png
Screenshot (752).png
Screenshot (756).png
bottom of page