본문 바로가기

분류 전체보기25

(Unreal) Fasoo DRM으로 망가지는 언리얼 엔진 어느날부터인가 UE4 Editor가 심하게 느려지기 시작했는데, 그 원인을 알 수가 없어서 답답했었다. 인게임에서 거의 10프레임 수준까지 떨어졌는데, 동료들 컴퓨터에서는 전혀 문제가 없었고, 나만 이런지라 굉장히 의아했었다. 그러다 우연히 Visual Studio의 Output을 보게 되었는데, 엄청난 속도로 int at memory location exception이 찍히고 있었다. UE4를 쓰다보면 보통 Editor의 Output Log를 보기 때문에, VS의 Output에는 소홀해지기 마련이다. 그리고 memory location exception은 VS 기본 세팅에서 중단을 걸지 않는 예외라 발견을 못한 것도 있다. Exception Settings에 있는 를 체크하면 모든 예외에 중단을 걸게 .. 2022. 8. 14.
(Unreal) Events와 Multicast Delegates의 차이점에 대하여 Events Delegates that can be bound to multiple functions and execute them all at once. docs.unrealengine.com Events와 Multicast Delegates는 굉장히 흡사해보인다. 동일한 함수들을 가지고 있고, 하는 일도 같아 보인다. 공식 문서에 따르면, Events는 Multicast Delegates와 굉장히 흡사하지만, 이벤트를 선언한 클래스만이 이벤트의 Broadcast, IsBound, Clear 함수를 호출할 수 있다고 적혀 있다. 그 말인 즉슨, Event를 선언한 클래스 외에는 Event에 바인딩이 가능하지만, Event를 Clear하거나 Broadcast를 호출하는 등의 동작은 불가하게 되므로, Ev.. 2022. 8. 6.
(C#) if문에서의 null 체크와 null 연산자의 차이 public class EventSource { private EventHandler Updated; public void RaiseUpdates() { ... } private int counter; } 위와 같은 클래스가 있고, RaiseUpdates시 counter를 증가시키고, Updated 이벤트를 호출한다고 생각해보자. public void RaiseUpdates() { counter++; if(Updated != null) { Updated(this, counter); } } 그냥 Updated를 호출하면 null이면 Exception이 발생하기 때문에, null 체크를 해주는게 안전하다. 1. if 문으로 Updated의 null을 검사하거나 2. null 연산자를 이용하거나 두 가지의 방.. 2022. 8. 6.
(Unity) Certified Expert : Programmer item walkthrough 유니티 공인 Expert Programmer 시험은 5년차 이상의 프로그래머들을 대상으로 하는 최고 등급의 시험인데, 유니티 및 C#에 관련된 스킬 뿐만 아니라 현업에서 일어날 수 있는 기술적 이슈들에 대한 효율적인 의사결정을 본다고 한다. 위 영상은 유니티 공인 Expert Programmer 시험의 샘플 테스트 예제이다. 문제를 한국어로 번역 및 해설해보고자 한다. [문제 1] 4가지 캐릭터를 선택해 플레이할 수 있는 플랫포머 게임이 있다. 점프할 때 캐릭터와 바닥 사이의 거리를 모든 캐릭터에서 동일하게 측정해야 한다. 그리고 게임 디자이너가 인스펙터에서 캐릭터를 개별적으로 설정하고 튜닝할 수 있어야 한다. Q. 프로그래머가 구현할 수 있는 다음 방법들 중에 가장 최선의 선택은 무엇인가? A) bas.. 2022. 8. 1.
(Unity) Inverse Kinematics (역운동학) Inverse Kinematics (이하 IK) 는 운동학을 반대로 계산하는 것을 말한다. 그전에 운동학이 무엇인지 알 필요가 있다. 애니메이션이 가능한 모델들의 본 구조는 거의 전부 트리 형태를 가지고 있다. Root bone에서 부터 각 부위의 끝으로 이어지게 되는데 (Joint Chain이라 한다.), parent bone의 회전이 child bone에게 영향을 주게 된다. 애니메이션은 본의 회전을 미리 정해진 값으로 해서 만들게 되는데, 이를 Foward Kinematics (순운동학) 라고 한다. 기본적으로 Model 의 Pose는 애니메이션의 값을 그대로 쓰면 되는데, 같은 애니메이션을 쓰더라도 Pose가 달라야 하는 경우가 있다. 발을 어딘가에 올려놓는다거나 (계단 올라가기), 손으로 무언가.. 2022. 7. 28.
(Unity) Avatar Mask를 이용한 Humanoid 상,하체 분리 및 회전 FPS, TPS 장르의 게임에서는 애니메이션 처리를 몸 전체로 하지 않고, 상체, 하체 및 몸통을 기본적으로 분리하는게 보통이다. 그 이유는 당연하겠지만, 플레이어가 조준하는 방향으로 캐릭터의 몸통이 회전하고, 달리면서 사격, 달리면서 장전 등 상체와 하체의 애니메이션이 따로 재생되는게 자연스럽기 때문이다. 유니티에서는 Avatar 설정 및 Avatar Mask를 이용해서 모델의 파츠별 분리를 쉽게 할 수 있다. Synty Studio의 Simple Apocalypse에 좋은 예가 있어서 이를 한번 보고자 한다. 오늘 사용할 모델 이 모델의 Animator가 사용하는 Controller 및 Avatar 이다. SA_CharacterAvatar를 먼저 열어본다. 상,하체를 분리하기 위해서는 일단 Avata.. 2022. 7. 27.