분류 전체보기
-
Photon을 활용한 Matching 시스템 구축게임 클라이언트 개발/Photon 2024. 1. 16. 01:52
어몽어스와 같은 마피아 게임을 제작했던 Interactopia 프로젝트에서 Photon API를 활용하여 Matching 시스템을 구축했었다. 해당 프로젝트를 진행하면서 매칭 시스템에서 필요한 기능은 크게 방 만들기, 공개 방 참여하기, 비공개 방 참여하기, 총 세 가지라고 생각했다. 이번 글에선 각각의 기능을 어떻게 구현했는지에 대해 작성하고자 한다. 방 만들기 Photon에선 방을 만들때 방의 이름은 중복될 수 없으며, 비공개 방 참여를 위한 6자리 코드가 필요했다. 그래서 6자리 방 코드를 Photon API를 위한 방 이름으로 사용하고, 닉네임을 유저에게 보여질 방 이름으로 사용하기로 결정했다. 우선 중복되지 않는 방 코드를 생성하기 위해 Photon에서 제공되는 UserId와 현재 시간을 조합해..
-
OOP Design Pattern - Creational Pattern프로그래밍 언어 2024. 1. 12. 17:49
Abstract Factory Abstract Factory Pattern An interface for creating families of related or dependent objects without specifying their concrete classes Provides way to create families of related objects without imposing their concrete classes Encapsulating a group of individual factories that have a common theme without specifying their concrete classes The client does not know which concrete obj..
-
Object Pooling을 위한 Tool 제작게임 클라이언트 개발/MakeDNF 2024. 1. 11. 19:33
Unity에서 오브젝트를 생성(Instantiate)하거나 파괴(Destroy)하는 작업의 비용은 매우 크다. 따라서 게임 플레이 중 오브젝트를 많이 생성할 경우 해당 프레임의 연산량이 많아져 화면이 끊기는, 스파크 현상이 발생할 수 있다. 이를 해결하기 위해 오브젝트를 미리 생성해 놓고 필요할 때 가져다 쓰는 오브젝트 풀링(Object Pooling) 기법을 사용한다. MakeDNF에서도 캐릭터가 이동하거나 스킬을 사용할 때 생성되는 이펙트나 투사체에 오브젝트 풀링 기법을 적용했다. 하지만 미리 생성한 오브젝트에 접근하기 위해 파라미터로 주로 String 타입의 변수를 사용했다. // Spawn the object from the object pool by using the name of the pre..
-
Hitbox와 Hitbox Editor 개선게임 클라이언트 개발/MakeDNF 2024. 1. 11. 16:18
Hitbox 기존에 구현했던 Hitbox는 하나의 오브젝트에 하나의 Hitbox Component를 할당할 수 있었다. 예를 들어, 메테오 스킬의 경우 낙하하는 운석 오브젝트 한 개, 이후 운석이 폭발하는 오브젝트 한 개, 총 두 개의 오브젝트가 필요했다. 하지만 무녀의 염폭모대주 스킬을 확인해보면 거대한 염주알이 공중에서 땅에 닿는 순간의 애니메이션이 존재한다. 기존의 설계로 구현한다면 떨어지는 염주알 오브젝트 1개, 땅에 닿았을 때 염주알 오브젝트 1개, 폭발 오브젝트 1개, 총 3개의 히트박스를 위한 오브젝트가 필요하다. 무녀의 80제 스킬 염폭모대주 애니메이션을 자연스럽게 연출하기 위해 위치를 조정해야하는 추가적인 연산이 필요하며, 스킬이 복잡해질수록 추가해야하는 오브젝트도 많아지고 생성된 오브젝..
-
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도 회전되어있다. 미사일 오브..