
펑~~~~
뭔가 쳤더니 엔진이 크래쉬가 났다
저 무수히 많은 로그를 보고 지레 겁을 먹을 수 있다.
특히 잘되다가 갑자기 안되면 엔진탓이라도 해보겠다만,
내가 뭔가를 제작하거나 변경한 뒤에 테스트를 해보려고 플레이 했더니 크래쉬 나버린다면?
99퍼센트 나의 업보일 가능성이 높기에,,,.
언리얼 엔진은 생각보다 매우 친절하기 때문에,,!!
당황하지말고 로그가 주는 힌트를 잘 보고 차분히 해결해보자
힌트 1 - 어떤 오류인지 파악하기

메모리 오류임
런타임 중에 제대로 할당되지 않은 메모리를 참조하려고 해서
터지는 것일 확률이 매우 매우 높다.
이것으로 벌써 80퍼는 해결했다고 볼 수 있다(?)
힌트 2 - 문제가 터졌던 상황을 잘 생각해보기

언리얼 엔진의 게임을 실행한 뒤 플레이어가 게임을 시작하기까지의 과정을 잘 기억하고 있는가..
Game Mode 가 Player에게 Pawn을 배정해주는 과정에서,
Player Controller 또한 배정해준다.
그리고 컨트롤러가 폰에 성공정으로 빙의했을 때, 비로소 게임의 시작이 이루어진다.
즉,Player Controller 생성 -> Player Pawn의 생성 ->Player Controller가 Pawn에 빙의!
이러한 과정을 거쳐야 게임이 시작되는데
지금 상황은 게임 시작을 하다 특정 행동을 했을 때가 아니라
그냥 시작과 동시에 에디터 창 한번 못보고 터진다.
이 말은 곧 플레이어가 게임에 입장하는 과정에서부터 틀려먹은 문제가 발생하고 있다고도 유추해볼 수 있다.
위의 이미지를 보면 플레이어 컨트롤러의 생성까지는 문제가 없어보인다.
Pawn::PostInitializeComponents()함수까지는 문제 없이 잘 호출되고 있기 때문이다.
그렇다면?????
힌트 3 - 마지막으로 호출된 함수, 접근한 변수명을 확인하기

앗 !!!!!! PuppyAIController에서 빙의하는 과정에서,
OnPossess() 함수의 내용을 실행하다 SetValueAsVector()에서 터졌다는게
로그에 떡하니 나와있다!!!!
오류가 뭔지, 어떤 상황에서 터졌었는지를 잘 분석했고
어떤 함수를 실행시키다 문제가 생겼는지까지 파악했기 때문에 이젠 해당 코드를 확인만 해보면 된다

AI 제작 한다고 신난 나머지 냅다 블랙보드 할당도 안하고 함수 호출하고 있었던 것ㄱㅡ;;

UseBlackboard를 호출하여 컴포넌트를 생성해준 이후에
사용하면 된다...
차라리 내가 쌓은 로직 이슈면 짐작이라도 가서 해결이 쉬운편이다..,.,
잘 되던게 이유없이 터지는게 진짜 억장 와르르 멘션인 것인데
지구 60억 인구 중 누군가는 나와 같은 오류를 겪고 어딘가에 질문을 했을 터이니
그 또한 당황하지 말고 차분하게 안되는 영어로 구글과 chat gpt에게 빌어보면 된다..
How to,,,
Why,,,
'Engine > Unreal' 카테고리의 다른 글
| 언리얼 컨테이너 라이브러리 - TArray / TSet (0) | 2024.12.20 |
|---|---|
| 언리얼 c++ 델리게이트 (0) | 2024.12.18 |
| 언리얼 c++컴포지션 (0) | 2024.12.04 |
| 언리얼 인터페이스 (0) | 2024.12.03 |
| 언리얼 리플렉션 시스템을 활용하여 개발해보자 ! (2) | 2024.11.29 |