# Unreal Engine Bullet Hell Game - Complete Tutorial This tutorial recreates the Unity "magisterka_1" bullet-hell shooter in Unreal Engine 5. ## Game Features - Player ship with movement and shooting - Enemies that move downward with sinusoidal horizontal motion - Enemy spawning that increases over time - Radial bullet patterns from enemies - Score, lives, and timer UI - Special "bomb" ability to clear screen - 5-minute game duration with victory/defeat conditions --- ## 🆕 Two Approaches Available This tutorial offers **two ways** to implement the game: ### 1. **Code-First Approach (RECOMMENDED)** ⚡ **→ [🚀 QUICK START: 3-Minute Code-First Guide](QUICKSTART-CODE-FIRST.md)** ⭐ **→ Start the C++ Tutorial:** - [Part 1 (C++): Project Setup](part-1-cpp-project-setup.md) - [Part 2 (C++): Create Player](part-2-cpp-create-player.md) - [Part 3 (C++): Create Bullet](part-3-cpp-create-bullet.md) - [Parts 4-9 (C++) Summary](part-4-9-cpp-summary.md) - ✅ **90% faster** - copy-paste variable blocks instead of clicking UI - ✅ **Version control friendly** - readable Git diffs, not binary files - ✅ **Easier to replicate** - copy entire class files between projects - ✅ **Better for teams** - code review, refactoring tools, find/replace - ✅ **Type-safe** - compiler catches errors at compile time **Best for:** Anyone comfortable with C++ or wanting to learn modern game development workflows. ### 2. **Blueprint-Heavy Approach** 🎨 **→ [Start the Blueprint Tutorial](#table-of-contents)** (see below) - ✅ **Visual node editing** - see logic flow graphically - ✅ **Instant iteration** - no compile time for Blueprint changes - ✅ **Designer-friendly** - non-programmers can modify behavior **Best for:** Complete Unreal beginners, visual learners, or rapid prototyping. ### Comparison | Task | Code-First (C++) | Blueprint | |------|-----------------|-----------| | Define 12+ variables | 2 minutes (copy-paste) | 15 minutes (clicking) | | Version control | ✅ Readable diffs | ❌ Binary files | | Refactoring | ✅ IDE tools | ❌ Manual | | Full game time | ~2-3 hours | ~6-8 hours | **💡 Pro Tip:** You can combine both! Use C++ for logic/variables, Blueprints for visual assets. **📖 Migrating from Blueprint?** See [Migration Guide in Quickstart](QUICKSTART-CODE-FIRST.md#migrating-from-blueprint-to-c) --- ## Table of Contents ### Part 1: Project Setup - [Step 1.1: Create New Project](part-1-project-setup.md#step-11-create-new-project) - [Step 1.2: Set Up 2D Game View](part-1-project-setup.md#step-12-set-up-2d-game-view) - [Step 1.3: Create Folder Structure](part-1-project-setup.md#step-13-create-folder-structure) ### Part 2: Create the Player - [Step 2.1: Create Player Blueprint](part-2-create-player.md#step-21-create-player-blueprint) - [Step 2.2: Add Player Visual Components](part-2-create-player.md#step-22-add-player-visual-components) - [Step 2.3: Create Player Variables](part-2-create-player.md#step-23-create-player-variables) - [Step 2.4: Set Up Enhanced Input System](part-2-create-player.md#step-24-set-up-enhanced-input-system) - [Step 2.5: Create Player Firing Logic](part-2-create-player.md#step-25-create-player-firing-logic) - [Step 2.6: Create Player Damage and Special Ability](part-2-create-player.md#step-26-create-player-damage-and-special-ability) ### Part 3: Create the Bullet - [Step 3.1: Create Bullet Blueprint](part-3-create-bullet.md#step-31-create-bullet-blueprint) - [Step 3.2: Bullet Movement Logic](part-3-create-bullet.md#step-32-bullet-movement-logic) - [Step 3.3: Bullet Collision Logic](part-3-create-bullet.md#step-33-bullet-collision-logic) - [Step 3.4: Complete Player Firing Logic](part-3-create-bullet.md#step-34-complete-player-firing-logic-bp_player) ### Part 4: Create the Enemy - [Step 4.1: Create Enemy Blueprint](part-4-create-enemy.md#step-41-create-enemy-blueprint) - [Step 4.2: Enemy Initialization](part-4-create-enemy.md#step-42-enemy-initialization) - [Step 4.3: Enemy Movement Logic](part-4-create-enemy.md#step-43-enemy-movement-logic) - [Step 4.4: Enemy Firing Logic](part-4-create-enemy.md#step-44-enemy-firing-logic) - [Step 4.5: Enemy Damage and Death](part-4-create-enemy.md#step-45-enemy-damage-and-death) - [Step 4.6: Complete Special Ability in BP_Player](part-4-create-enemy.md#step-46-complete-special-ability-in-bp_player) - [Step 4.7: Complete Bullet Collision Logic](part-4-create-enemy.md#step-47-complete-bullet-collision-logic-bp_bullet) ### Part 5: Create Enemy Spawner - [Step 5.1: Create Spawner Blueprint](part-5-create-spawner.md#step-51-create-spawner-blueprint) - [Step 5.2: Spawn Rate Curve](part-5-create-spawner.md#step-52-spawn-rate-curve) - [Step 5.3: Spawning Logic](part-5-create-spawner.md#step-53-spawning-logic) ### Part 6: Create Game Director - [Step 6.1: Create Game Director Blueprint](part-6-game-director.md#step-61-create-game-director-blueprint) - [Step 6.2: Game Director Initialization](part-6-game-director.md#step-62-game-director-initialization) - [Step 6.3: Game Director Update Logic](part-6-game-director.md#step-63-game-director-update-logic) ### Part 7: Create Score Manager / UI - [Step 7.1: Create UI Widget Blueprint](part-7-score-manager-ui.md#step-71-create-ui-widget-blueprint) - [Step 7.2: Design HUD Layout](part-7-score-manager-ui.md#step-72-design-hud-layout) - [Step 7.3: Create Score Manager Blueprint](part-7-score-manager-ui.md#step-73-create-score-manager-blueprint) - [Step 7.4: Score Manager Initialization](part-7-score-manager-ui.md#step-74-score-manager-initialization) - [Step 7.5: Score Manager Functions](part-7-score-manager-ui.md#step-75-score-manager-functions) ### Part 8: Create Game Mode and Level - [Step 8.1: Create Custom Game Mode](part-8-game-mode-level.md#step-81-create-custom-game-mode) - [Step 8.2: Configure Project to Use Game Mode](part-8-game-mode-level.md#step-82-configure-project-to-use-game-mode) - [Step 8.3: Create Game Level](part-8-game-mode-level.md#step-83-create-game-level) - [Step 8.4: Set Up Level Components](part-8-game-mode-level.md#step-84-set-up-level-components) - [Step 8.5: Set Default Level](part-8-game-mode-level.md#step-85-set-default-level) ### Part 9: Final Setup and Testing - [Step 9.1: Assign Blueprint References](part-9-final-setup.md#step-91-assign-blueprint-references) - [Step 9.2: Create Final Visuals](part-9-final-setup.md#step-92-create-final-visuals-replace-placeholder) - [Step 9.3: Add Background](part-9-final-setup.md#step-93-add-background-optional) - [Step 9.4: Test the Game](part-9-final-setup.md#step-94-test-the-game) - [Step 9.5: Build Standalone Game](part-9-final-setup.md#step-95-build-standalone-game) ### Appendices - [Appendix A: Complete Variable Reference](appendix-a-variables.md) (Blueprint) - [Appendix B: Troubleshooting](appendix-b-troubleshooting.md) - [Appendix C: Unity to Unreal Conversion Notes](appendix-c-unity-conversion.md) --- ## Quick Start ### For Code-First Approach (Recommended) 1. Read [3-Minute Quickstart](QUICKSTART-CODE-FIRST.md) 2. Follow the C++ tutorial parts: - [Part 1 (C++): Project Setup](part-1-cpp-project-setup.md) - [Part 2 (C++): Create Player](part-2-cpp-create-player.md) - [Part 3 (C++): Create Bullet](part-3-cpp-create-bullet.md) - [Part 4 (C++): Create Enemy](part-4-cpp-create-enemy.md) - [Part 5 (C++): Create Spawner](part-5-cpp-create-spawner.md) - [Part 6 (C++): Create Game Director](part-6-cpp-create-game-director.md) - [Part 7 (C++): Create UI](part-7-cpp-create-ui.md) - [Part 8 (C++): Create Game Mode](part-8-cpp-create-game-mode.md) - [Part 9 (C++): Final Setup](part-9-cpp-final-setup.md) 3. **Complete the game in 2-3 hours** instead of 6-8 hours! 4. **Already have Blueprint project?** See [Migration Guide](QUICKSTART-CODE-FIRST.md#migrating-from-blueprint-to-c) ### For Blueprint Approach 1. Start with [Part 1: Project Setup](part-1-project-setup.md) 2. Follow each part in order 3. Test frequently using the "EXPECTED RESULT" sections 4. Use the [Troubleshooting](appendix-b-troubleshooting.md) appendix if you encounter issues --- ## Navigation Each page includes: - **← Previous** and **Next →** links at the top and bottom - Links back to this index - Cross-references to related sections --- _This tutorial is part of a master's thesis comparing Unity and Unreal Engine._