클라이언트 새로 생성시 크래쉬 나는 문제..
294
작성자 없음
안녕하세요. 영상을 보면서 언리얼을 배우고있는 학생입니다.
선생님께서 알려주신대로 제가 따로 만든 프로젝트에 점목을 시키고있는데 클라이언트 추가 생성시 GameMode를 상속받은 클래스에서 Login()함수에 NewPlayer의 플레이어 컨트롤러가
NULL로 들어와 크래쉬가 나 에디터가 꺼지는 현상이 일어 나고있습니다.. 어떻게 해결이 가능할까요???
답변 2
0
아래처럼 상위 클래스의 Login 함수를 호출한 후 받은 플레이어 컨트롤러가 NULL값으로 들어온다고 이해하면 될까요?
APlayerController* NewPlayerController = Super::Login(NewPlayer, InRemoteRole, Portal, Options, UniqueId, ErrorMessage);Player와 PlayerController는 다른 객체입니다.
0
디버깅을 통해 플레이어컨트롤러를 생성하는것은 확인을 했습니다. 정확히는 제가 파라곤 캐릭터로 테스트를 하고있는데 캐릭터 클래스에서
APlayerController* PlayerController = CastChecked<APlayerController>(GetController());
GetController() 함수를 통해 컨트롤러를 가지고 오는데 클라이언트를 하나 생성시 저 부분에서 nullptr이 떨어져 크래쉬가 나고 있었습니다.
또한,

영상과 다르게 처음 Standalone이 아닌 서버로 뜨고 있는 상황이 있습니다.. 버전이 다른데 버전의 차이때문일까요??
0
Standalone과 Server의 차이는 버전 때문인 것으로 보여집니다. ( 5.1 이후 버전에서 시스템에서 세팅하는 타이밍이 조금 달라졌습니다. )
GetController() 함수가 nullptr이 나왔다는 것은 아직 빙의가 안된 타이밍에 호출한 것으로 보여지는데, 언제 호출하는지 코드를 볼 수 있을까요?
0
네 지금 두 명의 캐릭터가 있는데 ( 서버와 클라 ) , 서버 입장에서는 모든 클라의 컨트롤러를 소유하고 있지만, 클라 입장에서는 서버 컴퓨터의 Player는 자기 소유가 아닌 상황입니다.
로그를 보면 첫 번째 캐릭터는 자기가 소유하는 캐릭터라 GetController가 함수 결과가 반환되는데, 서버의 캐릭터로 추정되는 두 번째 캐릭터는 프록시 형태로 복제된 상황이다보니 클라입장에서는 컨트롤러를 알 수 없어 nullptr이 나올 수 밖에 없는 상황입니다.
그렇기에 IsLocallyControlled함수를 사용해 내가 조종할 수 있는 캐릭터인지 먼저 확인을 하고 로직을 진행하셔야 합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
박은혁님이 겪고 있는 문제는 언리얼 엔진에서 멀티플레이어 게임을 개발할 때 흔히 발생할 수 있는 문제 중 하나입니다. 클라이언트 생성 시 크래쉬가 나는 현상은 여러 가지 원인에 의해 발생할 수 있습니다. 특히, Login() 함수에서 NewPlayer의 플레이어 컨트롤러가 NULL로 들어오는 경우는 초기화 문제일 가능성이 큽니다.
이 문제를 해결하기 위해 몇 가지 해결 방법을 제안드립니다:
플레이어 컨트롤러 초기화 확인:
Login()함수가 호출되기 전에NewPlayer가 제대로 초기화되었는지 확인하세요. GameMode의 기본 설정이나 플레이어 컨트롤러 클래스가 잘못 설정되어 있을 수 있습니다.디버깅:
Login()함수가 호출되기 직전에 디버그 로그를 추가하여NewPlayer가 올바르게 생성되고 있는지 확인하는 것도 중요합니다. 디버깅을 통해 어떤 시점에서NULL이 전달되는지 추적할 수 있습니다.프로젝트 설정 확인: 프로젝트 설정에서 GameMode와 관련된 설정이 올바른지 확인하세요. 특히, ‘플레이어 컨트롤러 클래스’가 잘못 설정되어 있으면 예상치 못한 센서리오에서 오류가 발생할 수 있습니다.
최신 엔진 사용 환경: 사용하고 계신 언리얼 엔진의 버전이 강의와 동일한지 혹은 호환 가능한 버전인지 확인해 보세요. 엔진의 버전 차이가 코드 동작 방식에 영향을 미칠 수 있습니다.
이 외에도 아래의 유사한 질문과 답변을 참고하여 문제 해결의 실마리를 찾을 수 있을 것입니다:
- Unreal Engine Crash : 언리얼 엔진 크래쉬에 대한 다양한 원인 분석과 해결 사례가 포함되어 있습니다.
- 헤더를 사용하지 않고 BeginPlay 동작 안하는 문제. : 언리얼 프로젝트 설정 및 코드 문제 해결을 위한 예제가 담겨있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
5.6버전 Networking Insights 실행안됨 문제에 관하여
0
89
2
8강 중간, 분수대의 SetOwner 에 대해 궁금합니다.
0
130
2
플레이어(Actor) 로 (리슨)서버에서 생성 되나요?
0
153
2
2강) HandleBeginPlay 의 역활이 궁금합니다.
-1
120
2
3강 중간, 모드 로그로 찍을 시 스탠드얼론이 안찍힙니다.
1
125
2
CompressedFlag 질문
0
95
2
10강까지 머리 위 체력바가 표시가 안됩니다.
0
159
3
10강까지 머리 위 체력바가 표시가 안됩니다.
0
150
2
16:44 부분에서 질문이 있습니다.
0
132
2
12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.
0
154
2
github 3-5 파트 프로젝트에서 컴파일 에러가 발생합니다.
0
165
3
언리얼 인사이트 5.6버전 networking insights 가 뜨지 않습니다.
0
211
3
Insight 사용이 안되어서 문의 드립니다!
0
182
2
하위 레벨...?? High Level 말씀하신거죠..??
0
194
1
CompressedFlags를 이용한 InputThrottle, InputSteering 전달 방법 질문
0
230
1
조건식 프로퍼티 리플리케이션 질문
0
209
2
ArenaBattle에 Log추가하는 곳에 에러가 나타나 질문 드립니다.
0
208
2
7강에서 DORM_Initial 안됨
0
165
3
안녕하세요 강의 내용 정리에 관련해서 질문있어요
0
171
2
캐릭터 클래스의 mesh 관련
0
168
2
3파트 6강 분수대 로테이트에 문제가 생겼습니다.
0
172
3
클라이언트의 오너십 설정에 대해서 궁금합니다.
0
232
3
프로퍼티 리플리케이트 동기화 보장 개념.
0
256
2
결국엔 액터 기본함수들은 어디든 똑같이 일단 실행되는건가요?
0
111
2





