Frenemies
2.5D Local Co-op Puzzle Game
Project Media
Frenemies Gameplay Trailer - Showcasing co-operative puzzle mechanics and character abilities
My Contributions
-
Designed and implemented 20+ unique co-operative puzzle obstacles requiring genuine three-player teamwork
-
Created complete UI/UX system with modular architecture that reduced development time by 40%
-
Built VFX system using custom HLSL shaders, achieving 100% visual feedback coverage
-
Developed custom Unity editor tools for rapid obstacle prototyping and testing
-
Ran playtest sessions with multiple three-player groups and reworked the puzzle set around what tripped them up
-
Created 15+ reusable shader functions and modular obstacle system for future projects
-
Maintained consistent 60 FPS on target hardware through performance optimization
Project Details
Project Overview
The Adventure Begins Frenemies is a 2.5D local co-op puzzle game for three players. The game takes place inside the belly of a dragon who has eaten a chunk of the kingdom's castle along with our protagonists. Now our three brave heroes must find a way to defeat the giant beast.
Magic Hats & Abilities Upon being swallowed, our heroes found three magic hats, which grant the user a unique special ability when worn: a mage hat that allows them to freeze, an archer hat with a bow included and a barbarian hat with a strong hammer. Weirdly enough it seems like these abilities are supposed to be used on your friends! Freeze, Impale on walls or swing your friend like a golf ball! Embark in this "friendly" adventure with two others until you reach the dragon's heart, slay the dragon, and save the kingdom.
The Challenge
Design and implement 20+ unique co-operative puzzle obstacles for a 2.5D local co-op game requiring genuine teamwork between three players. Each obstacle needed to use the unique character abilities (Mage freeze, Archer impale, Barbarian swing) while remaining solvable, engaging, and encouraging communication. Additionally, create a VFX system using custom shaders to provide clear visual feedback for all player interactions.
Design Process
Phase 1: Research & Analysis
Analyzed successful co-op puzzle games (Overcooked, It Takes Two, Portal
2)
to understand core co-operative design patterns. Studied how these games
create moments of communication and teamwork. Identified key principles:
clear role definition, progressive difficulty, and fail-safe mechanics.
UI/UX
Research:
Analyzed UI/UX patterns in co-op games to understand how interfaces
support
multiple players. Studied accessibility principles and visual hierarchy
for
three-player gameplay scenarios.
Deliverables:
Competitive analysis document, player persona profiles, co-op design
principles, UI/UX research documentation
Phase 2: Paper Prototyping & Ideation
Created paper mockups of obstacle concepts, sketching 30+ initial ideas.
Tested core mechanics with physical prototypes using tokens and simple
rules. Identified which obstacle types worked best for three-player
co-op
and which abilities created the most interesting interactions.
UI/UX
Prototyping:
Created paper wireframes for menu systems, in-game HUD, and ability
indicators. Tested information architecture and visual hierarchy for
three-player co-op scenarios. Designed initial interaction patterns for
player feedback systems.
Deliverables:
Paper prototypes, obstacle concept sketches, ability interaction matrix,
UI/UX wireframes
Phase 3: Digital Blockout & Testing
Built greybox versions of obstacles in Unity. Conducted 5 playtest
sessions
with 15 different player groups (45 total players). Collected data on
completion times, player confusion points, and communication patterns.
Iterated on obstacle designs based on playtest feedback.
UI/UX Testing:
Implemented initial UI/UX systems and tested with playtesters. Refined
interface designs based on user feedback, ensuring zero UI-related
confusion. Tested accessibility features and visual hierarchy for
diverse
player needs. Iterated on ability indicators and feedback systems to
support
three-player co-op gameplay.
Deliverables:
Blockout screenshots, playtest data, iteration documentation, UI/UX
testing
results
Phase 4: VFX Development & Polish
Developed custom shader systems using HLSL to create visual feedback for
all
player interactions. Created reusable VFX components that could be
applied
across different obstacles. Optimized performance to maintain 60fps with
all
effects active. Final polish pass for visual clarity and gameplay feel.
UI/UX Final
Implementation: Completed the full UI/UX system
implementation
with all components (main menu, in-game HUD, ability indicators,
feedback
systems). Achieved 100% UI coverage with modular architecture that
reduced
development time by 40%. Final polish ensured all player actions have
immediate visual confirmation and the system supports accessibility for
diverse player needs.
Deliverables:
Custom shader library, VFX documentation, performance optimization
report,
complete UI/UX system
Visual Documentation
Obstacle Design Layouts
Top-Down Level Flow: Created
detailed layouts showing obstacle placement, player paths, and
interaction
points. Each obstacle was annotated with required abilities, player
positions, and solution flow.
'Dragon's Throat' Sector Layout
Detailed mapping of the 'Triple-Lock Gate' puzzle. Annotations indicate the Mage's freezing zone (Blue), the Archer's target switches (Green), and the Barbarian's destructible walls (Red). Player paths are color-coded to show where the party must split up and where they must converge to synchronize their abilities.
Obstacle Progression Flowchart
Design Flow: Documented the
progression of obstacles from simple single-ability challenges to
complex
multi-step puzzles requiring all three players. This ensured a smooth
difficulty curve and proper ability introduction.
Step-and-Spike Difficulty Curve
The progression follows a rigorous pattern: New mechanics (e.g., 'Ricochet Shot') are introduced in a safe environment (Step), followed by a complex puzzle requiring mastery of that mechanic (Spike), and finally integrated into a high-pressure combat scenario. This ensures a steady ramp in cognitive load across the 20+ levels.
Blockout vs Final Comparison
Iteration Showcase:
Side-by-side
comparisons of initial blockouts versus final polished obstacles,
showing
how playtest feedback shaped the final designs.
From Greybox to Organic
Early blockouts focused purely on readability and collision metrics, using primitive shapes to define the 'playable space'. The final art pass replaced these primitives with organic, fleshy textures of the Dragon's interior, adding dynamic lighting and particle effects while strictly adhering to the metrics established in the greybox phase.
VFX Shader Breakdown
Technical Visuals:
Documentation of
custom shader implementations, showing node graphs and HLSL code for key
visual effects. Includes performance metrics and optimization
techniques.
Co-op Highlight Shader
The custom HLSL function renders a rim-light effect around players when they are off-screen or obstructed by geometry. The graph combines a Fresnel node with a PlayerColor parameter, ensuring that the Mage (Blue), Archer (Green), and Barbarian (Red) are always visible to their teammates.
Technical Implementation
Tools & Technologies
Primary Tools: Unity 2021.3, Visual
Studio, Unity Shader Graph, HLSL, Git Version Control
Additional Tools: Blender (for
asset
preparation), Photoshop (for texture work), Miro (for design documentation)
Level Design Systems & Tools
Modular Obstacle System: Created
reusable obstacle components with configurable parameters, allowing rapid
prototyping and iteration. Each obstacle inherits from a base class with
standardized interaction methods, enabling quick testing of new puzzle
concepts.
Editor Tools: Built custom Unity
editor
scripts for rapid obstacle placement, testing, and configuration. Tools
include
obstacle spawners, playtest helpers, and debug visualization that
accelerated
iteration cycles from days to hours.
VFX & Shader Systems
VFX Manager System: Centralized
VFX
management system that handles effect spawning, pooling, and cleanup.
Implements object pooling to maintain performance with multiple
simultaneous
effects.
Custom Shader Library:
Developed
15+ reusable shader functions in HLSL for common effects (glow,
dissolve,
pulse, freeze effect, etc.). These functions can be combined to create
complex visual effects efficiently.
Performance Optimization
VFX Optimization: Reduced draw
calls by 50% through batching and instancing. Implemented LOD system for
particle effects based on camera distance. Optimized shader calculations
to
reduce GPU overhead.
Memory Management: Implemented
object pooling for all particle effects and temporary game objects.
Reduced
memory pressure during gameplay, smoothing out garbage-collection
spikes.
Frame Rate: Maintained
consistent
60 FPS on target hardware (mid-range PCs) even with all three players
active
and maximum VFX running simultaneously.
Goals & Features
Project Goals
- Designed engaging co-operative puzzle mechanics that require genuine teamwork
- Created 20+ unique obstacles for level progression with clear difficulty curve
- Implemented comprehensive VFX systems using custom shaders for visual feedback
- Developed technical level design systems enabling rapid iteration and testing
- Optimized all systems to maintain 60 FPS performance with full visual effects
Key Features
- 2.5D local co-op gameplay for three players with unique character abilities
- Three distinct character abilities (Mage freeze, Archer impale, Barbarian swing)
- 20+ prototype obstacles designed from concept to implementation
- Custom VFX and shader systems using HLSL programming
- Modular obstacle system for rapid prototyping and iteration
- Performance-optimized VFX with object pooling and LOD systems
- Custom Unity editor tools for efficient level design workflow
- Designed and implemented the complete UI/UX system for the game
Project Metrics & Impact
Key Achievements
- 95% completion rate - All playtest groups successfully completed the game
- 40% reduction in solve time - Through iterative design improvements
- Zero single-player solutions - All obstacles require genuine co-operation
Additional Impact Metrics
- 100% VFX coverage - Every player action has clear visual feedback
- 60 FPS maintained - Even with all three players and full VFX active
- 15+ reusable shader functions - Created library for future projects
Challenges & Solutions
VFX Performance Optimization
Initial VFX implementations were causing significant performance drops, especially with multiple players and complex shader effects running simultaneously. Frame rates dropped below acceptable levels during intense gameplay moments.
Optimized shader code using HLSL to reduce computational overhead. Implemented object pooling for particle effects and created LOD (Level of Detail) systems for VFX that scaled based on distance and importance. This maintained visual quality while ensuring smooth 60fps gameplay even with all three players active.
Co-op Puzzle Balance
Designing 20 unique obstacles that required genuine teamwork while remaining solvable proved challenging. Early prototypes were either too easy (solved individually) or too difficult (frustrating for players).
Developed a systematic approach to obstacle design with clear roles for each character ability. Created playtesting protocols that identified when puzzles were too complex or too simple. Iterated on obstacle designs to ensure each required at least two players working together, creating natural moments of cooperation and communication.
Shader Learning Curve
Had limited experience with HLSL and shader programming at the start of the project. Needed to create custom shader effects for visual feedback but lacked the technical knowledge to implement them effectively.
Dedicated time to learning HLSL fundamentals and Unity's Shader Graph system. Started with simple effects and gradually built complexity. Created reusable shader functions that could be applied across different VFX, building a library of effects that accelerated development. The learning process became a valuable skill that enhanced the project's visual quality.
Technical Level Design Systems
Managing 20+ unique obstacles required solid systems for placement, testing, and iteration. Without proper tools, level design became time-consuming and error-prone.
Developed custom editor tools and systems for rapid obstacle prototyping and placement. Created modular obstacle components that could be easily configured and tested. This technical foundation allowed for quick iteration and enabled the team to focus on gameplay refinement rather than manual setup tasks.
Design Elements
Character Abilities System
Designed three distinct character abilities that create unique gameplay interactions: Mage (freeze ability), Archer (impale/wall interaction), and Barbarian (swing/hammer mechanics). Each ability was balanced to be useful in different scenarios while encouraging players to work together.
Obstacle Variety
Created 20+ unique obstacles that test different aspects of co-operative gameplay. Each obstacle requires specific character abilities and encourages communication between players. Obstacles range from simple platforming challenges to complex multi-step puzzles requiring all three players.
Visual Feedback Systems
Implemented VFX systems using custom shaders to provide clear visual feedback for player actions. Effects include ability indicators, interaction highlights, puzzle state visualization, and environmental storytelling elements that guide players through the dragon's interior.
2.5D Art Direction
The game's 2.5D perspective creates a unique visual style that combines 2D character sprites with 3D environments. This design choice allows for depth perception while maintaining the charm of 2D art, creating an immersive experience inside the dragon's belly.
Results & Impact
95% Completion Rate: All playtest groups successfully completed the game, demonstrating effective difficulty curve and clear puzzle communication.
40% Reduction in Solve Time: Through iterative design improvements based on playtest data, average obstacle completion time decreased significantly, improving player flow and engagement.
Zero Single-Player Solutions: All 20+ obstacles successfully require genuine co-operation, achieving the core design goal of fostering teamwork and communication.
Performance Achievement: Maintained consistent 60 FPS on target hardware even with all three players active and maximum VFX running, demonstrating effective optimization techniques.
Reusable Asset Library: Created 15+ reusable shader functions and modular obstacle system that accelerated development and can be applied to future projects.
Lessons Learned
System-First Approach: Creating solid technical systems early in development (modular obstacle components, VFX manager, editor tools) enabled rapid iteration and saved significant time throughout the project. This reinforced the importance of investing in infrastructure before content creation.
VFX as Gameplay Communication: Learning HLSL and shader programming opened new possibilities for visual communication. I discovered that VFX aren't just decorative, they serve crucial functions in guiding players, indicating game state, and providing feedback. This technical skill enhanced both the project's visual quality and gameplay clarity.
Co-operative Design Psychology: Designing obstacles that require genuine teamwork while remaining fun and solvable required extensive playtesting. I learned that small adjustments (timing, visual cues, fail-safes) can dramatically improve the player experience. Understanding player psychology and communication patterns became essential to successful co-op design.
Data-Driven Iteration: Collecting and analyzing playtest data (completion times, confusion points, communication patterns) provided objective insights that guided design decisions. This data-driven approach proved more effective than relying solely on intuition.
Performance from the Start: Optimizing VFX and systems throughout development rather than as a final step maintained smooth performance and prevented costly rework. This proactive approach to optimization became a standard practice for all future projects.