프로젝트 개요
PHYLLOSOMA는 대학 게임 개발 동아리 TeamOdd의 4인이 모여 Unity HDRP와 C#을 기반으로 개발된 3D 액션 소울라이크 게임입니다. 약 6개월 간 개발되었으며, 소울라이크 시스템 전반을 구현하기 위해 노력하였으며 전투 시스템, AI 시스템, 상호작용, 아이템, 최적화, UI/UX 데이터 관리 시스템 등이 설계되었습니다.
- 장르 : 3D 액션 소울라이크
- 도구 : Unity(HDRP), C#
- 기간 : 2024.05 ~ 2024.11(6개월)
- 담당 : 전체 시스템 설계 및 프로젝트 관리
- 빌드 파일 : 다운로드
게임흐름도

주요 기술 및 시스템
- AI 시스템 : Behavior Tree 기반 행동 트리 및 Perception 모듈 구현으로 적 탐지와 행동 패턴 설계
- 전투 시스템 : Chain of Responsibility 패턴을 통한 캐릭터 별 공격 처리, Strategy 패턴을 활용한 방어 로직
- 아이템 시스템 : 사용/장비/무기 등 다양한 아이템을 생성하고 관리 가능한 시스템
- 애니메이션 : 패턴 기반 애니메이션 공격 정보 관리 및 사용자 정의 가능한 이벤트 시스템
- UI/UX : 메인 메뉴, HUD, 컨트롤러 인식 시스템 등 실시간 반응형 UI 구현
- 세이브 시스템 : Hard/Soft 세이브 분리를 통해 초기화 대상을 유연하게 제어
- 최적화 : Distance Culling(복합 알고리즘)과 Object Pooling을 활용한 GPU 및 연산 부하 감소
- 데이터 관리 : CategorizedDB를 활용한 GUID 기반 데이터베이스 시스템으로 높은 데이터 무결성과 편의성 제공
기술 상세
데이터 관리
CategorizedDB(GUID 기반 데이터베이스)
❓이유
ScriptableObject를 활용한 데이터베이스 구성 시, 원하는 데이터를 찾아 할당하는 데 어려움이 있었습니다. 이를 해결하기 위해 데이터의 분류 및 관리가 용이한 CategorizedDB 패키지를 설계 및 구현하였습니다.
📄상세
- 핵심 기능
- GUID 기반 데이터 관리로 데이터 무결성 확보
- 클래스 상속 및 구현만으로 DB와 데이터 클래스, Selector를 손쉽게 제작 가능
- 데이터 생성 및 할당 시 경로 변경에 따른 영향을 최소화
- 추가 구현 내용
- 간단한 데이터 클래스, DB, EditorWindow, Selector 구현
- 에디터 UI를 통해 데이터 직관적 관리
🆕효과
- 데이터 클래스 제작, 수정, 관리 속도 대폭 향상
- 새로운 데이터베이스 구성 부담 감소
- 프로젝트 전반에서 통합적이고 체계적인 데이터 관리 가능
💬결과물


CategorizedDB는 이후 별도 오픈소스 패키지로 분리되어 다양한 프로젝트에서 활용 가능합니다.
대표적인 활용 예
- 캐릭터 스탯
- 애니메이션 이벤트
- 패턴 별 데미지
- 오브젝트 풀링 관리
캐릭터 AI
Behavior Tree 시스템(Tree)
❓이유
AI의 행동 트리 수정 및 생성 과정에서 재사용성과 가독성을 높이고, 디버깅을 용이하게 만들고자 했습니다.
📄상세
- 핵심 기능:
- Tree 구조를 활용한 AI 행동 트리 구현
- 시작, 일시정지, 정지 기능 제공
- 노드 별 카테고리 분류 기능
- 추가 구현 내용:
- 블랙보드 시스템 추가
- BTRunnerComponent에 Tree 컨트롤러 제공
- Tree 기능 추가
- 정렬 기능 : 백트래킹 알고리즘
- 루트 노드 복귀 기능
- 트리 파일 탐색 기능
- 런타임 디버그 기능
- 행동 트리의 진행 상황 실시간 확인
- 노드 추가 및 실행 가능
🆕효과
- 행동 트리 제작 및 유사 패턴 재사용 과정의 효율성 증가.
- 런타임 디버깅을 통해 문제를 신속히 발견 및 수정 가능.
- AI의 행동 로직 가독성과 관리 용이성 향상.
💬결과물


SimpleBehaviorTree는 이후 별도 오픈소스 패키지로 분리되어 다양한 프로젝트에서 활용 가능합니다.
Perception 시스템(Strategy)
❓이유
적 탐지 과정에서 탐색 기능과 타 모듈 간 결합도를 낮추고, 물리 연산량을 최적화하여 성능을 개선하고자 했습니다. 언리얼 엔진의 Perception 시스템에서 아이디어를 얻어 이를 Unity 환경에서 구현하였습니다.
📄상세
- 핵심 기능
- Perception Strategy 패턴을 활용한 인식 방식 모듈화
- 적 인식 범위와 패턴을 시각화하는 Gizmo 기능 제공
- 추가 구현 내용
- 고유 틱타임 부여로 인식 주기 분산 : 최적화
🆕효과
- 모듈들의 인식 기능에 대한 결합도가 감소
- 감지 전략 조립을 통한 감지 방식의 다양화
- 고유 틱타임 기능을 통해 물리 연산량을 감소를 통한 성능 향상
💬결과물

Perception – 컴포넌트 인스펙터

Perception – 감지 Gizmo

전투시스템
공격 처리 시스템(Chain of responsibility)
❓이유
캐릭터 별로 다른 공격 처리 방식을 지원하기 위해, Chain of Responsibility 패턴을 도입하였습니다. 이를 통해 캐릭터마다 독립적인 공격 처리 체인을 구성하고, 체인 간 결합도를 낮춰 유연성과 확장성을 확보하고자 했습니다.
📄상세
- 핵심 기능
- 공격 정보 클래스를 제작하여 공격 데이터를 관리
- 공격 처리 체인을 관리하는 인터페이스 제작
- 공격 정보에 따라 다음 체인 적용 여부를 결정하는 컴포넌트 개발
- 각 공격 체인의 삽입/삭제 및 처리 흐름 제어 기능 추가
- 추가 구현 내용
- 방어, 이펙트(HitEffect) 등 다양한 요소와 연계 가능하도록 설계
🆕효과
- 공격 처리 Chain 및 공격 적용 Chain의 추가 및 삭제 간소화
- 캐릭터 별 독자적인 공격 처리 방식 구성 용이성 증가
💬결과물

공격 처리 시스템은 다양한 상태 및 방어 시스템과 연계되어 프로젝트 전반의 전투 로직에 핵심적인 역할을 수행했습니다.
주요 연계 요소
- 상태 관리: HP, Soul(스킬 게이지), Poise(그로기 게이지)
- 방어 시스템: 다양한 방어 패턴과 통합
- 시각적 효과: HitEffect와의 상호작용
방어 시스템(Strategy)
공격 처리 시스템의 하위 시스템으로 공격 처리 시스템의 ProcessChain을 활용한 시스템입니다.
❓이유
캐릭터 별로 방어 전략이 다양해야 하며(예: Parry, Guard), 같은 방어 전략이라도 처리 방식에 차이가 있을 수 있습니다. 이를 위해 다형성을 활용하여 방어 시스템을 유연하게 설계하고자 했습니다.
📄상세
- 핵심 기능
- 방어 컴포넌트에서의 방어 전략에 따른 방어 처리
- 방어 처리 인터페이스 제작(Strategy 패턴)
- 방어 전략 별 클래스 설계(Guard 등)
- 추가 구현 내용
- 함수 오버라이딩을 통해 방어 처리 과정을 세분화
- 공격 처리 시스템의 공격 Chain 인터페이스를 상속 받아 방어 전략과 연동
🆕효과
- 캐릭터 별로 고유한 방어 전략을 할당 가능
- 방어 전략 교체가 용이하며, 확장성이 높아 새로운 방어 메커니즘을 쉽게 추가 가능
💬결과물



무기 시스템
📄상세
- 무기 컴포넌트
- Attack 함수에 공격 대상을 매개변수로 넘겨주어 호출하면 공격 가능
- 공격 이후 처리를 위한 OnAttack 가상 함수를 추가(공격 처리 피드백)
- 같은 공격 대상에 여러 번 충돌해도 반복해 때리지 않도록 피격 대상 저장
- 무기 공격 정보 및 공격 타입 저장
- 무기 컴포넌트를 상속하여 다양한 공격 방식의 무기 제작 가능
- 무기 관리자
- 재생 애니메이션에 따른 공격 정보 적용 시스템
💬결과물




패턴(애니메이션) 별 공격 정보 변경 시스템
❓이유
캐릭터의 각 애니메이션 재생 시, 공격 정보가 유기적으로 변경되도록 해야 했습니다. 그러나 애니메이션 이벤트를 활용한 기존 방식은 구현이 까다로웠기 때문에, 애니메이션 변경에 따라 공격 정보가 자동으로 갱신 되는 시스템을 제작하고자 했습니다.
📄상세
- 핵심 기능:
- 공격 정보 클래스와 해당 정보를 적용할 대상을 관리하는 클래스를 설계
- 현재 재생 중인 애니메이션에 따라 공격 정보를 동적으로 변경하는 알고리즘 구현
- 추가 구현 내용:
- CategorizedDB를 활용하여 패턴 별 공격 정보를관리할 수 있는 에디터 제작.
🆕효과
- 각 패턴 별 공격 정보가 실시간으로 변경되어 각 공격의 차이를 명확히 인지
- 애니메이션 움직임과 적용 수치 간의 일관성이 상승
- 에디터에서 패턴 공격 정보를 수정할 수 있어, 기획자가 손쉽게 밸런스를 조정 가능
💬결과물
이 시스템은 특히 보스 몬스터 패턴의 데미지 설계에서 중요한 역할을 했으며, 게임 전반의 전투 밸런스를 선정하는 데 기여했습니다.

스킬 시스템
📄상세
- 각각의 스킬에 대한 입력 구별
- 두 스킬은 모두 Q 키를 눌러 사용 가능 때문에 입력 시간을 통해 두 가지 스킬을 구별하여 시전 가능
- 플레이어의 애니메이션과 이벤트를 연결(애니메이션 이벤트 시스템)
- 각 스킬 별로 이벤트를 연결하여 다른 공격 효과를 보여주도록 제작
💬결과물


애니메이션
애니메이션 이벤트 시스템
❓이유
유니티의 애니메이션 이벤트 시스템을 사용할 때, 각 컴포넌트의 함수를 직접 호출하여 실행하는 방식이 비효율적이라 느꼈습니다. 또한, 애니메이션 이벤트에서 변수를 호출 시, 재생 시작 시점의 값을 사용하는 문제를 해결하기 위해 개선된 시스템이 필요했습니다.
📄상세
- 핵심 기능:
- 애니메이션 이벤트 인터페이스 설계 및 구현
- 이벤트 정보를 저장 및 관리하는 전용 컴포넌트 제작
- String 파라미터를 통해 애니메이션 ID를 선택하고 실행하는 방식 도입
- 추가 구현 내용:
- 호출된 이벤트 정보를 Queue에 저장하고, 다음 프레임에서 일괄 처리
- 재생 시작 시점의 값을 사용하는 문제를 해결
- CategorizedDB를 활용한 이벤트 데이터 관리 및 수정 가능 에디터 제작
- 호출된 이벤트 정보를 Queue에 저장하고, 다음 프레임에서 일괄 처리
🆕효과
- 다양한 종류의 이벤트를 손쉽게 호출 가능
- 이벤트 데이터 관리가 간소화되고, 추가 및 삭제 작업이 효율성 증가
- 잘못된 값을 호출하는 문제가 제거되어 시스템 안정성이 향상
💬결과물
이 시스템은 특히 복잡한 이벤트 처리 문제를 해결하며, 이벤트와 애니메이션의 연계성을 강화하는 데 기여했습니다.

아이템 시스템
아이템
📄상세
- 아이템 기본 시스템 제작 방식
- 아이템 기본 클래스를 생성하고, 이를 상속받아 하위 범주(무기, 사용 아이템, 장비 아이템 등) 클래스를 제작
- 장비 아이템 작동 방식
- 아이템 장착 시,
Equip()함수가 호출되어 캐릭터의 스탯을 조정하거나 이벤트를Subscribe하는 방식으로 효과 적용 - 패시브 효과 아이템과 같은 특수 효과를 관리
- 아이템 장착 시,
- 아이템 정보 에디터
- CategorizedDB를 활용하여 아이템을 간단히 추가하거나 삭제할 수 있는 시스템 구현
💬결과물


인벤토리/장비 시스템
📄상세
- 인벤토리
- 인벤토리 버튼/컴포넌트를 제작
- 아이템 타입에 해당하는 아이템만 가져와 표시하도록 구현
- 아이템 정보, 스탯, 이미지 등을 표시
- 장비 시스템
- 장착 중인 아이템 표시 및 슬롯 선택시 아이템 선택 창(인벤토리) 표시
- 각 장비의 스펙을 비교 가능
- 장비가 변경되었을 때 스탯/패시브 효과 등을 적용하는 컴포넌트 제작
- 플레이어 데이터를 Subscribe 하여 실시간 반영
- 장착 중인 아이템 표시 및 슬롯 선택시 아이템 선택 창(인벤토리) 표시
💬결과물
- 소지품 인벤토리


- 장비창


세이브 시스템
세이브 시스템 구조

플레이어 데이터 저장 시스템
📔개요
플레이어가 소유한 아이템 데이터, 스테이지의 저장된 오브젝트, 스탯 정보 등 플레이 데이터나 게임의 세팅 값 등을 저장하고 불러오는 시스템을 제작하고자 하였습니다.
📄상세
- 핵심 기능
- 다양한 곳에서 데이터 매니저와 접촉하기 위해 싱글턴 사용
- 플레이어 데이터를 직렬화하기 편하게 하기 위한 PlayerDTO 제작
- 데이터를 저장/불러올 때 DTO를 경유하여 데이터 사용
- NewtonSoftJson을 활용한 직렬화 데이터를 저장
- 추가 기능
- 플레이어의 데이터 변화와 연동되는 기능 추가를 위해 변수들의 event 생성
스테이지 초기화 시스템(하드/소프트 세이브 구별을 통한 차등 초기화)
📔개요
소울라이크 장르에서는 체크포인트와 상호작용 했을 때 세이브가 이뤄지며 맵의 초기화 가능한 오브젝트들을 초기화한다. 해당 기능을 구현하기 위해 Hard/Soft 세이브 시스템을 제작하여 원하는 대상만 초기화 하도록 만들었다.
📄상세
- Hard/Soft 세이브용 컴포넌트 설계
- GUID를 활용하여 각 세이브 객체를 고유하게 구별
- 세이브 GUID를 플레이어 정보에 저장하여 이후 불러올 수 있도록 구현
- 인터페이스 기반 저장/불러오기 설계
ISaveObject및ISaveRequest인터페이스 제작.- 저장/불러오기 기능을 다양한 컴포넌트에서 활용 가능하도록 설계
🆕효과
- 초기화 대상의 유연한 제어가 가능
- 세이브 데이터 구조화로 확장성과 유지 보수성이 향상
💬결과물

UI
메세지/알림 시스템
📄상세
- 지역 알림
- 지역 이름을 표시해주는 알림으로 Queue를 이용해 순서대로 지역명을 표시
- 메세지 알림
- Android의 Toast와 비슷한 알림 시스템으로 Queue를 이용해 순서대로 알림을 표시
- 튜토리얼 팝업/메세지
- 카드/팝업 윈도우를 통한 가이드 표시 시스템
💬결과물


UI 및 HUD
❓이유
플레이어의 조작 일관성을 위해 가장 나중에 열린 창이 특정 입력을 받아야만 했습니다. 창이 열려있을 경우 플레이어의 조작이 멈춰야 했기에 열려있는 창이 있는지 여부를 검사하는 기능이 필요했습니다. 또한 플레이어의 컨트롤러에 따라 UI의 아이콘 등이 변경되어야 하는 기능 또한 필요했습니다.
📄상세
- 전체 UI : 메인화면 UI, 메뉴UI 등 각종 UI
- UIWindow
- 창 형식의 UI는 제작한 UIWindow 클래스를 사용하여 구현
- 열린 창이 있는지 확인하기 위해 Static int 변수를 활용하여 열려있는 창의 갯수를 저장
- 탭 기능 : 탭 선택시 메뉴 변경 기능
- 스택형 윈도우 : 스택 형식의 Cancel/Accept 입력 기능
- 가장 나중에 Cancel/Accept를 구독한 버튼이 해당 입력을 받음
- 플레이어 컨트롤러 인식 시스템 : 컨트롤러를 인식 후 UI에 반영
- TextMeshPro의 SpriteAsset을 활용하여 아이콘 변경
- UIWindow







- HUD
- 캐릭터 정보를 Subscribe 하여 정보 변경에 실시간 대응
- 몬스터를 따라다니는 체력바 및 받은 데미지 표시기
- 일정 시간 경과 시 자동 비활성화 기능

추가 구현 기능
상호작용 시스템
❓이유
각 상호작용 객체마다 별도의 로직을 작성하는 방식은 비효율적이며, 객체 지향 프로그래밍의 특징을 살려 다양한 상호작용 객체에 공통적으로 적용할 수 있는 시스템을 설계하고자 했습니다. 또한, 여러 상호작용 객체가 동시에 플레이어와 충돌할 때 효율적으로 관리할 필요가 있었습니다.
📄상세
- 플레이어와 상호작용 오브젝트 간 충돌 관리
- 플레이어의 상호작용 가능한 오브젝트와의 충돌을 감지하고 이를 효율적으로 관리하는 컴포넌트 제작
- 상호작용 클래스 설계
- 상호작용 클래스를 설계하고, 가상 함수
OnInteract()를 제공하여 이를 상속 받는 하위 클래스에서 고유한 상호작용 로직을 구현할 수 있도록 지원
- 상호작용 클래스를 설계하고, 가상 함수
🆕효과
- 플레이어가 여러 상호작용 객체와 충돌했을 때 이를 체계적으로 관리할 수 있게 됨
- 다양한 상호작용 객체(아이템, 문, 체크포인트, 컷씬 등)를 간단히 확장 및 구현할 수 있어 개발 생산성이 크게 향상
💬결과물
이 시스템은 아래와 같은 상호작용 객체 제작에 활용되었습니다

- 아이템: 플레이어가 획득 가능한 오브젝트

- 문: 상호작용시 열리는 오브젝트

- 체크포인트: 플레이어의 진행 상황을 저장

- 상호작용 컷씬 : 상호작용 시 컷씬 재생

상태 효과 시스템 : 버프/디버프 등 다양한 효과가 제작 가능한 시스템
❓이유
캐릭터의 상태 효과는 그 종류가 다양하고 독특한 경우가 많기 때문에 이를 한 번에 관리하고 손쉽게 생성할 수 있는 시스템이 필요했습니다.
📄상세
- 상태 효과 시스템 제작 방식
- 상태 효과의 기본 요소를 갖춘
StatusEffect클래스를 제작(State 패턴) - 가상 함수
OnApply,OnRemove,OnUpdate를 오버라이딩하여 독자적인 상태 효과를 구현
- 상태 효과의 기본 요소를 갖춘
- 상태 효과 관리 컴포넌트 설계
- 상태 효과를 저장하고 관리하는
StatusEffect컴포넌트 제작 AddEffect및RemoveEffect함수를 통해 상태 효과를 추가/삭제 가능- 효과 간 충돌을 방지하기 위해 함수 호출 시 즉시 추가/삭제하는 대신,
Queue에 저장 후Update문에서 일괄 처리
- 상태 효과를 저장하고 관리하는
🆕효과
- 상태 효과 시스템과 타 시스템 간의 결합도는 낮추면서 다양한 효과가 제작 가능
- 상태 효과를 사용하는 장비, 사용 아이템을 제작하는 등 타 시스템과의 연계가 용이
💬결과물

타 시스템들 또한 객체지향적으로 작성되어 해당 시스템과 관련된 상태 효과를 제작할 때 결합도가 낮은 상태를 유지하며 제작하는 것이 가능했습니다.

저스트 가드 소울 게이지 흡수 효과(아이템 패시브 효과)
최적화
Distance Culling(거리 및 보는 방향 복합 알고리즘)
❓이유
플레이 시 원활한 성능을 위해 GPU 부하를 줄이고, 광원 및 컴포넌트 연산을 최적화할 필요가 있었습니다.
📄상세
- 핵심 기능
- 거리와 시점(내적 연산)을 활용한 복합 알고리즘 설계
- DistanceCulling 클래스 제공: 광원 및 컴포넌트의 동적 활성/비활성 관리
- 추가 구현 내용
- 연산 클러스터링 및 Unity Job 시스템 적용으로 병렬 처리 최적화
- 프레임당 최적화 연산 개수 상한(100개) 설정으로 작업 부하 분산
- 연산 클러스터링 및 Unity Job 시스템 적용으로 병렬 처리 최적화
🆕효과
- 최적화 전 : 약 35 FPS → 최적화 후 : 약 70 FPS로 성능 향상
- 최적화 연산 속도 : 0.258ms → 0.09ms로 감소
- 플레이 중 시각적 품질 유지하며 성능 안정성 확보
💬결과물


성능 비교


ObjectPooling
❓이유
📄상세
- 핵심 기능
PoolingManager를 통해 GameObject의 생성 및 삭제 관리IPoolRequester와PoolingObjectComponent를 통해 풀 오브젝트 생성 간소화
- 추가 구현 내용
- CategorizedDB를 활용하여 드롭다운 방식의 Object Selector를 적용
- 전용 에디터 제작을 통해 GameObject 교체 및 생성 과정을 간소화
🆕효과
- 동일한 Prefab은 기존에 생성된 비활성화된 GameObject를 재사용하면서 성능을 최적화
- 대규모 Prefab 동시 생성 시 렉 현상이 감소
- 에디터에서 드롭다운을 활용한 프리팹 선택으로 작업 효율성 증가
💬결과물
사용법을 아트 담당자에게 알려주는 것을 통해 직접 VFX를 교체하여 실제 게임에 적용되었을 때의 느낌을 직접 테스트 해 볼 수 있도록 하였다


유니티 내장 최적화 기능
- LOD
- Static Baching
- GPU Instancing
- GPU residence drawer
위와 같은 방법들을 사용하여 최적화한 결과 GTX1050 그래픽 카드 PC 기준 게임 빌드를 실행하였을 때 약 30프레임을 유지하며 게임 플레이가 가능하게 되었습니다.
성과
대학교 졸업 전시

젬파이 밋업 전시


사용자 피드백과 개선
| 사용자 의견 | 개선방안 | 분류 |
|---|---|---|
| 플레이어의 공격 애니메이션이 재생될 때 몬스터와 충돌하면 위치가 겹쳐지며 서로 빗겨 지나갑니다. 몬스터 앞에서는 전진성이 줄어들었으면 좋겠습니다.. | 플레이어 전방의 일정 범위 안에 몬스터 혹은 충돌 가능한 물체가 있는지 확인 한 후 Animator의 ApplyRootMotion 값을 키고/끄는 것으로 해결했습니다. | 플레이어/움직임 |
| 보스가 거대한데 카메라 거리가 너무 가까워 불편합니다. 카메라 거리가 늘어나면 좋겠습니다. | 카메라 거리가 항상 멀면 문제가 생기기 때문에 Trigger을 이용하여 특정 공간에 진입할 경우 Camera Distance를 점진적으로 늘려주는 것으로 개선하였습니다. | 플레이어/카메라 |
| 회피 시 스테마나가 두 배로 다는 문제가 있습니다. | 애니메이션에 AnimationEvent로 UseStamina 함수를 호출하는 것이 아니라 회피 컴포넌트에서 회피 애니메이션에 집입했는 지 확인한 후 스태미나를 소모하도록 변경하였습니다. | 플레이어/전투 |
| 플레이어의 공격/회피/방어 등 각종 애니메이션이 완전히 다 재생되어야만 다음 입력이 가능해서 조작감이 불편합니다. 애니메이션이 재생되고 돌아오는 모션이 중간에 캔슬 가능했으면 좋겠습니다. | AnimationController의 Transition 수치를 조절하고 새롭게 StateMachineBehavior을 적용하여 애니메이션이 일정 퍼센트 이상 재생되었을 경우 입력을 받아 타 애니메이션으로 캔슬할 수 있도록 만들어 조작감을 개선하였습니다. | 플레이어/조작 |
| 낙하 시 데미지를 예측하기가 어렵습니다. 그리고 낙하 시 사망 판정이 있는 것 같은데 이 부분 또한 예측하기 어려운 것 같습니다. | 기존의 속도 + 낙하 시간 기반의 낙하 데미지/사망 알고리즘을 직관적인 낙하 거리 기반 알고리즘으로 변경하여 가시적이고 예측하기 쉬운 방식으로 개선하였습니다. | 플레이어/이동 |
| 재화를 획득했을 때 확실한 피드백이 보이지 않아 재화를 획득했는지 눈치채기가 어렵습니다. 조금 더 가시적으로 표시되었으면 좋겠습니다. | 우상단의 재화 표시기를 유지하면서 재화 획득 시 아이템 로그도 같이 표시되도록 변경하였습니다. | 플레이어/UI |
| 몬스터가 방어를 시작하고 그 방어를 풀지 않으면 데미지가 적개 들어가 파훼법이 존재하지 않습니다. | Defense시스템에 Cost 시스템을 추가하고 Poise시스템과 연계하여 방어 시 Poise Damage가 축적되도록 변경하였습니다. Poise Damage가 모두 축적되면 그로기가 발생하며 방어가 풀리는 방식을 사용하여 개선하였습니다. | 몬스터/전투 |
| 보스 몬스터의 공충 뛰어오르기 패턴이 플레이어를 계속 따라오지 않고 이미 지나간 위치를 공격하는 것 같습니다. | 보스몬스터의 공중 뛰기 패턴 중 플레이어를 계속해서 추적하도록 변경하는 것으로 플레이어가 이동하더라도 적중 되도록 수정하였습니다. | 몬스터/AI |
추가 자료 및 참고