게임 클라이언트 개발/MakeDNF
-
Hitbox Controller Refactoring 및 Hitbox Debug Tool게임 클라이언트 개발/MakeDNF 2024. 4. 17. 00:48
이번 글에선 Hitbox Controller 클래스와 Hitbox 클래스를 리펙토링 한 내용과 플레이 모드 진입 시 설정된 Hitbox가 정상적으로 작동하는지 Scene에서 확인할 수 있는 Debugging 툴에 대해 작성하고자 한다. 너의 역할은? 히트 박스의 범위 및 충돌 로직이 작성되어 있는 Hitbox 클래스와 이를 관리하는 HitboxController 클래스를 통해 2.5D 좌표계에서의 충돌 시스템을 구현했었다. Hitbox 클래스에서 HitboxType, Size, Offset, Pivot 멤버 변수를 통해 히트 박스의 범위를 minHitboxPos, maxHitboxPos로 계산하고, AABB 충돌 알고리즘을 구현한 멤버 함수를 통해 히트 박스의 충돌 검사 로직을 수행했다. HitboxCo..
-
스킬 스크립트... 매번 생성해야 하나...?게임 클라이언트 개발/MakeDNF 2024. 4. 10. 23:27
이번 글에선 스킬을 추가할 때마다 반복적인 작업을 해야하는 번거로움을 없애기 위해, 조금이라도 빠르게 스킬을 추가하기 위해, 스크립트를 설정한 값에 따라 자동으로 추가해주는 툴을 구현한 내용을 작성할 것이다. 스킬 추가할 때마다... 노가다...? 캐릭터의 스킬을 추가할 때 마다, 패시브 스킬은 스크립트를 하나만 추가해도 되지만, 액티브 스킬을 구현할때면 ActiveSkill 클래스를 상속받는 스킬 스크립트 1개, SkillState 클래스를 상속받는 스킬 상태 스크립트를 여러 개 작성해야 한다. 예를 들어, Ground Monk의 기본 공격의 경우, 1타부터 5타까지 총 5개의 상태가 존재한다. 이를 구현하기 위해선, ActiveSkill 클래스를 상속받는 BaseAttack 클래스 스크립트 한 개가 ..
-
Ground Monk게임 클라이언트 개발/MakeDNF 2024. 4. 10. 00:07
이번 글에선 지금까지 구현한 Ground Monk 캐릭터의 스킬을 작성할 것이다. Ground Monk는 던전 앤 파이터의 남 프리스트 인파이터를 모티브로 스킬을 구현했다. Ground Monk의 전투 영상 기본 공격 기본 공격은 총 5타로 이루어져 있다. 기본 공격 버튼(Default로 X키 지정)을 입력할 경우 연속적으로 기본 공격을 사용한다. 3타와 4타의 경우 방향키를 입력하지 않을 경우 약간 앞으로 전진하며, 캐릭터가 바라보는 방향의 반대 방향의 방향키를 입력할 경우, 움직이지 않고 사용 가능하다. (제자리 평타, 흔히 제평이라 부르는 기능) 이전에 구현했던 Fire Knight 캐릭터와 마찬가지로 추가 키 입력을 HitboxActive와 MotionInProgress 두 상태에서만 가능하도록 ..
-
Fire Knight게임 클라이언트 개발/MakeDNF 2024. 3. 19. 19:46
이번 글에선 지금까지 구현한 Fire Knight 캐릭터의 스킬을 작성할 것이다. Fire Knight는 던전 앤 파이터의 여 귀검사 소드마스터를 모티브로 스킬을 구현했다. Fire Knight의 전투 영상 기본 공격 기본 공격은 총 3타로 이루어져있다. 기본 공격 버튼(Default로 X키로 지정)을 입력할 경우 연속적으로 1타, 2타, 3타를 사용한다. 2타의 경우 방향키를 입력하지 않을 경우 약간 앞으로 전진하며, 캐릭터가 바라보는 방향의 반대 방향의 방향키를 입력할 경우 움직이지 않고 사용 가능하다. (제자리 평타, 흔히 제평이라 부르는 기능) 기본 공격을 구현하면서 고려했던 부분은 다음 공격으로 이어가기 위한 유저의 추가적인 키 입력 타이밍이였다. 각 스킬들의 싸이클은 크게 공격을 시전하기 전 ..
-
외곽선 이펙트를 위한 쉐이더 그래프 맛보기게임 클라이언트 개발/MakeDNF 2024. 3. 13. 17:20
던전 앤 파이터에는 히트 박스의 상태가 일반 상태, 슈퍼 아머 상태, 무적 상태 총 세 가지 존재한다. 또 캐릭터의 히트 박스가 어떤 상태인지 시각적으로 쉽게 파악할 수 있도록 외곽선 이펙트가 존재한다. 일반 상태의 경우 외곽선 이펙트가 없고, 슈퍼 아머 상태의 경우 노란색과 빨간색의 외곽선 이펙트가, 무적 상태일 경우 흰색 외곽선 이펙트가 존재한다. 이번 글에선 이를 어떻게 구현했는지에 대해 작성하고자 한다. 외곽선만 그리면 될까? 외곽선 이펙트를 구현하기 위한 방법으로 총 두 가지를 생각해봤다. 캐릭터 스프라이트에 외곽선을 추가로 렌더링한다. 캐릭터 스프라이트보다 살짝 큰 스프라이트를 캐릭터 뒤에 배치한다. 우선 던전 앤 파이터에서 슈퍼 아머 이펙트가 적용되는 모습을 확인해보자. 캐릭터가 슈퍼 아머 ..
-
전투 시스템 구현 (Feat. 메이플 스토리 월드)게임 클라이언트 개발/MakeDNF 2024. 3. 6. 16:49
이번 글에선 히트박스와 충돌 시스템을 구현한 내용을 바탕으로 공격과 피격 로직을 어떻게 구현했는지에 대해 작성하고자 한다. 메이플 스토리 월드 이전에 멋쟁이사자처럼에서 주최한 해커톤 Super Hackathon 2022에 참여하였고 메이플 스토리 월드 플랫폼을 활용하여 "데드 바이 데이라이트"와 비슷한 술래잡기 콘텐츠를 제작했었다. 콘텐츠를 제작하기 위해 메이플 스토리 월드의 API를 하나하나 뜯어보며 어떻게 구현되어 있는지 확인했었다. 특히 메이플 스토리 리소스를 기반으로 제작된 플랫폼이어서 공격과 피격에 대한 로직이 작성되어 있었고 이를 참고하여 이번 프로젝트의 공격 및 피격 로직을 설계 및 구현하였다. 메이플 스토리 월드에선 GameObject를 Entity로 지칭한다. 공격 로직을 작성할 Enti..
-
캐릭터 기본 클래스 구현게임 클라이언트 개발/MakeDNF 2024. 3. 4. 01:02
이번 글에선 캐릭터의 공격, 이동, 점프 등 각 기능을 어떻게 설계하고 구현했는지에 대해 작성하고자 한다. 캐릭터를 설계하기 위해 유한 상태 머신을 참고했다. 캐릭터를 컨트롤하기 위한 유한 상태 머신 클래스로 Character를, 캐릭터의 각 행동(유한 상태 머신에선 상태라고 표현함)을 표현하기 위한 베이스 클래스로 CharacterBehaviour를 선언했다. 캐릭터의 행동은 크게 두 가지로 분류하여 구현하였다. On/Off 형식으로 키고 끌 수 있는 행동으론 캐릭터가 이동하는 행동 MoveBehaviour, 점프하는 행동 JumpBehaviour가 있으며, 유한 상태 머신 사이클로 존재하는 행동으론 아무것도 안하는 행동 IdleBehaviour, 캐릭터가 공격하는 행동 AttackBehaviour, ..
-
스킬 범위... 어떻게 설정하지...?? with. 반월게임 클라이언트 개발/MakeDNF 2024. 2. 2. 21:35
이번 글에서는 반월 스킬을 구현하면서 스킬 이펙트에 따라 변동하는 히트박스를 어떻게 처리할 지에 대해 고민한 내용에 대해 작성해보고자 한다. 구현한 반월 스킬 런타임에 히트박스가 변한다....?? 악즉참 스킬 다음으로 구현하고자 한 스킬은 반월 스킬이다. 반월 스킬을 구현할 때 제일 고민이 됐던 부분은 스킬 범위를 런타임에 어떻게 설정할지였다. 지금까지 스킬을 구현할 땐 히트박스의 멤버 변수(Size, Offset, Pivot 등)를 에디터에서 수정하고 런타임엔 수정할 수 없도록 구현했었다. 하지만, 반월 스킬을 구현하고자 했을 땐 히트박스가 런타임 중 이동해야 한다고 생각했다. 플레이어가 화면상에선 몬스터와 검기 이펙트가 충돌하지 않았는데 피격되면 이상하게 보일 수도 있다고 판단했기 때문이다. 아래 사..