3D Hack & Slash Platformer with Reactive Environment Combat
๐ฎ Play Demo โข ๐ Documentation โข ๐ Report Bug โข ๐ฌ Discussions
Cursed Angel is a 3D hack and slash platformer prototype that combines environmental interaction, companion AI, and transformation mechanics. Drawing inspiration from Ratchet & Clank's gadget-based exploration and Devil May Cry's stylish combat, the game features a unique "Source Code" narrative where players debug reality anomalies.
Players control Ripley, a human with an angel's soul, accompanied by Frank, a fox with an angel's soul who is immune to curses. Both characters have been granted access to Yahweh's Source Code and tasked with debugging reality anomalies while maintaining secrecy from mortal authorities.
  | 
  | 
  | 
  | 
# Required Software
- Unreal Engine 5.5+
- Visual Studio 2022 (C++ workload)
- Git with Git LFS
- Windows 10/11 (64-bit)- 
Clone the repository
git clone https://github.com/yourusername/cursed-angel.git cd cursed-angel - 
Setup Git LFS
git lfs install git lfs pull
 - 
Generate project files
# Right-click CursedAngel.uproject โ "Generate Visual Studio project files" - 
Open and compile
# Open CursedAngel.sln in Visual Studio # Build โ Build Solution (Ctrl+Shift+B) # Open CursedAngel.uproject in Unreal Engine
 
- Launch Unreal Engine and open the project
 - Press Play or open the 
ArenaDemolevel - Use the controls below to start playing!
 
| Input | Action | Input | Action | 
|---|---|---|---|
| WASD | Movement | Mouse | Camera Look | 
| Space | Jump | Left Click | Fire Curse Weapon | 
| Right Click | Heavy Attack | 123 | Switch Curse Weapons | 
| Q | Cursed Angel Transform | E | Request Frank Utility | 
| Weapon | Key | Effect | Environmental Interaction | 
|---|---|---|---|
| Corruption Rail | 1 | High damage piercing shot | Extends platforms for traversal | 
| Fragment Needles | 2 | Rapid-fire sticky projectiles | Activates hazard traps | 
| Void Mines | 3 | Area denial explosives | Creates protective barriers | 
| Utility | Effect | Duration | Cooldown | 
|---|---|---|---|
| Curse Amplifier | 2x weapon damage | 10s | 15s | 
| Element Highlighter | Shows interactive elements | 8s | 12s | 
| Emergency Shield | 50% damage reduction | 8s | 20s | 
CursedAngel/
โโโ ๐ Content/
โ   โโโ ๐ Characters/           # Player and companion assets
โ   โ   โโโ ๐ Ripley/          # Player character
โ   โ   โโโ ๐ Frank/           # Companion fox
โ   โโโ ๐ CurseWeapons/        # Weapon blueprints and effects
โ   โโโ ๐ Environment/         # Arena and reactive elements
โ   โโโ ๐ UI/                  # HUD and interface
โ   โโโ ๐ Audio/               # Sound effects and music
โโโ ๐ Source/CursedAngel/      # C++ source code
โ   โโโ ๐ CurseWeaponComponent.*
โ   โโโ ๐ CursedAngelComponent.*
โ   โโโ ๐ FrankAI.*
โ   โโโ ๐ FrankAIController.*
โ   โโโ ๐ ReactiveArenaElement.*
โโโ ๐ Config/                  # Engine configuration
โโโ ๐ Plugins/                 # Third-party plugins
๐ Reactive Environment System
UCLASS(BlueprintType, Blueprintable)
class CURSEDANGEL_API AReactiveArenaElement : public AActor
{
    GENERATED_BODY()
public:
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Reactive")
    ECurseWeaponType ReactsToWeapon;
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Reactive")
    EReactionType ReactionBehavior;
    
    UFUNCTION(BlueprintCallable, Category = "Reactive")
    void TriggerReaction(ECurseWeaponType CurseType, FVector ImpactLocation);
};๐ฆ Frank AI Controller
UCLASS(BlueprintType, Blueprintable)
class CURSEDANGEL_API AFrankAIController : public AAIController
{
    GENERATED_BODY()
public:
    UFUNCTION(BlueprintCallable, Category = "Frank AI")
    void SetAIState(EFrankAIState NewState);
    
    UFUNCTION(BlueprintCallable, Category = "Frank AI")
    void ActivateNearestUtility();
private:
    void UpdateFollowBehavior(float DeltaTime);
    void UpdateUtilityDetection();
};โก Cursed Angel Transformation
UCLASS(BlueprintType, Blueprintable)
class CURSEDANGEL_API UCursedAngelComponent : public UActorComponent
{
    GENERATED_BODY()
public:
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cursed Angel")
    float DataPoints = 0.0f;
    
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cursed Angel")
    float SpeedMultiplier = 1.5f;
    
    UFUNCTION(BlueprintCallable, Category = "Cursed Angel")
    void ActivateTransformation();
};Development Build
- 
Prerequisites
# Install Visual Studio 2022 with C++ workload # Install Unreal Engine 5.5 # Ensure Git LFS is configured
 - 
Compile C++ Classes
# Method 1: Visual Studio Open CursedAngel.sln โ Build โ Build Solution # Method 2: Unreal Engine Open project โ Compile button in toolbar
 - 
Package for Distribution
# In Unreal Editor File โ Package Project โ Windows (64-bit) # Select output directory # Wait for packaging to complete
 
| Metric | Target | Current | 
|---|---|---|
| Frame Rate | 60 FPS | โ 60+ FPS | 
| Memory Usage | < 4GB RAM | โ ~3.2GB | 
| Loading Time | < 10s | โ ~7s | 
| Package Size | < 2GB | โ ~1.8GB | 
- Core curse weapon system with environmental interactions
 - Frank companion AI with utility support
 - Cursed Angel transformation with visual effects
 - Arena combat with wave-based progression
 - Complete UI system with HUD and feedback
 
- Enhanced Frank personality system with more dialogue
 - Additional curse weapon types and combinations
 - Advanced enemy AI with varied behaviors
 - Performance optimizations and bug fixes
 
- Story mode with narrative progression
 - Multiple arena environments with unique mechanics
 - Save system and progression tracking
 - Steam integration and achievements
 
We welcome contributions from the community! Please read our Contributing Guidelines before getting started.
- ๐ด Fork the repository
 - ๐ฟ Create a feature branch
git checkout -b feature/amazing-feature
 - ๐ป Make your changes
 - ๐งช Test thoroughly
 - ๐ Commit with clear messages
git commit -m 'feat: add amazing feature' - ๐ค Push to your branch
git push origin feature/amazing-feature
 - ๐ Open a Pull Request
 
- Follow Unreal Engine C++ Coding Standards
 - Use meaningful commit messages (Conventional Commits)
 - Test all changes in both Editor and packaged builds
 - Update documentation for new features
 
Current Known Issues
| Issue | Severity | Status | 
|---|---|---|
| Frank occasionally gets stuck on complex geometry | Low | ๐ Investigating | 
| Transformation effects may persist after death | Medium | ๐ง In Progress | 
| Audio cues can overlap during rapid weapon switching | Low | ๐ Planned | 
| UI scaling issues on ultrawide monitors | Low | ๐ Planned | 
See our Issue Tracker for the complete list and to report new bugs.
This project is licensed under the MIT License - see the LICENSE file for details.
Asset Acknowledgments
| Asset Pack | Usage | License | 
|---|---|---|
| StylishCombatStarterKit | Melee combat foundation | Asset Store License | 
| Cat Girl Character Pack | Player character mesh | Asset Store License | 
| Weapon Asset Packs | Railgun, Needler, ProximityMineLauncher | Asset Store License | 
| Unreal Engine Starter Content | Environmental assets | Epic Games License | 
- Ratchet & Clank - Gadget-based environmental interaction
 - Devil May Cry - Stylish combat and transformation mechanics
 - .hack franchise - Digital reality narrative themes
 - MASH (1970) - Character personality and dialogue tone
 
- Epic Games for Unreal Engine 5
 - The Unreal Engine community for tutorials and support
 - Asset creators for high-quality content packs