게임 개발/유니티
-
전 후 비교 이번에는 설명 이전에 바로 라이브러리를 사용하기 전과 후의 코드를 비교해 보자. Before: NetworkedSingleton 타입에 접근해서 해당 인스턴스의 이벤트에 네트워크 생명주기에 따른 구독이 필요한 경우가 많다. 이를 위해서는 다음과 같은 보일러플레이트 코드가 필요하다. private void Awake() { InstanceFinder.ClientManager.OnClientConnectionState += ManageSubscription; } private void OnDestroy() { // 만약 구독해제 하고 싶다면? InstanceFinder.ClientManager.OnClientConnectionState -= ManageSubscription; } private ..
커스텀 라이브러리를 만든 경험 - 2전 후 비교 이번에는 설명 이전에 바로 라이브러리를 사용하기 전과 후의 코드를 비교해 보자. Before: NetworkedSingleton 타입에 접근해서 해당 인스턴스의 이벤트에 네트워크 생명주기에 따른 구독이 필요한 경우가 많다. 이를 위해서는 다음과 같은 보일러플레이트 코드가 필요하다. private void Awake() { InstanceFinder.ClientManager.OnClientConnectionState += ManageSubscription; } private void OnDestroy() { // 만약 구독해제 하고 싶다면? InstanceFinder.ClientManager.OnClientConnectionState -= ManageSubscription; } private ..
2024.02.17 -
서론: 에셋을 구매하다. 에셋스토어에서 에셋 번들을 구매하게 되었다. 사실상 거의 단 하나의 에셋만 보고 구매했다. 그 에셋이 바로 Damage Numbers Pro 다. 마침 진행하는 프로젝트에서 전투 메커니즘을 구현하는 중이었고, 데미지 숫자가 나타나게 하는 것은 어렵지는 않지만 매우 번거로운 일이기 때문에 고민하지 않고 구매했다. 문제 상황: 치명적인 버그를 발견하다. 숫자가 깨진다. 문제상황 분석과 이전 버그 리포트 리서치 우선, 이 버그 상황에 대해, 개발자의 디스코드 채널에 들어가 찾아보았다. 수년전에 몇번, 몇달전에 한번 비슷한 버그 리포트가 올라왔었으나, 결국 개발자가 동일 증상을 재현하지 못하면서 흐지부지 끝나버렸었다. 내가 직접 이 버그를 해결해야만 했다. 발생 조건 분석: 우선 이 증..
상용 에셋의 버그를 찾아 고쳤더니 선물을 받았다.서론: 에셋을 구매하다. 에셋스토어에서 에셋 번들을 구매하게 되었다. 사실상 거의 단 하나의 에셋만 보고 구매했다. 그 에셋이 바로 Damage Numbers Pro 다. 마침 진행하는 프로젝트에서 전투 메커니즘을 구현하는 중이었고, 데미지 숫자가 나타나게 하는 것은 어렵지는 않지만 매우 번거로운 일이기 때문에 고민하지 않고 구매했다. 문제 상황: 치명적인 버그를 발견하다. 숫자가 깨진다. 문제상황 분석과 이전 버그 리포트 리서치 우선, 이 버그 상황에 대해, 개발자의 디스코드 채널에 들어가 찾아보았다. 수년전에 몇번, 몇달전에 한번 비슷한 버그 리포트가 올라왔었으나, 결국 개발자가 동일 증상을 재현하지 못하면서 흐지부지 끝나버렸었다. 내가 직접 이 버그를 해결해야만 했다. 발생 조건 분석: 우선 이 증..
2024.02.16 -
서론: 멀티플레이 게임과 netcode 유니티에서 멀티플레이 게임을 만들기 위해서 netcode는 필수다. 나는 이전에 유니티에서 기본 제공하는 netcode for gameobject 를 사용하다가, 기본 제공 라이브러리의 성능과 기능 부족으로 인해, Fishnet 으로 migrate를 해 개발을 하는 중이다. 그리고, 개발이 진행되다 보니, fishnet의 기본 라이브러리 기능에도 부족함을 느끼고, 자주 쓰는 코드들을 편히 쓸 수 있도록 간단한 라이브러리를 만들어 보았다. 배경지식, 문제상황: NetworkObject와 싱글톤 내 프로젝트의 경우, 싱글 플레이를 위해 만들어졌던 코드를 멀티 플레이로 옮기는 방식으로 개발을 하고 있다. 그 과정에서 문제가 되었던 코드는 싱글톤이다. 나의 요구사항: 게임..
커스텀 라이브러리를 만든 경험 - 1서론: 멀티플레이 게임과 netcode 유니티에서 멀티플레이 게임을 만들기 위해서 netcode는 필수다. 나는 이전에 유니티에서 기본 제공하는 netcode for gameobject 를 사용하다가, 기본 제공 라이브러리의 성능과 기능 부족으로 인해, Fishnet 으로 migrate를 해 개발을 하는 중이다. 그리고, 개발이 진행되다 보니, fishnet의 기본 라이브러리 기능에도 부족함을 느끼고, 자주 쓰는 코드들을 편히 쓸 수 있도록 간단한 라이브러리를 만들어 보았다. 배경지식, 문제상황: NetworkObject와 싱글톤 내 프로젝트의 경우, 싱글 플레이를 위해 만들어졌던 코드를 멀티 플레이로 옮기는 방식으로 개발을 하고 있다. 그 과정에서 문제가 되었던 코드는 싱글톤이다. 나의 요구사항: 게임..
2024.02.16 -
HDRP에서 TextMeshPro의 Distance field overlay 쉐이더가 제대로 지원되지 않아 투명하게 표시된다. 만약 데미지등의 표시를 위해 3d 스페이스에서 숫자를 가리지 않고 표시하려면 어떻게 해야 할까? 첫 번째 방법 수동으로 카메라 앞을 가리는 물체를 감지하고, 그 물체들 맨 앞으로 글자를 옮긴다음, 옮긴 만큼 다시 글자의 크기를 조정해주는 방법. 결과 내 작업물에 시도해 본 결과, 포스트 프로세싱등과의 충돌 문제로 글자가 제대로 표시되지 않는 경우가 많다. 두 번째 방법 카메라 스태킹. 오직 데미지 숫자만을 촬영하는 카메라를 따로 만든다(레이어 이용). 그리고 원래 메인 카메라에서는 해당 레이어를 렌더링 레이어에서 제외한다. 결과 마찬가지로 포스트프로세싱과 엮인 문제들이 많았다. ..
HDRP 환경에서 TextMeshPro의 Distance field overlay 쉐이더 사용HDRP에서 TextMeshPro의 Distance field overlay 쉐이더가 제대로 지원되지 않아 투명하게 표시된다. 만약 데미지등의 표시를 위해 3d 스페이스에서 숫자를 가리지 않고 표시하려면 어떻게 해야 할까? 첫 번째 방법 수동으로 카메라 앞을 가리는 물체를 감지하고, 그 물체들 맨 앞으로 글자를 옮긴다음, 옮긴 만큼 다시 글자의 크기를 조정해주는 방법. 결과 내 작업물에 시도해 본 결과, 포스트 프로세싱등과의 충돌 문제로 글자가 제대로 표시되지 않는 경우가 많다. 두 번째 방법 카메라 스태킹. 오직 데미지 숫자만을 촬영하는 카메라를 따로 만든다(레이어 이용). 그리고 원래 메인 카메라에서는 해당 레이어를 렌더링 레이어에서 제외한다. 결과 마찬가지로 포스트프로세싱과 엮인 문제들이 많았다. ..
2024.01.25 -
https://youtu.be/a5TCCQgdv-E?si=jtAWsjPK0EKoXe3A https://unity.com/kr/resources/level-up-your-code-with-game-programming-patterns Level up your programming with game programming patterns | Unity For every software design issue you encounter, a thousand developers have been there before. Though you can’t always ask them directly for advice, you can learn from their decisions through design patter..
[유니티 디자인패턴] 싱글톤https://youtu.be/a5TCCQgdv-E?si=jtAWsjPK0EKoXe3A https://unity.com/kr/resources/level-up-your-code-with-game-programming-patterns Level up your programming with game programming patterns | Unity For every software design issue you encounter, a thousand developers have been there before. Though you can’t always ask them directly for advice, you can learn from their decisions through design patter..
2023.12.25 -
참고 영상: https://youtu.be/JxP-kqstMAY?si=qXL6eqLFbFqf-nQC https://youtu.be/A7mfPH8jyBE?si=LWs8AFwi3eIFbCl7 https://youtu.be/v-p0o9KavkI?si=HBb3CI91lMTm0zLn https://youtu.be/0AFb2hizXVU?si=jK51_4mwOQEhfLJ7
유니티 오브젝트 풀링참고 영상: https://youtu.be/JxP-kqstMAY?si=qXL6eqLFbFqf-nQC https://youtu.be/A7mfPH8jyBE?si=LWs8AFwi3eIFbCl7 https://youtu.be/v-p0o9KavkI?si=HBb3CI91lMTm0zLn https://youtu.be/0AFb2hizXVU?si=jK51_4mwOQEhfLJ7
2023.12.25