Game Development(20)
-
[UE5] Render thread와 Animation thread에 대한 이해
1. 글을 쓰게 된 계기 애니메이션 블루프린트로 캐릭터 애니메이션을 적용하던 중, 여러 자료를 찾아보며 공부 하다보니, 언리얼 엔진은 여러 스레드로 구성되어 돌아간다는 사실을 알게 되었고, 애니메이션 또한 그렇다는 사실을 알게 되었습니다. 하지만 생각보다 애니메이션 스레드 관련 자료가 많이 없었기에, 제가 작성하여 이를 공유하고자 글을 작성하게 되었습니다. 언리얼 엔진을 공부하는 입장이기에 모두 정확한 사실은 아닐 수 있어, 참고하였던 문서 및 영상 링크를 남겨두겠습니다. 참고 자료 🔗[Youtube] Understanding Render Thread and Animation Thread in Unreal Engine 🔗[UE 5.2 Documentation] 애니메이션 최적화 🔗[UE 5.2 Docum..
2023.08.21 -
[UE5] Unreal Engine 디버깅 하는 법 with Visual Studio
1. 언리얼 엔진 에디터를 끄고, Visual Studio에서 확인하고자 하는 코드 라인에 중단점을 찍습니다. 저는 AMyActor::BeginPlay() 함수 부분에 중단점(Breakpoint)을 찍었습니다. 2. "F5" 키를 누르거나, "로컬 Windows 디버거" 버튼을 누릅니다. 솔루션 구성을 Development Editor로 하게 되면 스택 메모리에 할당된 변수들을 조사식에서 볼 수 없게 되는데, 이거는 Development Editor 대신 DebugGame Editor로 설정해주면 볼 수 있게 됩니다. 만약 로컬 Windows 디버거 버튼이 "시작"이란 이름으로 설정되어 있거나, 디버깅을 시작할 수 없다는 다이얼로그가 뜬다면 🔗이 글을 참고하여 해결할 수 있습니다. "UnrealEdito..
2023.02.09 -
[Unity] 이벤트 주도적 프로그래밍 (Event Driven Programming)
게임에는 수많은 이벤트들이 있다. 플레이어가 적 캐릭터의 시야에 언제 들어오고 나가는지, 체력이 언제 떨어지는지, 무기가 언제 바닥나는지, 적 캐릭터가 언제 위험한 바닥에 올라서는지 등, 우리가 게임할 때마다 자연스럽게 경험했던 것들이다. 키보드 입력이나 마우스 클릭, 오브젝트의 충돌체 영역 통과, 플레이어가 공격받는 것 등과 같은 순간처럼 이벤트는 수동적인 성격을 가지고 있으며, 스스로 능동적으로 발생하진 않는다. 이벤트는 응답을 만들고 발생시키며, 그 응답이 다시 그 이후의 응답을 일으키는 이벤트가 될 수 있다. 즉, 이벤트는 하나의 행동을 취함(이벤트)으로써 다른 행동을 수반(응답)하는 식으로, 서로의 행동들은 중요한 관계를 맺고 있다고 볼 수 있다. 프로퍼티(Property)를 통한 이벤트 구현의..
2022.04.03 -
[Unity] 시각적 디버깅에 용이한 기즈모(Gizmos)
유니티에서 디버깅을 하다 보면, 콘솔과 같은 데이터 문자열보다는 시각적인 선을 통해 확인하고 싶은 경우가 있다. 예를 들면, 적과 다른 캐릭터들에게 플레이어나 다른 오브젝트가 범위 내로 들어올 때 볼 수 있게 해주는 가시선 기능 같은 것이 대표적이다. 지구처럼 공전을 하는 오브젝트가 있을 때, 그 궤도를 볼 수 있는 선으로 표시를 해준다면 더욱 편리할 것이다. 이런 기능들이 지원된다면, 어떻게 게임이 작동하는지 눈으로 직접 확인을 할 수 있는 장점이 있다. (물론 이런 선들은 실제 인게임에서는 보이지 않는다.) 기즈모(Gizmos) 위에서 설명했던 기능들을 지원하기 위해, 유니티는 기즈모(Gizmos)라는 시각적 도구 장치를 제공한다. 충돌체의 와이어프레임 바운딩 박스(Wire Frame Bounding..
2022.03.11 -
[Unity] 전처리기 플래그 (Preprocessor Flag)를 이용한 조건 컴파일 코드 작성하기
필요한 이유 유니티에서 조건별 컴파일을 할 수 있도록 코드를 작성할 수 있다. 유용하게 사용하는 대표적인 예시 중 하나로, 디버깅을 끝낸 후에 디버그 코드를 지우고, 다시 개발하다가 또 똑같은 오류를 접하게 되면 지웠던 내용들을 다시 작성해야 하는 번거로움을 겪지 않아도 된다는 게 있다. 이것은 전역 선언(Global define)을 통해 해결할 수 있다. 전역 선언이란, 코드를 조건별로 컴파일하거나 특정 단락을 제외하는 것을 활성화 또는 비활성화할 수 있도록 해주는 특별한 전처리기 플래그(Preprocessor flag)를 말한다. 플래그를 true로 설정하면 유니티는 자동으로 한 버전의 코드를 컴파일, false로 설정하면 또 다른 버전을 컴파일한다. 이렇게 하나는 디버그용, 또 다른 하나는 배포용과..
2022.03.08 -
[Unity] SendMessage와 BroadcastMessage
Unity 공부를 하다가 MonoBehaviour 클래스에서 제공하는 "SendMessage()"와 "BroadcastMessage()" 기능을 봤다. 위 함수들을 이용하여, 게임 오브젝트에 붙은 모든 컴포넌트의 함수를 이름으로 실행할 수 있다고 한다. 일반적으로 클래스에 접근하기 위해선, 객체를 가리키는 참조 변수를 통해 해당 클래스의 멤버 변수와 함수에 접근하게 된다. 하지만, "SendMessage()"와 "BroadcastMessage()"는 실행할 함수의 이름만 알고 있다면 참조 과정을 거치지 않아도 된다. SendMessage() 다음은 Unity API Documentation에 적혀있는 함수의 원형이다. public void SendMessage(string methodName, objec..
2022.02.22