게임 클라이언트 개발
-
Skill 시스템 구현 및 개선게임 클라이언트 개발/MakeDNF 2024. 1. 10. 21:12
이전 프로젝트에선 스킬 사용을 위한 로직을 Skill 클래스에, 실제 피격 기능이나 이펙트와 같은 부분은 Projectile 클래스에 구현했었다. 하지만 새로운 스킬을 구현할 때마다 해당 설계에 문제점이 발견되어 어떻게 개선할지 오랜 시간 고민하였고 해당 내용들을 작성하고자 한다. 기존 Skill 시스템 구현의 문제점피격 기능 및 이펙트 출력 기능까지 모두 Projectile 클래스에 구현한 점스킬에는 여러 종류가 있다. 충전을 통해 범위를 증가시키는 스킬이 있고, 연속적으로 키를 입력하여 추가 스킬을 사용하는 경우가 있다. 예를 들어 여귀검사의 기본 공격의 경우, 공격 키를 계속 입력하여 최대 3회까지 연속적인 기본 공격을 사용한다. 이렇게 스킬을 사용했는지 여부나 충전, 콤보 입력, 또..
-
플레이어 시야 FOV 구현게임 클라이언트 개발/Unity 2023. 12. 13. 20:27
Unity로 탑 뷰 형식의 게임을 제작할 때 플레이어의 시야를 제한하여 게임의 긴장도를 줄 수 있다. 어몽어스와 같은 마피아 게임 장르인 Interactopia 프로젝트를 진행할 때, 플레이어의 시야를 제한하기 위해 FOV를 구현했던 과정을 작성하고자 한다. https://github.com/woghrk12/FOV2D.git GitHub - woghrk12/FOV2D Contribute to woghrk12/FOV2D development by creating an account on GitHub. github.com Light 2D 가장 빠르게 시야를 구현할 수 있는 방법으론 Light 2D Component를 활용하는 것이다. Point Light를 캐릭터의 위치로 고정하고 벽에 Shadow Cast..
-
DNF Input System게임 클라이언트 개발/MakeDNF 2023. 12. 11. 21:51
MyDNF 프로젝트를 시작했던 이유는 단 한 가지였다. "지하철에서도 던파를 핸드폰으로 플레이할 수 있음 진짜 재밌겠다."라고 생각했고, 모바일 버전 던전 앤 파이터를 만들고자 했다. 하지만 모바일 버전 게임이라고 꼭 모바일에서만 플레이하는가에 대해 생각해보니, 나만 하더라도 '녹스'라는 애뮬레이터 프로그램을 사용하여 부계정을 PC에서도 돌렸었다. 즉, 하나의 앱을 여러 플랫폼에서 플레이할 수 있어야 함을 의미한다. 주로 세븐나이츠의 부계정을 PC에서 플레이했는데, 세븐나이츠는 캐릭터 컨트롤 방식이 스킬 UI를 클릭하는 것이 전부여서 PC를 위한 Input System을 구축할 필요가 없다. 하지만, 던파의 경우 모바일용 Input System으로 PC에서 플레이한다면 마우스로 조이스틱과 스킬을 사용해야..
-
DNF 충돌 시스템게임 클라이언트 개발/MakeDNF 2023. 12. 3. 19:22
Hitbox를 Collider Component를 사용하지 않고 직접 구현함에 따라 Unity의 충돌 시스템이 아닌 직접 충돌 알고리즘을 작성해야 한다. 던전 앤 파이터의 월드 좌표계는 회전할 일이 없다. (차원회랑의 모로스 보스의 패턴 중 장례식 패턴에서 화면이 회전하는 경우가 존재하나 이는 카메라 회전을 통해 구현할 수 있다.) 그렇다면 선택할 수 있는 충돌 알고리즘은 AABB 알고리즘과 OBB 알고리즘이 있다. 어떤 충돌 알고리즘을 사용할 지 선택하기 위해 오브젝트의 좌표계가 회전하는지에 대한 여부를 확인할 필요가 있다. 대표적인 회전된 오브젝트로 런처의 양자라는 스킬이 존재한다. 양자 스킬을 사용할 경우 대각선 방향으로 미사일 오브젝트가 떨어지며 미사일 오브젝트는 45도 회전되어있다. 미사일 오브..
-
Hitbox with DNFTransform게임 클라이언트 개발/MakeDNF 2023. 12. 2. 00:28
카메라를 회전하지 않고 2.5D 좌표계를 구현함에 따라 Unity의 Collider를 사용하여 충돌 기능을 구현할 경우, 불필요한 충돌 연산을 수행한다. 예를 들어, 아래 그림과 같이 캐릭터와 파이어볼이 위치한다면, DNFTransform의 XZ평면에서 캐릭터와 파이어볼의 Collider가 서로 충돌하지 않았기 때문에 충돌 검사 로직을 수행할 필요가 없다. 하지만 캐릭터가 점프할 경우 두 Collider가 충돌하기 때문에 불필요한 충돌 연산이 수행된다. Hitbox 이를 방지하기 위해 Hitbox를 직접 구현했다. Size, Offset, Pivot 세 가지 변수를 통해 Hitbox를 설정하였다. Size : Hitbox의 크기를 설정한다. Hitbox의 모양이 Circle일 경우 Z값은 무시된다. Si..
-
DNF Transform게임 클라이언트 개발/MakeDNF 2023. 12. 1. 23:07
던전 앤 파이터는 2.5D 횡스크롤 게임이다. 던파를 구현하기 위해선 2.5D 좌표계와 쿼터뷰를 구현할 필요가 있다. 이는 카메라 회전을 통해 구현할 수도 있으나, 카메라를 회전시킬 경우 그래픽 리소스의 원본을 유지하기 위해 오브젝트를 다시 회전시켜야 한다. 이에 오브젝트 Hierarchy를 활용하여 DNF Transform를 직접 구현하였다. 루트 오브젝트는 XZ 평면을 표현하기 위한 오브젝트이며, Y축을 위한 오브젝트, Scale 연산을 위한 오브젝트, 그리고 실제 캐릭터 리소스를 표현하는 오브젝트 순으로 Hierarchy를 구성하였다. XZ 평면은 Root 오브젝트의 position의 x값과 y값을 활용했으며, Z축으로 1만큼의 값은 실제 화면에서 화면 비율에 따라 Y축으로 이동하도록 구현하였다. ..
-
프로젝트를 시작하기 전에게임 클라이언트 개발/MakeDNF 2023. 11. 29. 16:13
프로젝트 깃허브 https://github.com/woghrk12/MakeDNF.git GitHub - woghrk12/MakeDNF Contribute to woghrk12/MakeDNF development by creating an account on GitHub. github.com 게임 클라이언트를 공부하면서 가장 좋아하는 게임을 개발해 보는 것은 매우 좋은 경험이라고 생각한다. 이전에 짧은 기간동안 던전 앤 파이터의 전투 시스템을 구현해보며, AABB 충돌 알고리즘도 공부해보고, 객체 지향 설계도 공부하고, 기본 공격과 4종류의 스킬을 구현해보며 약소하지만 던전 앤 파이터와 같은 조작감을 느낄 수 있었다. 다만, 게임은 개발도 중요하지만 그래픽이나 오디오 또한 매우 중요한 요소로 작용하며, 혼..
-
길찾기 알고리즘과 최적화게임 클라이언트 개발/Unity 2023. 11. 27. 22:33
Unity를 활용하여 AI나 자동으로 길을 찾는 기능을 구현할 경우, 3D는 Nav Mesh Component를 활용하면 된다. 직접 구현하는 것보단 해당 Component를 쓰는 것이 웬만해선 훨씬 빠르고 최적화가 잘 되어있다. 다만 2D를 개발하는 경우 해당 Component를 사용할 수 없어 길 찾기 알고리즘을 직접 개발해야 한다. 이에 길 찾기 알고리즘에 대해 알아보고 최적화하는 과정을 작성하고자 한다. 구현한 알고리즘의 코드는 깃허브에서 확인할 수 있다. https://github.com/woghrk12/AStarAlgorithm.git GitHub - woghrk12/AStarAlgorithm Contribute to woghrk12/AStarAlgorithm development by cre..