728x90

게임 9

[Unity] Rider Debugging

RIder에서 alt + f5 혹은 Run - Debug 'Attach to Unity Editor' 혹은 오른쪽 위에 있는 벌레를 누르면 된다. (Visual Studio Shortcut 기준) 그러면 유니티에서 다음과 같이 물어보는데, 캔슬 빼고 눌러주자 . . 이제 다른 IDE랑 똑같다. 중단점 잡고 실행하면 된다. 그러면 디버깅이 촤라락 이제 Log만 주구장창 찍지 말고 디버그하자 . . . 더 자세한건 공식 문서에 . . https://www.jetbrains.com/help/rider/Debugging_Code.html Debugging | JetBrains Rider www.jetbrains.com

게임/Unity 2023.03.28

[Unity] \uFFFD Warning

The character with Unicode value \uFFFD was not found in the [SDF] font asset or any potential fallbacks. It was replaced by Unicode character \u25A1 in text object [CostText].UnityEngine.Debug:LogWarning (object,UnityEngine.Object) 문제 팀원 컴퓨터에서는 한글이 잘 나오는데 pull 받아보면 내 컴퓨터에서만 한글이 나오지 않는 문제가 있었다. 인코딩 관련 문제인건 알겠는데 \uFFFD라는 문자를 검색해보니 "�" 이런 문자만 나올 뿐이다. 해결 원인을 계속 찾아보다가 혹시나 해서 � 문자를 전체 검색해봤다.(Rider 기준..

게임/Unity 2023.01.31

[UE5] 언리얼 레벨 만들기

새 레벨 만들기 파일(File) - 새 레벨(New Level)에서 레벨을 새로 만들 수 있다. 오픈 월드(Open World): 월드 파티션(World Partition) 기능을 사용하여 대규모의 스트리밍 가능한 오픈 월드를 생성하는 샘플 콘텐츠가 제공되는 레벨 빈 오픈 월드(Empty Open World): 월드 파티션을 사용하지만 어떠한 콘텐츠도 제공되지 않는 레벨 기본(Basic): 평면, 라이팅, 애트머스피어, 익스포넨셜 포그가 제공되는 레벨 빈 레벨(Empty Level): 아무것도 제공되지 않는 레벨 환경 라이트 믹서(Environment Light Mixer) 빈 레벨을 생성하면 정말 아무것도 없는 레벨이 생성된다. 이때 환경 라이트 믹서라는 기능을 통해 간편하게 레벨 환경을 세팅할 수 있..

게임/Unreal 2023.01.31

[UE5] 캐스팅(Casting)

Cast(From); 언리얼에서는 레벨에 배치되는 모든 클래스가 AActor 클래스를 상속받는다. 또한 개발자가 만들어내는 클래스 역시 AActor 클래스를 상속받는 경우가 많다. 만약 플레이어가 발사체에 충돌했을 때 데미지를 받는 기능을 만든다면 아래와 같이 작성할 수 있다. 레벨에 존재는 오브젝트들은 모두 AActor 클래스를 상속받기 때문에, 충돌한 오브젝트의 AActor 클래스를 넘겨준다. 하지만 위와 같이 작성한다면 어떤 오브젝트와 충돌이 발생하더라도 플레이어에게 피격이 발생할 것이다. 따라서 플레이어와 충돌한 오브젝트가 발사체인지 확인하는 작업을 거쳐야한다. 캐스팅을 이용하면 이 문제를 해결할 수 있다. 충돌한 AActor 클래스가 AProjectile로 캐스팅이 되었다면 피격 로직이 수행되고..

게임/Unreal 2023.01.29

[UE5] 나나이트 가상화 지오메트리 (Nanite Virtualized Geometry)

개요 나나이트란 새로운 내부 메시 포멧과 렌더링 기술을 사용하여 픽셀 스케일의 디테일 및 다수의 오브젝트를 렌더링하는 가상화 지오메트리 시스템이다. 클러스터 컬링과 자동 LOD(Level of detail)를 통해 고품질 더 적은 성능과 손실로 사용할 수 있다. 활성화 : 스태틱 매쉬 - 디테일 - 나나이트 세팅 - Enable 본문 작동 방식 나나이트에서는 일정 수의 폴리곤을 클러스터라는 단위로 묶어준다. 이렇게 묶은 클러스터를 또다시 묶어 부모 클러스터로 만들어준다. 이 클러스터들로 로우 퀄리티의 메시를 직접 만들어 자동으로 LOD를 처리해준다. 또한 이렇게 만들어진 클러스터들을 기반으로 카메라의 시점에 따라 컬링해 준다. 일반적으로 오클루전 컬링(Occlusion Culling)은 컬링 기준을 오브..

게임/Unreal 2023.01.24

[Unity] RedRunnder 오픈소스 분석

https://github.com/BayatGames/RedRunner GitHub - BayatGames/RedRunner: Red Runner, Awesome Platformer Game. Red Runner, Awesome Platformer Game. Contribute to BayatGames/RedRunner development by creating an account on GitHub. github.com 게임을 보통 어떤 구조로 어떻게 만드는지 궁금해서 살펴보고, 참고할 수 있을 만한 부분들을 정리했다. 오브젝트 상속 관계 abstract Charactor class abstract Enemy class abstract Collectable class abstract Block class..

게임/Unity 2022.12.14

[UE5] 언리얼 5 입문

개요 컴퓨터도 바꿨겠다. 항상 생각만 했던 언리얼 5, 이참에 입문하여 컴퓨터 뽕 좀 뽑아보자 본론 언리얼 5 새로운 기능 Quixel Bridge Quixel의 고품질의 모델과 텍스쳐를 무료로 제공한다. 콘텐츠 - 퀵셀 브릿지 Nanite virtualized geometry 자체 지원 자동 LOD(Level of detail)기능이다. 스태틱 매쉬 - 디테일 - 나나이트 세팅 - Enable Lumen dynamic global illumination 언리얼의 새로운 라이트 일루미네이션 및 리플렉션 시스템이다. 유니티와 비교 유니티는 어느정도 사용해봤기 때문에 더 빠른 이해를 위해 참고했다. 유니티와 비교했을 때 아래와 같이 상응하거나 대략적으로 비슷한 기능을 수행한다. 더보기 유니티 언리얼 Scne..

게임/Unreal 2022.12.01

[Unity] 화면 외부에서 오브젝트 생성

개요 적을 랜덤한 위치에서 생성시키는데, 화면 안에서도 생성되니 어색하다. 때문에 화면 밖에서 적을 생성시키기 위해 이것저것 시도해봤다. 본론 1. 원 범위로 생성 public Vector3 SpawnEnemy() { Vector3 playerPosition = _playerTransform.position; float radius = 25f; float x = Random.Range(-radius + playerPosition.x, radius + playerPosition.x); float y = Mathf.Sqrt(Mathf.Pow(radius, 2) - Mathf.Pow(x - playerPosition.x, 2)) + playerPosition.y; y *= Random.Range(0, 2) =..

게임/Unity 2022.11.27

[Unity] 다중 오브젝트 풀링 (Multiful Object Pooling)

오브젝트 풀링(Object Pooling) 오브젝트의 생성과 파괴는 꽤 많은 성능을 잡아 먹는다. 생성은 메모리 할당과 리소스 로드, 파괴는 가비지 컬렉션이 동작하기 때문이다. 게임 실행 중 다량의 오브젝트가 생성 및 파괴가 된다면 프레임 드랍 등의 성능 문제가 발생할 것이다. 이를 방지하기 위해 사용하는 기법이 오브젝트 풀링이다. 오브젝트를 필요한 만큼 미리 생성해놓고 필요 할 때 사용하고 사용이 끝나면 다시 풀에 반납하는 방식이다. 다중 오브젝트 풀링(Object Pooling) 하지만 게임을 개발하다보면 오브젝트 풀이 필요한 경우가 생각보다 빈번하다. (투사체, 적, 타일 등) 기본적인 오브젝트 풀 코드에서는 이를 한번에 관리할 수가 없다. 이 문제를 해결하기 위해 여러 코드를 참고하여 다중 오브젝..

게임/Unity 2022.11.06