분류 전체보기
-
애니메이션과 스킬 타이밍 동기화, 근데 AnimatorStateInfo를 곁들인..게임 클라이언트 개발/MakeDNF 2024. 1. 31. 17:05
캐릭터의 스킬에는 여러 타이밍이 존재한다. 선딜레이가 끝나는 시점, 히트박스가 켜지고 꺼지는 시점 등 다양한 타이밍이 존재하는데, 기본 공격을 구현하면서 이러한 타이밍을 어떻게 컨트롤했는지에 대해 작성해보고자 한다. 구현된 기본 공격 Time.DeltaTime을 활용한 시간 계산 처음으로 시도한 방법으로, 스크립트에서 시간 계산을 통해 타이밍을 설정했다. 애니메이션 클립의 프레임 수와 재생 속도 등 여러 변수들을 고려하여 선딜레이나, 후딜레이 등 각 시점을 정하고 Update를 통해 상태 변화를 구현했다. public override void OnStart() { attackSpeed = character.Animator.GetFloat(attackSpeedHash); // 타이밍 계산 로직 : 한 프레..
-
Overview of Direct3D 11CS/게임 프로그래밍 2024. 1. 29. 15:05
책 정보 : 실용 Direct3D 11 렌더링 & 계산 (Jason Zink, Matt Pettineo, Jack Hoxley 저 | 류광 역) Direct3D Framework Direct3D 11 Native API (Application Programming Interface), used to render an image by controlling and linking the computer's video hardware. Native code : written in the "native" machine language of the computer that is running on and is executed directly by the processor. Graphic Architecture Ap..
-
남 넨마스터의 넨가드 스킬에 대한 고찰게임 클라이언트 개발/MakeDNF 2024. 1. 22. 19:44
최근 던전 앤 파이터의 현재 최상위 콘텐츠인 어둑 섬 해방 난이도에서 넨마스터의 무한 넨가드로 손쉽게 클리어하는 영상이 올라왔었다. 이에 직접 코드를 확인할 순 없지만 나름대로 왜 이런 상황이 발생하는지 추측해 보고자 한다. 넨가드 스킬 우선 넨가드란 어떤 스킬인지 확인해 보자. 넨가드란 남 넨마스터의 25 레벨에 습득할 수 있는 스킬로 (물론 여 넨마스터도 습득할 수 있다), 넨으로 보호구를 생성하여 자신을 포함하여 해당 영역에 존재하는 파티원도 무적으로 만드는 스킬이다. 여기서 키포인트는 "파티원을 무적으로 만든다"라는 문구이다. 던전 앤 파이터에선 캐릭터가 슈퍼아머 상태일 경우 캐릭터에 붉은빛 계열의 테두리가 생기며, 무적일 경우에는 하얀 테두리가 생긴다. 넨가드를 사용한 모습을 보면 캐릭터에 하얀..
-
OOP Design Pattern - Structural Pattern프로그래밍 언어 2024. 1. 18. 21:33
Adapter Adapter Pattern Allow the interface of an existing class to be used as another interface Allow two incompatible interfaces to work together Interfaces may be imcompatible, but the inner functionality should suit the need By converting the interface of one class into an interface Often used to make existing classes work with others without modifying their source code Overview Solves probl..
-
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제 스킬 염폭모대주 애니메이션을 자연스럽게 연출하기 위해 위치를 조정해야하는 추가적인 연산이 필요하며, 스킬이 복잡해질수록 추가해야하는 오브젝트도 많아지고 생성된 오브젝..