inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

2강 게임 모드와 로그인

ArenaBattle에 Log추가하는 곳에 에러가 나타나 질문 드립니다.

해결된 질문

158

jjune0427

작성한 질문수 19

0

타 프로젝트에서 동일하게 사용하기 위해서

LOG-NETMODEINFO를

#define LOG_NETMODEINFO ( (GetNetMode() == NM_Client)  ? *FString::Printf(TEXT("CLIENT %d"), GPlayInEditorID) : ((GetNetMode() == ENetMode::NM_Standalone) ? TEXT("STANDALONE") : TEXT("SERVER")))

다음과 같이 강의 그대로 사용을 하면
static_assert failed : 'invalid argument(s) passed to printf'
라는 에러가 나옵니다.

하지만 다음과 같이 작성하면 에러가 나타나지 않습니다. 이유를 아직까지 잘 모르겠어서 질문 남깁니다.

#define LOG_NETMODEINFO ((GetNetMode() == ENetMode::NM_Client) ? TEXT("Client") : ((GetNetMode() == ENetMode::NM_Standalone) ? TEXT("StandAlone") : TEXT("Server")))

unreal-engine 네트워크 언리얼-c++

답변 2

1

이득우

5.5버전이면 대신 UE::GetPlayInEditorID()를 사용해주어야 합니다.

0

jjune0427

이게 문제였던 것 같습니다. 잘됩니다. 감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. jjune0427님.

LOG_NETMODEINFO를 정의하는 과정에서 발생한 에러 메시지는 Printf와 관련이 있습니다. 두 가지 코드를 비교하면, 첫 번째 코드는 FString::Printf를 사용하여 출력 문자열을 생성하고, 두 번째 코드는 단순히 TEXT 매크로를 통해 문자열을 반환합니다.

이유 설명

  1. FString::Printf와 TEXT 매크로:

    • FString::Printf는 C 스타일의 포맷팅을 지원하는 함수로, 주로 변수 값을 문자열로 변환하여 포함시키기 위해 사용됩니다. 이 함수는 정확한 포맷 문자열과 타입을 요구하기 때문에, 잘못된 인자나 사용법이 있을 경우 컴파일 단계에서 에러가 발생합니다.
    • 반면, TEXT 매크로는 단순히 일련의 문자열을 리턴하는 매크로로, 변수를 포함하지 않기 때문에 포맷팅과 관련된 문제에서 자유롭습니다.
  2. GPlayInEditorID 사용:

    • 첫 번째 코드에서 GPlayInEditorIDFString::Printf 함수의 두 번째 인자로 사용되고 있습니다. 하지만 이 변수가 적절히 정의되거나 초기화되지 않은 경우 오류가 발생할 수 있습니다.

해결 방법

  • 첫 번째 코드에서 GPlayInEditorID를 올바르게 정의하고 초기화해 주시고, FString::Printf를 사용할 때 포맷 문자열과 변수가 올바르게 매핑되었는지 확인해 주세요.
  • 만약 포맷팅 기능이 필요하지 않다면, 두 번째 코드와 같이 단순 TEXT 매크로를 사용하여 문제를 피할 수 있습니다.

관련된 더 많은 정보를 원하시면, 언리얼 공식 문서개발자 커뮤니티를 참고하시길 권장드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

5.6버전 Networking Insights 실행안됨 문제에 관하여

0

21

1

8강 중간, 분수대의 SetOwner 에 대해 궁금합니다.

0

73

2

플레이어(Actor) 로 (리슨)서버에서 생성 되나요?

0

96

2

2강) HandleBeginPlay 의 역활이 궁금합니다.

-1

70

2

3강 중간, 모드 로그로 찍을 시 스탠드얼론이 안찍힙니다.

1

73

2

CompressedFlag 질문

0

55

2

10강까지 머리 위 체력바가 표시가 안됩니다.

0

105

3

10강까지 머리 위 체력바가 표시가 안됩니다.

0

93

2

16:44 부분에서 질문이 있습니다.

0

100

2

12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.

0

116

2

github 3-5 파트 프로젝트에서 컴파일 에러가 발생합니다.

0

112

3

언리얼 인사이트 5.6버전 networking insights 가 뜨지 않습니다.

0

162

3

Insight 사용이 안되어서 문의 드립니다!

0

125

2

하위 레벨...?? High Level 말씀하신거죠..??

0

143

1

CompressedFlags를 이용한 InputThrottle, InputSteering 전달 방법 질문

0

187

1

조건식 프로퍼티 리플리케이션 질문

0

141

2

7강에서 DORM_Initial 안됨

0

126

3

안녕하세요 강의 내용 정리에 관련해서 질문있어요

0

128

2

캐릭터 클래스의 mesh 관련

0

129

2

3파트 6강 분수대 로테이트에 문제가 생겼습니다.

0

127

3

클라이언트의 오너십 설정에 대해서 궁금합니다.

0

197

3

프로퍼티 리플리케이트 동기화 보장 개념.

0

220

2

결국엔 액터 기본함수들은 어디든 똑같이 일단 실행되는건가요?

0

86

2

3분 39초 경에 질문이 있습니다

0

73

2