Project Links
Feature
Card system - Full card interaction with juicy feedback.
Enemy - Finite state machine on enemy AI.
Terrain - Procedurally generated and destructible.
Spell - Six unique spells, synthesis through element cards.
Casting - Three different spell canvases for different spell.
VFX/SFX - Programmed perfectly to play along with casting spell.
Technical Overview
Card System Overview
The spell-casting process involves multiple managers and follows a structured event flow. The CardManager handles cube pickups, recognizes element types, and instantiates cards into the CardDeck. Cards reference Scriptable Objects (SO) defining their image, type, and name.

Card Interactions
Cards inherit from a base Card class that supports dragging, hovering, and clicking. Element cards cannot be dragged. Clicking an element card triggers the SynthesisManager, which, upon selecting two cards, synthesizes a spell card and adds it to the deck. Spell cards, unlike element cards, are draggable.



Spell Casting Process
Dragging a spell card to a certain height triggers the CastSpellEvent, handled by the CastSpellManager. Depending on the spell type (Skill Shot, Range Skill, Self Skill), a corresponding skill indicator appears. Releasing the mouse spawns the spell prefab at the cursor’s position.

Enemy Interaction
Spells interact with enemies’ RigidBody, stunning them and applying force based on spell power. Enemies move using AddForce
and inherit from a base Enemy class that handles stun, pushback, and player attacks. Boss enemies use a state machine with three phases: Dashing (quick attack), Slaying (continuous melee), and Shooting (ranged attacks).

Player Feedback
Spells feature particle effects, screen shake, and sound effects to enhance impact. The goal is to provide instant and dramatic feedback for an engaging experience.


What I Learn
Through this project, I gained hands-on experience in designing and implementing a card-based spell-casting system. This involved working with event-driven architecture, where multiple managers controlled interactions such as pickup, synthesis, and spell execution.
I improved my skills in game physics and interaction design by developing spells that stun, push, and affect enemy movement. Along the Unity's Rigidbody system, I ensured responsive feedback with screen shake, particle effects, and sound design to add juice.
Additionally, I worked on AI behavior by implementing a boss state machine with dashing, slaying, and shooting phases. This required careful balancing to create engaging and dynamic encounters.
Playtesting played a crucial role in refining mechanics. I learned how to gather and analyze player feedback to improve usability, such as adjusting card deck layout and adding tutorial prompts to make the synthesis process more intuitive.
Lastly, this project reinforced the importance of iterative development and problem-solving. I tackled issues like inconsistent force application and refined gameplay flow through multiple revisions, ensuring a polished final product.