게임 개발 포트폴리오 | Foster The Monster

내일배움캠프 1기 Unity 게임 개발 과정 트랙 수료생 최종 프로젝트 'Foster The Monster'을 소개합니다.
Feb 23, 2024
게임 개발 포트폴리오 | Foster The Monster

🌌 Foster The Monster 🌌


notion image
Video preview

🚀차원을 넘어, 인류의 새로운 운명을 개척하세요. 🚀

📖
2080년 무분별한 기술로 황폐해진 지구, 인류의 새로운 터전을 찾기 위한 Bogus Inc.의 신임 연구원 크리스토퍼 스털링은 차원 이동 장치로 다양한 행성을 탐험하며 인류 생명 발전에 도움이 되는 다양한 생명체들을 포획하고 연구한다. 이 생명체들은 ‘포스몬’으로 불리며, 크리스토퍼는 인류에게 어떠한 위협을 줄지 모르는 상황에서도 무분별한 연구를 계속하는데…

🕹️ 장르 🕹️


notion image
💳 덱 빌딩 💳
🎮 액션 어드벤처 🎮
🌌 코즈믹 호러 🌌
매일 다른 카드를 선택하여, 포스몬을 관리하고 연구하는 데 중요한 역할을 합니다. ”돈 ! 돈 ! 돈 !”
플레이어가 다양한 행성을 탐험하며, 포스몬과 상호작용(전투 등)이 일어납니다. (1급 보안 사항)은 뜨거운걸 좋아해? 내가 더 뜨겁게 해주지.”
그로테스크한 몬스터들과 우주를 넘나들며 상호작용하여 게임의 긴장감과 몰입도를 높입니다. ”뭐? 저 녀석들도 외모를 가꾼다고? 거짓말! “

⚙️ 기술 스택 ⚙️

notion image
  • .Net - Standard 2.1
  • C# - 9.0
  • Visual Studio - 2022
  • Unity - 2022.3.2f1
  • GitHub
Design
  • Photoshop
  • Illustrator

🛠️ 클라이언트 구조 🛠️

디자인 패턴 & 아키텍처
notion image
  • 디자인 패턴
    • 싱글턴 패턴
      싱글턴 패턴은 게임의 매니저 클래스들에 적용되어, 전역적으로 단 하나의 인스턴스만을 보장하기 위해 사용했습니다. 싱글턴 패턴을 사용함으로써 매니저 클래스들은 쉽게 접근되고 사용될 수 있으며, 메모리 오버헤드인스턴스 생성 비용을 줄일 수 있었습니다. 또한 제네릭 구현을 통해, 다양한 타입의 싱글턴 관리자 클래스를 효율적으로 생성하고 관리할 수 있게 제작했습니다.
      옵저버 패턴
      옵저버 패턴은 언어 변경과 몬스터의 감각기관 교체 기능에 사용되었습니다. 옵저버 패턴을 통해 언어 설정이 변경될 때, 이를 의존하는 다른 컴포넌트에 자동 알림을 보내어 동기화를 유지할 수 있기 때문에 사용했습니다. 또한 몬스터의 감각기관 교체에도 적용되어, 감각기관 변경 시 몬스터의 행동이 자동으로 업데이트되는 방식에도 옵저버 패턴이 사용되었습니다.
      전략 패턴
      전략 패턴은 플레이어가 무기를 교체할 때 사용되었습니다. 전략 패턴을 통해 플레이어는 무기(컨텍스트)를 통해 다양한 무기 전략(일반 무기, 스페셜 무기)을 선택할 수 있으며, 각 무기의 구체적인 동작은 전략 인터페이스를 통해 구현되어 무기 교체와 사용이 유연하게 이루어지도록 제작되었습니다. 또한 카드시스템에서도 다양한 카드 유형에 대한 공통적인 동작을 구현하고, 이를 상속받는 구체적인 카드 클래스들은 상황에 맞는 특정 동작을 실행시킵니다. 게임의 흐름에 따라 카드를 유연하게 교체하거나 새로운 카드 전략을 쉽게 추가할 수 있습니다.
      오브젝트 풀 패턴
      오브젝트 풀 패턴은 오브젝트 매니저 클래스에서 사용되어, 자주 사용되는 객체들을 풀에 저장하고 필요할 때 재사용하기 위해 사용되었습니다. 오브젝트 풀 패턴은 메모리 할당과 해제의 비용을 줄이고 성능을 최적화하는 데 효과가 있기 때문에 사용했습니다. 또한 객체는 Asset Reference를 통해 생성되며, 사용 후에는 풀로 반환되어 재사용될 수 있도록 관리되고 있습니다.
      상태 패턴
      상태 패턴은 각 상태를 독립적으로 관리하여 객체의 행동을 상태의 변경에 따라 유연하게 전환할 수 있게 하려고 사용되었습니다. 상태 패턴을 통해 코드의 가독성유지 보수성을 향상하고, 새로운 행동 상태를 추가하거나 기존 상태를 변경할 때 필요한 코드 수정을 최소화할 수 있기 때문에 사용했습니다.
  • 아키텍처
    • MVC 패턴
      MVC 패턴을 사용한 이유는 다음과 같습니다. 1.데이터 관리(Model), 사용자 인터페이스(View), 컨트롤러(Controller) 간의 명확한 분리를 통해 코드의 구조를 개선하고 유지 보수를 쉽게 만들기 위해서 사용했습니다. 2. 기능별로 클래스를 나누어 복잡한 버그의 원인을 더 쉽게 찾고 해결할 수 있기 때문입니다. 3. MVC 패턴은 데이터 처리와 UI 간의 강한 결합을 해소하여, 시스템의 확장성유연성을 향상하기 위해 사용했습니다.
      이벤트-드리븐 패턴
      이벤트 드리븐 패턴은 특정 설정이 변경될 때마다 해당 이벤트에 반응하여 관련 처리를 동적으로 수행할 수 있습니다. 이벤트-드리븐 패턴의 적용은 애플리케이션의 반응성을 향상하고, 사용자의 입력에 대해 유연하게 반응할 수 있습니다. 또한 시스템 내 다른 부분들과의 결합도를 낮추어, 유지보수확장성을 개선하는 데 이바지하기 때문에 사용했습니다.
매니저 베이스 프레임워크
notion image
  • 게임 플레이
    • Game Manager
      캐치씬에서 사용되는 매니저로서, 플레이어의 상태, 플레이어 컨트롤러 및 몬스터 생성 위치 등 게임 내 핵심 요소 관리를 담당하고 있습니다.
      Cage Manager
      케이지 매니저는 케이지 컨트롤러와 함께 작동하여 몬스터 및 카드를 케이지에 추가하고, 게임 내의 케이지 관련 데이터를 관리하며, 케이지 상태를 지속해 업데이트하는 역할을 담당하고 있습니다.
      Card Manager
      카드 매니저는 카드를 손에 들고 있는 상태의 관리, 카드 선택 및 결과 확인, 그리고 카드 컨테이너를 통한 카드 데이터의 관리와 같은 핵심 기능을 제공하여, 게임의 카드 관련 메커니즘을 담당하고 있습니다.
      Event Manager
      이벤트 매니저는 게임 내 주요 이벤트의 일정과 실행을 관리합니다. 특정 일자에 맞춰 일반 이벤트, 골드 이벤트, 보스 이벤트 등을 로드하고, 게임의 다양한 상황에 맞는 적절한 이벤트를 제공하여 게임 플레이에 도움을 담당하고 있습니다.
  • 게임 플레이
    • Data Manager
      데이터 매니저는 게임의 진행 상황, 케이지 상태, 카드 컨테이너, 몬스터 데이터, 플레이어 정보 등을 저장하고 관리하며, 게임의 시작, 종료 및 저장에 필요한 모든 데이터를 관리합니다. 또한, 게임의 각 단계에서 필요한 데이터를 초기화하고 업데이트하여 게임의 일관된 상태를 유지하는 데 중요한 담당을 하고 있습니다.
      Object Manager
      오브젝트 매니저는 게임 내에서 필요한 오브젝트들을 효율적으로 생성하고 관리하는 역할을 합니다. 이 매니저는 오브젝트 풀링을 사용하여 리소스 사용을 최적화하고, 오브젝트의 생성 및 재사용을 통해 게임 성능을 유지할 수 있게 해줍니다.
      Resource Manager
      리소스 매니저는 게임 리소스의 로딩과 관리를 담당합니다. 이 클래스는 필요한 리소스를 비동기적으로 로드하고, 각 리소스를 효율적으로 관리하여 게임의 부드러운 실행 지원을 담당하고 있습니다.
      SaveLoad Manager
      세이브 로드 매니저는 게임 데이터의 저장 및 로딩을 관리합니다. 게임 상태를 JSON 형식으로 저장하고 불러오며, 게임의 진행 상황을 언제든지 저장하고 복원할 수 있는 기능을 담당하고 있습니다.
  • 게임 플레이
    • UI Manager
      UI 매니저는 게임 내 모든 UI 요소의 생성, 관리 및 상호작용을 담당합니다. 다양한 UI 컴포넌트를 통해 사용자 인터페이스를 구성하고, 팝업 및 버튼 효과 등을 제공하여 사용자 경험을 향상하는 기능들을 담당하고 있습니다.
      Audio Manager
      오디오 매니저는 게임의 배경음악(BGM)과 효과음(SFX)의 재생 및 관리를 담당합니다. 오디오 믹서를 통해 소리의 볼륨을 조절하며, 필요에 따라 오디오 클립을 재생하거나 정지시켜 게임의 오디오를 담당하고 있습니다.
      Dialogue Manager
      다이얼로그 매니저는 Movie Scene에서 사용되며, 컷씬을 구현하기 위한 텍스트 Scriptable Object를 관리하는 매니저입니다.
씬 베이스 프레임워크
notion image
  • 보조 씬
    • Loading Scene
      로딩씬은 게임 내 다른 씬으로의 전환 시 부드럽고 효율적인 비동기 로딩을 제공하여, 플레이어의 경험을 중단 없이 유지할 수 있게 도와주는 씬입니다.
      Movie Scene
      컷씬은 게임 내의 튜토리얼과 보스 전투를 포함한 다양한 이벤트 장면을 저장하고 재생하는 역할을 담당하여, 스토리와 게임 플레이에 깊이를 더해주는 씬입니다.
  • 관리 씬
    • Intro Scene
      인트로씬은 게임의 로고와 팀의 로고를 표시하며, 게임의 분위기를 설정하는 첫인상을 담당하는 씬입니다.
      Start Scene
      스타트씬은 게임 시작, 포스몬 사전 접근, 게임 종료 등의 기능을 제공하여 게임에 쉽게 접근할 수 있게 하는 시작 지점을 담당하는 씬입니다.
      Main Scene
      메인씬에서 플레이어는 포스몬을 카드를 통해 관리하고 캐릭터를 업그레이드하는 동시에, 게임의 진행에 따라 다양한 이벤트에 참여하고 중요한 결정을 내릴 수 있는 씬입니다.
  • 전투 씬
    • Catch Scene
      캐치씬에서는 플레이어가 다양한 행성을 탐험하며 연구에 필요한 포스몬을 포획합니다. 플레이어는 이 씬에서 캐릭터를 직접 조작하여 포스몬과 상호작용하는 씬입니다.
      Boss Scene
      보스씬은 게임 시작 후 60일이 지나면 메인씬에서 전환되며, 플레이어는 보스 포스몬과 결정적인 전투를 벌입니다. 이 씬에서 보스 포스몬은 독특한 패턴을 가지고 있으며, 게임의 클라이맥스를 담당하는 씬입니다.

🦾 도전 과제 🦾

사용자 인터페이스
💡
UI 관리 기술적 근거
notion image
  • 모듈성
    • UI 오브젝트들이 서로 독립적으로 존재하고, 필요할 때만 생성 및 활성화되므로 시스템의 모듈성이 증가합니다.
  • 효율적인 메모리 관리
    • 하이어라키에 많은 UI 프리팹을 미리 배치하는 것은 메모리 사용량을 불필요하게 늘릴 수 있습니다. 프리팹을 동적으로 생성하고 제거함으로써, 필요할 때만 UI 요소를 메모리에 로드하여 효율을 향상했습니다.
  • 재사용성
    • 제네릭을 사용함으로써, 같은 코드를 다른 타입의 UI 요소에 재사용할 수 있습니다.
    • UI 오브젝트를 프리팹으로 만들고, 필요에 따라 동적으로 인스턴스화함으로써, 원하는 UI를 재사용할 수 있습니다.
  • 상태 관리
    • UI 프리팹을 Stack으로 관리함으로써, 후입선출(LIFO)의 구조를 이용해 가장 최근에 열린 UI가 화면 상단에 표시되도록 하여 사용자 경험(UX)를 개선했으며, Sort Order 자동화로 인해 개발자가 편리하게 개발할 수 있습니다.
    • UI 요소가 스택을 통해 관리되므로, UI의 흐름을 쉽게 추적하고 유지 보수할 수 있습니다.
카드
💡
Card System 전략 패턴 기술적 근거
notion image
  • 단일 책임 원칙(SRP)
    • 각 클래스는 하나의 책임을 가지고 있습니다. FoodCardSO 는 음식 관련 카드의 행동을, HarvestCardSO 는 수확 관련 카드의 행동을 각각 책임지고 있습니다.
  • 개방-폐쇄 원칙(OCP)
    • 새로운 카드 타입(전략)을 추가하고 싶을 때 기존 코드를 수정하지 않고도 새로운 전략 클래스를 추가할 수 있습니다. 시스템을 확장하기 쉽게 해줍니다.
  • 재사용성
    • 공통 인터페이스 역할인 CardSO 를 구현함으로써, 다양한 상황에서 재사용할 수 있는 코드를 작성할 수 있습니다.
  • 유지 보수성
    • 전략 클래스를 변경하거나 새로운 전략을 추가해도 다른 전략에 영향을 주지 않으므로, 유지 보수성이 향상됩니다.
  • 결합도 감소
    • 인터페이스 역할인 CardSO 를 사용하면, Card 클래스는 구체적인 전략 클래스에 대해 알 필요가 없어, 클래스 간의 결합도가 낮아집니다.
무기
💡
Weapon 전략 패턴 기술적 근거
notion image
  • 단일 책임 원칙(SRP)
    • 각 클래스는 하나의 책임을 가지고 있습니다. MeleeCatch는 근접 무기를 관리하고, Ranged Catch는 원거리 무기를 관리하고 있습니다. 각 클래스가 하나의 기능에만 집중함으로써 유지보수가 쉽습니다.
  • 개방-폐쇄 원칙(OCP)
    • 새로운 행동이 필요한 경우, 새로운 클래스를 추가하여 인터페이스를 구현함으로써 기존 코드를 변경하지 않고도 기능을 확장할 수 있습니다.
  • 분리와 확장성
    • Weapon 클래스는 ICatchBehaviourISpecialBehaviour 인터페이스를 통해 ‘잡기’와 ‘특수 공격’ 행동을 정의합니다. 각 행동을 독립적으로 관리하고 새로운 행동을 추가하거나 기존 행동을 변경할 때 클래스를 수정할 필요 없이 행동만 추가 및 수정할 수 있습니다.
  • 재사용성
    • 인터페이스로 구현된 행동은 다양한 무기에서 재사용될 수 있습니다. MeleeCatch 행동은 모든 근접 무기에서 사용될 수 있으며, HarpoonCatch는 모든 원거리 무기에 적용될 수 있습니다.
  • 유연성
    • 플레이어는 런타임에 무기의 행동을 변경할 수 있습니다. 무기를 업그레이드하거나 다른 무기로 전환할 때, 행동을 쉽게 교체할 수 있습니다.
몬스터
💡
Monster AI, 상태 패턴 기술적 근거
notion image
  • 재사용성
    • 각각의 Monster Sensor(예: Hearing, Sight, Smell)는 독립적인 컴포넌트로 구성되어있어, 다양한 몬스터에게 재사용 할 수 있습니다. 특정 몬스터에게 필요한 감각만 선택적으로 추가하거나 제거할 수 있어, 재사용성을 높였습니다.
  • 유연성
    • Monster Behavior State를 사용하여 몬스터의 행동 상태를 관리하고 있습니다. 몬스터의 상태에 따른 행동 변화를 옵저버 패턴을 이용해 유연하게 교체할 수 있습니다.
    • ICatchable인터페이스는 다양한 몬스터 클래스에 적용되어 ‘잡힘’ 행동을 구현했습니다. 다양한 몬스터 타입에서 동일한 방식으로 이벤트 처리가 가능합니다.
    • 새로운 상태를 추가하거나 수정할 때, Monster 클래스 직접 변경 없이 상태만 수정하면 됩니다. 이는 유지보수를 쉽게 만들고, 시스템의 안정성을 높입니다.
  • 확장성
    • Monster Movement, Monster AI와 같은 컴포넌트들은 몬스터 기능을 분리하여 구현하여 새로운 기능을 쉽게 추가할 수 있고, 기존 기능을 수정하기에 편리합니다.
 

🔫 트러블 슈팅 🔫

데이터
👾
데이터 조작 문제 발생
notion image
notion image
  • 문제
    • 개발 초기 JSON 형식의 게임 세이브 데이터를 저장하고 불러오는 방식을 사용했습니다.
    • 세이브 파일의 저장 경로가 사용자에게 알려지면, 파일을 쉽게 찾아 데이터를 조작할 수 있습니다.
    • 게임의 무결성을 해치고, 부정 플레이의 여지를 제공할 수 있었습니다.
  • 해결
    • 세이브 데이터를 Base 64 인코딩 방식으로 처리해 일반 텍스트 형식에서 변화를 주었습니다. 데이터의 가독성을 낮추어 일반 사용자가 내용을 이해하기 힘들게 제작했습니다.
    • AES 암호화 방식을 도입해 세이브 데이터를 도입해 세이브 데이터를 추가적으로 보호하고, 이를 통해 데이터의 안전성을 강화했습니다.
    • SHA-256 해시 알고리즘을 사용하여 데이터의 무결성을 검증합니다. 세이브 데이터가 변경되었는지 판단할 수 있어, 데이터 조작을 방지할 수 있습니다.
  • 결과
    • 세이브 파일의 내용을 직접 수정하거나 해석하기 어렵게 제작해 부정 플레이를 방지할 수 있었습니다.
리소스
👾
리소스 로딩 시간 문제
notion image
notion image
  • 문제
    • 리소스를 신속하게 로드하기 위해 리소스 매니저 를 사용해 게임 초기에 모든 Asset Reference 를 로드하고 캐싱하는 시스템을 구현했습니다.
    • 그러나 로드 시간이 예상보다 길어지는 문제가 발생했습니다. 특히, 게임 중 특정 상황에서만 사용되는 오브젝트들의 리소스를 미리 로드하는 것이 비효율적으로 관리되고 있었습니다.
    • 또한 이미 Addressable 시스템에서 관리되고 있는 리소스를 매니저에서 이중으로 관리하는 것이 불필요한 낭비가 발생했었습니다.
  • 해결
    • 각 오브젝트 생성 클래스에서 Asset Reference 를 직접 관리하도록 변경했습니다.
    • Monster SO Card SO 같이 다양한 리소스 중 하나를 선택해야 하는 경우 각각을 별도의 Scriptable Obejct 로 묶어서 관리하고 있습니다. 리소스를 그룹화하고, 상황에 맞는 리소스를 효율적으로 관리할 수 있게 되었습니다.
  • 결과
    • 해결방안을 적용한 결과, 6초 가량 소모됐던 로딩 시간이 즉시 로딩이 되도록 개선됐습니다.
    • 또한 사용하지 않는 리소스를 불필요하게 미리 로드하지 않음으로써, 메모리 사용량이 감소했습니다.
맵 & 플레이어
👾
지형 콜라이더 문제 & 프레임 드랍
notion image
notion image
  • 문제
    • 플레이어가 지형 콜라이더에 끼는 현상을 방지하기 위해 Composite Collider 를 사용했습니다. 플레이어와 지형 간 끼는 문제가 어느 정도 해결되었지만, 각 지형마다 Rigid body 컴포넌트가 필요했습니다.
    • Rigid body 사용은 게임 내에서 물리 연산량을 증가시켰고, 게임의 평균 프레임이 30FPS ~60FPS 로 낮아지는 문제가 발생했습니다.
  • 해결
    • 플레이어가 지형에 부딪히기 전에 Raycast 를 사용하여 충돌을 미리 감지하고 처리하는 방식으로 시스템을 변경했습니다. 플레이어의 속도를 조절하여 콜라이더 사이에 끼는 문제를 방지했습니다.
    • Raycast 기반의 충돌 처리로 전환하면서, 각 지형에서 Rigid body 컴포넌트를 제거할 수 있었습니다. 이 때문에 물리 연산량이 대폭 감소했습니다.
  • 결과
    • Rigid body 컴포넌트 제거 덕분에 프레임 속도가 200FPS 수치로 증가했습니다.
    • Raycast 를 활용한 충돌 처리는 물리 연산의 부담을 줄이고, 게임 플레이어 반응성을 향상할 수 있었습니다.
몬스터
👾
프레임 드랍 현상 발생
notion image
notion image
  • 문제
    • Lava Map Frost Map 에서 맵과 몬스터 간의 상호작용에 의한 물리 연산량이 많아지면서 프레임 드랍 현상이 발생했었습니다.
    • 맵의 구조상, 동적으로 랜덤 룸을 생성하는 방식을 사용하고 있었으며, 룸 생성이 종료되는 시점에 모든 룸에 대한 몬스터를 일괄적으로 소환하고 방식이 문제가 되었습니다.
    • 또한 Addressable Assets 을 사용한 비동기 생성 방식에서 몬스터 생성이 지연되는 문제가 발생했습니다.
  • 해결
    • 오브젝트 매니저(오브젝트 풀링)을 이용해 몬스터 오브젝트를 미리 생성하고, 풀에 저장한 뒤 재사용하는 방식을 사용했습니다. 매번 새로운 오브젝트를 생성하고 파괴하는 비용을 줄였습니다.
    • 리소스 매니저를 이용해 필요한 리소스만 메모리에 로드해 사용하지 않는 리소스에 대한 메모리 소비를 줄였습니다.
  • 결과
    • 해결방안을 적용한 결과, 게임의 프레임이 30FPS에서 60FPS로 크게 향상되었습니다.
    • 또한 팀원이 제작한 최적화 매니저와 몬스터 기능을 연동함으로써 함께 오류를 해결할 수 있었습니다.

⚠️ 개선 사항 ⚠️

사용자 인터페이스(UI)
⚠️ UI 가독성이 떨어짐. 상호작용 가능한 버튼에 대한 설명이 필요
✅ 마우스 이벤트에 Hover 기능을 추가해, 마우스와 상호작용으로 버튼의 색상 변화와 텍스트 및 설명이 담긴 툴팁 표시
⚠️ 초반 컷씬이 지루함. 스킵버튼이 필요함
✅ 2분 가량의 인트로 컷씬을 분리해, 게임 내부에서 날짜 별로 이벤트 발생 시 짧은 컷씬을 재생. 플레이어가 게임 시작 전 모든 정보를 알게 되어 피로함을 개선. + 스킵버튼 추가 완료
⚠️ 행성 워프 시스템이 불편함. 정보 및 이용 방법 설명 부족
✅ 각 행성 UI를 만들어 행성의 정 및 난이도 설명 추가. 사용자가 원활한 게임 진행을 할 수 있게 수정
⚠️ 게임의 일시 정지 및 기본 조작법 설명 부족
✅ 몬스터를 캐치하는 씬으로 넘어가면, 1회 튜토리얼 기능 추가
⚠️ 무기 인터페이스 불편함
✅ 무기는 원거리와 근거리로 나누어 1번 2번 키보드를 누르면, 스왑 할 수 있게 제작하고, 화면에서도 무기를 교체함을 알 수 있게 이미지 추가
⚠️ 전체화면 토글 기능 문제
✅ 비디오 옵션 대응이 현재 제대로 사용되지 않는 느낌을 받아 삭제
⚠️ 오디오 설정 리셋 문제
✅ PlayerPrefs 이용 오디오 값 저장
⚠️ 포스몬 사전 가독성 문제
✅ 사전 UI를 대폭 개선해 스크롤뷰 및 정보를 플레이어가 한 눈에 보이게 수정
카드 & 케이지
⚠️ 기본 메커니즘과 튜토리얼 부재. 시스템 설명 필요
✅ 각각 기능에 대한 설명을 UI 툴팁으로 추가하고 튜토리얼을 추가하여 게임 시스템을 설명
⚠️ 카드 이미지 중복 및 오류 문제
✅ 부족한 리소스들을 임시로 구해서 채워넣었습니다.
⚠️ 한 턴에 사용할 수 있는 카드 표시
✅카드 슬롯 UI에 사용 카드수 현황을 추가
⚠️ 몬스터 스트레스 관리 및 관련 카드의 효과 알 수 없음
✅카드 효과가 적용되기 전 적용될 효과를 알려주는 부분의 버그 수정, 스트레스 관리에 대한 정보를 UI 툴팁으로 추가
⚠️ 무기 인터페이스 불편함
✅케이지 상태에 대한 몬스터의 반응은 케이지 UI에 있었는데 인식하기가 쉽지 않았음 툴팁과 튜토리얼 추가
⚠️ 전체화면 토글 기능 문제
✅ 해당 부분에 대한 버그 수정 및 케이지 UI에서 %말고도 수치를 툴팁으로 확인할 수 있도록 수정
⚠️ 오디오 설정 리셋 문제
✅해당 부분 버그 수정, 카드 관리 기능이 없는것이 게임 요소
⚠️ 포스몬 사전 가독성 문제
✅케이지에서 몬스터의 툴팁으로 정보를 볼 수 있도록 수정
맵 & 플레이어
⚠️ 원거리 플레이어의 조준 메커니즘 개선 필요.
✅ 조준각 상향 및 마우스 커서가 최대 조준범위를 넘어가면 최대값의 조준각으로 투사체를 발사하도록 변경
⚠️ 공중 대시 및 추락 메커니즘 개선 필요.
✅ 기획 의도 및 전체적인 이동 메커니즘을 설명하는 튜토리얼 제작
⚠️ 근접 무기 사용의 어려움 및 타이밍 문제.
✅ 근접 무기만의 차별화된 장점 추가, 기획 의도 및 근접 무기 메커니즘을 설명하는 튜토리얼 제작
⚠️ 맵에서 끼임 현상 발생.
✅ 맵 콜라이더 수정, 레이캐스트를 사용해 충돌을 미리 감지하는 알고리즘 수정
⚠️ 맵의 가시성 문제, 미니맵 부재 및 탐색의 편의성 개선 필요
✅ 미니맵 기능 추가
⚠️ 아이템 장착 과정의 어려움과 인터페이스 개선 필요
장비 슬롯이 비어있을 시 아이템을 획득하자마자 바로 착용하도록 변경, 아이템 핫스왑 기능 추가
⚠️ 게임 초반 튜토리얼 및 조작법 안내 필요.
✅ 튜토리얼 제작
⚠️ 맵 중간중간 턱에 걸리는 문제 발생.
✅ 맵 콜라이더 수정
⚠️ 골드 및 점프 값 저장 안되는 문제.
✅ 생성자 초기화 문제 발생. 프로퍼티 및 데이터 저장 로직 수정 완료.
몬스터
⚠️ 몬스터의 공격 패턴 다양화 필요
✅ 몬스터가 자신의 선호 음식미끼에 반응한 경우에는 플레이어를 공격하지 않는 패턴 추가
⚠️ 몬스터의 감각 인식 메커니즘의 실제 게임플레이 활용 부족
✅ 플레이어의 속도에 따른 소리인지 범위 적용 ✅ 몬스터 감각 인식이 뚜렷하게 느껴지도록 자극 인지 세기 조절함.
⚠️ 몬스터 감지 메커니즘에 대한 설명 부족
✅ 플레이어가 플레이를 통해서 경험할 수 있도록 개선
⚠️ 보스 전투의 접근성 및 경험 개선 필요
✅ 보스전 까지의 플레이타임을 줄이는 방법 고려중
⚠️ 우호적인 몬스터 도입 제안
✅ 선호 음식 미끼로 행복상태로 변한 몬스터는 공격을 멈추고, 플레이어의 공격에 바로 포획되도록 수정
⚠️ 데이터 불러오기 시 스포너 고장
✅ 에셋 레퍼런스에서 키가 없어졌음. 로직 변경, 수정 완료.

✉️ BOGUS Inc. ✉️

직책
역할
이름
Github
Blog
팀장
UI 세이브로드 오디오 디자인
문현우
부팀장
카드 케이지 데이터 오브젝트풀 어드레서블
김광수
팀원
플레이어 인벤토리 컷씬
이경민
팀원
몬스터 어드레서블
최수용

🎮 지금 Foster The Monster를 플레이 해보세요! 🎮

Share article
Subscribe to our newsletter
RSSPowered by inblog