Free Forced Difficulties

  • FFD BG3 Game

Game description

    A first person 3D indie puzzle game with shooter and platformer elements. You wake up in a room and must reach the next one, solving puzzles untill you get to the final room to complete the level. You can use a hint note containing a short story about the main hero, or solve puzzles on your own.
    The game features 3 levels with unique puzzles, enemies and obstacles, accompanied by a beautiful soundtrack.

Project Info

🎮 Genre: Puzzle, Platformer, FPS (3D)
💻 Platform: PC
👤 Role: Gameplay Programmer
👥 Team Size: 1
⏱️ Development Time: 10 Weeks
⚙️ Engine: Unreal Engine 5 (Blueprints + C++)
🛠️ Core implemented features: AI (Behavior Tree, NavMesh, Perception System), custom puzzle mechanics, shooting system, UI/UX, settings menu, Timeline-based animations, moving platforms, enemy spawning system, pickups and pickup spawning, checkpoints, portals, footstep audio system, integrated soundtrack and more
▶️ Short gameplay showcase: YouTube
▶️ Detailed gameplay showcase: YouTube
GitHub Image Project repository: GitHub
📥 Download the game: Google Drive

  Introduction

    While developing this first-person (Epic’s template) 3D indie puzzle game that combines shooter and platformer elements, I focused primarily on gameplay and aimed to optimize the game as much as possible. Since I was creating the game solo, I also handled the UI, audio system, animation integration, and more. The game was developed using both C++ and Blueprints. My main priority was creating engaging and responsive mechanics, including AI systems, custom puzzles, and level progression logic.

  Development & Technical Details

•   AI system logic was implemented using Behavior Tree, NavMesh, AI Perception, AI Controller, Blackboard, and more. Enemy AI can patrol in specified or random locations, detect the player by sight or by hearing gunfire, shoot or take damage (via interfaces), and die.
•   Puzzles were developed mostly in C++ and the game includes a variety puzzles mechaincs:
1) True Path the player must to find the correct path to cross the floor without falling.
2) True/False Plates the player must choose the correct plate to reach the finish.
3) Object Matching the player must place the correct objects on the correct plates.
4) Moving Platforms the player must reach the finish using moving platforms and can stop certain platforms by stepping on specific plates.
5) Astral/Real Worlds – Interacting with certain objects in the Astral World changes the same or similar objects in the Real World.
6) Math Puzzle the player must solve mathematical problems and select the correct answer by stepping on the plate when the correct answer is displayed.
7) Maze of Doors the player must go through the doors in the correct order to reach the finish.

•   Shooting was implemented using interfaces and line traces.
•   UI/UX. The game includes a HUDs, a pause menu and a main menu. Player’s HUD displays HP bar, weapon info and FPS counter (visibility can be toggled in the settings). Pause and main menu has settings (key rebinding, graphics options, language selection and volume controls) and statistics. Both settings and statistics use a save/load system.
•   Localization. The game is localized in English and Ukrainian language using localization dashboard.
•   Pickups (heal and weapon) can be dropped by certain enemy types or after solving specific puzzles. Implemented via interfaces and triggered when the player interacts with them.
•   Audio. Footstep sounds are implemented using line traces to detect the surface type (phys mat) and play relevant sounds via animation notifies. All audio is organized into master and mix sound classes.
•   Spawn system. Enemies and pickups can be spawned dynamically in real time.
•   I’ve also implemented a DevMenu for easier testing the game.

  What I learned

    This is my second project, and during its development I learned a lot about Unreal Engine’s functions and possibilities. I spent a significant amount of time working on AI, making enemies move and think in a reasonably adequate way. I also learned how to implement key rebinding using the Enhanced Input System and how to configure graphics settings via GameUserSettings. I figured out how to link objects so that they interact with each other using separate actors, how to attach components to actors, and how to use those components later in the game. I discovered how useful data assets can be for making development easier. I gained some knowledge in game optimization, such as using material instances instead of full materials, setting maximum draw distances for objects, using interfaces for interactions, and more. I also learned that careless use of hard references can break your project to the point where it won’t even launch in the editor, so I explored soft references and how they can prevent such issues. Most importantly, I realized that writing flexible, optimized, and abstract code is a crucial skill for any self-respecting game developer.

You can review short gameplay showcase:


Detailed review showcase:


    You can also check out project’s repository on GitHub and Download the game to test it yourself.

Scroll to Top