The Witch of Cibetan

About

This project was inspired by the Sokpop game Hoco Poco, which uses spells to knock enemies off the platform. The game also features a card system in which the player can freely combine elements to create synthesis spells. Every element combination results in different spells with different effects. Use the spell wisely and become the greatest witch!​

Project Info

  • Role: Gameplay Programmer, Game Designer
  • Team Size: 1
  • Time Frame: 3 months
  • Engine: Unity

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.

technical flow chart

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.

elementCard spell Card Synthesis

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.

skillshot

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).

slay stage

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.

elementCard spell Card

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.