Skip to content

tj1023/BlockPop2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧩 BlockPop (Match-3 퍼즐 게임)

Unity C# DOTween

📖 프로젝트 개요

  • 개발 엔진: Unity 6.2
  • 사용 언어: C#
  • 장르: 2D 매치-3 퍼즐
  • 개발 인원: 1인 개발
  • 특징: 2D 타임어택 방식의 매치3(Match-3) 퍼즐 게임입니다.

💡 기술적 특징 및 문제 해결

1. 이벤트 기반 아키텍처(Event-Driven Architecture)를 통한 결합도 최소화

  • 문제 인식: 게임 로직이 복잡해짐에 따라 Manager 객체 간에 서로를 직접 참조(싱글톤 등)하는 방식은 결합도를 높이고 확장을 어렵게 만듭니다.
  • 해결 방안: GameEvents 정적 클래스를 통해 C# Action 델리게이트 기반의 이벤트 파이프라인(Publish-Subscribe 패턴)을 구축했습니다.
  • 성과: 점수 획득, 시간 변경, 블록 스왑 등 주요 트리거를 이벤트로 브로드캐스팅하여, GameManager, GridManager, UIManager 등이 서로의 존재를 알 필요 없이 독립적으로 동작합니다. 모듈화 및 코드의 응집력이 크게 향상되었습니다.

2. Match-3 알고리즘 구현

  • 매치 검출 로직:
    • 블록 상호 스왑 후 가로/세로 방향을 순회하여 동일 색상을 탐색하는 CheckMatchAt 메서드를 구현했습니다.
    • T자 및 L자 등 교차 폭발이 일어날 때, HashSet<(int y, int x)> 자료구조를 활용해 중복된 블록 판정을 효율적이고 안전하게 걸러냅니다 (GetMatchedBlocks).
  • 코루틴을 활용한 비동기 연쇄 폭발 처리:
    • 매치 확인 ➔ 파괴 및 점수 합산 ➔ 상단 블록 낙하 ➔ 새 블록 보충의 복잡한 사이클을 코루틴(IEnumerator) 단계별 지연을 통해 직관적으로 제어합니다. 다중 콤보 처리가 안정적으로 이루어집니다.

3. 교착 상태 방지

  • 문제 인식: 운이 없을 경우, 플레이어가 더 이상 어떠한 블록을 옮겨도(1회 스와프 한정) 매치가 불가능한 '교착 상태'에 빠져 게임 진행이 막힐 수 있습니다.
  • 해결 방안: 플레이어에게 보이지 않게 백그라운드로 보드 내 모든 인접 블록의 가상 swap을 시뮬레이션하는 예외 처리 로직(HasAnyPossibleSwap)을 도입했습니다.
  • 성과: 매 폭발 사이클이 끝난 후 유효한 매치 케이스가 한 개도 없다고 판단되면, 코루틴 루틴 안에서 즉시 전체 블록을 재배열 하도록 구현하였습니다.

4. 상태 락 메커니즘을 통한 입력 버그 원천 차단

  • 문제 인식: 물리적인 블록 이동 및 DOTween 애니메이션이 재생 중일 때 사용자의 다형적인 클릭 입력이 들어오면, 그리드 배열의 논리적 2D 인덱스와 실제 View(오브젝트 위치) 간 동기화가 깨지는 버그가 발생합니다.
  • 해결 방안: 세마포 개념을 차용한 busyCount 락 변수를 구현하였습니다.
  • 성과: 작업 처리 전 Lock(), 완료 후 Unlock()을 호출하여 상태를 IsBusy로 만들고, 연산이 완전히 끝날 때까지 유저의 입력 자체를 차단하여 시스템 안정성을 다졌습니다.

✔️ 핵심 클래스 요약

  • GameEvents: 중앙 통제 통신망 역할을 하는 이벤트 허브
  • GridManager: 매치3 알고리즘의 핵심 (그리드 생성, 매치 판정, 중력 낙하 배열 연산 처리)
  • InputManager: Physics2D.Raycast 기반 정밀한 유저 마우스 조작 판별 및 이벤트 발송
  • Block: DOTween을 활용한 부드러운 위치 이동, 색상 및 UI 파티클 FX 상태를 가지는 객체
  • GameManager: 타임어택 플로우 통제

About

unity practice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages