Arena invader

  • 💡 게임 개요

    ✨ 장르

    • 보드 게임

    📱 플랫폼

    • Windows
    • WebGL(멀티 플레이 불가능)

    ⏰ 개발 기간

    • 게임 플레이 : 2024-11-08 ~ 2023-10-13
    • 멀티플레이: 2025-01-24 ~ 진행중
  • 💡 게임 개요

    🛠 사용 도구

    • Unity
    • Unity Netcode: 네트워크 기능 구현에 이용
    • EHTool: UI 관리, 언어 변경 기능에 이용
  • 💡 게임 개요

    👤 담당

    • 게임 기획
    • 주사위 동기화 기능
    • 말 이동 및 보드 시스템
    • 능력치 시스템
    • 유니티 네트워크

    🏆 수상

    • 2024년 경북 게임인 게임잼 2등(팀: 나폴리맛 피자)
  • 📖 게임 소개

    Arena Invader는 윷놀이의 기물 이동 방식과 AOS의 성장 요소를 결합한 턴제 게임입니다.

    주사위를 굴려 나온 숫자만큼 기물을 움직이며 능력치를 획득, 전투합니다.

    가장 오랫동안 살아남은 사람이 승리합니다.

  • 🛠️ 주요 기능 및 기여

    ♟️ 기물 이동 및 도착 이벤트 시스템 모듈화

    • 게임 내 기물의 이동 경로 지정(출발-경유-도착) 방식과 도착 지점에서 발생하는 이벤트를 추상 클래스를 활용하여 모듈화 및 추상화
    • 이동 경로: 다양한 경로 지정 방식을 추상 클래스로 구현
      • 출발, 경유 모두 다음 이동 위치가 A
      • 출발은 다음 이동 위치가 A, 경유는 다음 이동 위치가 B
    • 도착 이벤트: 기물 도착 시 발생 이벤트를 추상 클래스로 분리
      • 새로운 유형의 도착 이벤트를 유연하게 확장할 수 있도록 설계
      • 능력치 상승, 전투 발생, 상점 입장 이벤트 구현 시간 단축
  • 🛠️ 주요 기능 및 기여

    ♟️ 기물 이동 및 도착 이벤트 시스템 모듈화

    • 이동/도착 효과: 기물 이동 및 도착 시 발생하는 시각적/청각적 효과를 IMoveEffect, IArrivalEffect 추상 클래스로 분리
      • 각 효과를 독립적으로 개발하고 기물에 자유롭게 조합하여 적용할 수 있도록 단일 책임 원칙을 강화
    • 모듈화를 통해 게임 규칙과 효과 추가에 드는 개발 비용을 절감하고 시스템의 유연성을 크게 향상
  • 🛠️ 주요 기능 및 기여

    🎲 재사용 가능한 주사위 시스템 구현:

    • 룰렛, 다트 방식의 주사위 값 선택 기능을 구현
    • 시드 값 공유 메커니즘을 통해 네트워크 환경에서 주사위 결과의 동기화를 보장
    • 이를 통해 모든 플레이어가 동일한 주사위 결과를 경험하도록 하여 공정성을 확보
    • 예측 불가능하지만 통제 가능한 게임 플레이 경험을 제공
  • 🛠️ 주요 기능 및 기여

    🔥 리팩토링: 캐릭터 조작 방식의 분리 및 유연성 확보

    • 개선 전: 기존에는 캐릭터 자체에 조작 방식(AI 또는 사용자 조작)이 통합
      • 동일한 캐릭터를 AI와 사용자 모두 조작하게 하려면 중복 개발이 필요
    • 개선: 캐릭터 행동 선택 인터페이스(IActionSelector)를 도입하여 캐릭터와 캐릭터의 행동 선택 방식을 분리
      • 전략 패턴을 적용
      • Character는 IActionSelector에 의해 조작
        • AI 캐릭터에는 AISelector가 할당
        • 사용자 조작 캐릭터에는 GUIActionSelector가 할당
      • 하나의 캐릭터 클래스로 AI 및 사용자 조작을 모두 지원
        • 캐릭터의 동일성을 보장
          • 캐릭터 개발에 드는 시간, 공간 비용을 감소
        • 향후 새로운 조작 방식을 추가하는 데에도 용이