inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

mouse input action 반응성 관련 질문.

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

안녕하세요. 동일 함수를 키보드 키로 bind 할 때와 달리 마우스로 하면 클릭의 반응성이 매우 떨어지는 문제를 발견했는데 Unreal 버전의 문제일까요? (5.3 사용중 입니다.) 또 c++ 이 아니라 블루프린트로 구현 시에는 마우스 클릭 반응성에 문제가 없었습니다.

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
jjbass89 댓글 1 좋아요 0 조회수 317

함수 포인터, 함수 객체에 대한 질문입니다!

해결됨

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

공부하다가 생긴 궁금증입니다. 함수 객체가 함수 포인터의 모든 기능을 대체할 수 있나요? 함수 포인터를 매개변수로 받아주는 라이브러리를 사용하는 것을 제외하고 c++에서 함수 객체 말고 함수 포인터를 사용해야만 하는 경우가 있나요? 함수 객체의 기능이 매우 뛰어난데, std::functional을 이용해서 callable 을 따로 관리하는 기능이 있는 이유는 무엇이고 이점은 무엇인가요? 가장 궁금한 것은 std::functional 을 사용하는 이유입니다!

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
alsxm0010 댓글 2 좋아요 1 조회수 344

컴파일 에러

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

Error MSB3073 WaitMutex -FromMsBuild" exited with code 6. C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets 44 The command "E:\ProgramFiles\UE_5.3\Engine\Build\BatchFiles\Build.bat ArenaBattleEditor Win64 Development -Project="C:\Users\User\Desktop\ArenaBattle\ArenaBattle.uproject" -WaitMutex -FromMsBuild" exited with code 6. ArenaBattle C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets 44 원래 제작하던 프로젝트파일이 5.3.2 버전인데요, 5.1.1버전을 실행했다가 다시 돌아오니까 실행이 안되는것 같습니다. 어떻게 해결할 수 있을까요? 엔진을 재설치해도 같습니다. https://forums.unrealengine.com/t/ue5-1-vs2022-c-build-error-with-msb3073/694392/10 이런데에 적혀있는 해결방법으로도 해결이 되지 않습니다.ㅠ

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
tyler217 댓글 1 좋아요 0 조회수 947

"에셋을 로딩한다"의 의미

해결됨

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

8강 소프트 레퍼런싱에 대해서 강의를 듣다가 에셋이 로딩되고 객체에 할당되는 과정에 궁금증이 생겼습니다. 제 생각은 다음과 같습니다. 에셋이 로딩되면 에셋의 데이터를 가지고 객체를 만든다. 그리고 해당 에셋을 사용하는 클래스가 인스턴싱될 때 로딩된 에셋(객체화된 에셋)을 복사해서 추가한다. 만약 같은 에셋을 사용하는 클래스가 두 개 이상이라면, 로딩된 에셋을 두 번 복사하게 된다. 즉, 에셋을 로딩한다는 것은 복사를 위한 원본 객체를 생성하는 것을 의미한다. 제 생각이 맞을까요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
조영웅 댓글 1 좋아요 0 조회수 425

SetConsoleTextAttribute 함수 특수문자 겹침 현상..

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

위와 같은 현상이 왜일어나는지 아시나요? 같은 색으로 하면 괜찮습니다.. 색은 변경할때 반칸씩 밀려 겹쳐 보이네요.. 간단한 코딩 아래첨부합니다.. #include <iostream> int main() { int temp = 0; for (int y = 0; y < 25; y++) { for (int x = 0; x < 25; x++) { temp++; //단일색 안밀림.. //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 1); //색변경시 밀림.. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), temp % 3 == 0 ? 1 : 2); cout << "■"; } cout << endl; } } 환경은 윈도우 11입니다.

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
chunkind 댓글 2 좋아요 0 조회수 724

5강 Montage_SetEndDelegate()함수 관련

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

FOnMontageEnded EndDelegate; EndDelegate.BindUObject(this, &AABCharacterBase::ComboActionEnd); AnimInstance->Montage_SetEndDelegate(EndDelegate, ComboActionMontage); Montage_SetEndDelegate 함수를 보면, AnimMontage클래스에서 AM이 종료되면 호출시키는 FOnMontageEnded타입의 델리게이트 변수를, 위 함수의 인자로 받는 델리게이트 변수와 치환해서(=) 실행되는 것으로 이해했습니다. 그렇다면 구현되어있는 델리게이트 변수에 ComboActionEnd함수를 바로 구독시키면 안되는건지 궁금해서 여쭤봅니다..

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
BlurryFace 댓글 1 좋아요 0 조회수 640

섹션 3. 포인터와 배열 (3주차) 배열 실습까지 진행했는데요

해결됨

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

저는 코드를 똑같이 따라 했다고 생각했는데 오류가 납니다. 파일 올려주신다고 했는데 어디서 다운 받을 수 있나요? https://youtu.be/7Tk8ocwMO7Q

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
윤주헌 댓글 1 좋아요 0 조회수 320

반년넘게 C#해도 이해라는게 도저히 안갔는데

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

C++하니까 스택이고 힙이고 참조고 이해가 됩니다 진짜 왜 C#을 먼저했을까요? 감사합니다

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
이원재 댓글 1 좋아요 0 조회수 441

hash_map, map 질문 드립니다.

해결됨

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

hash_map 같은 경우 그럼 큰 공간을 미리 할당해 놓고 할당된 공간 안에 key값을 기준으로 value 값을 채워 넣어 준다.그럼 예를 들면 map.reserve(100);과 같은 개념일까요??메모리를 희생하여 CPU 연산 속도를 올린다는 의미가 reserve : 큰 공간을 미리 할당(메모리 희생) 이사비용 감소 (미리 큰 공간을 할당하여 사용하므로 new ...() 과 같은 동작을 안해도 되므로) -> CPU 연산 속도 증가? 이러한 의미로 이해했는데 제가 이해한바가 맞는지가 궁금합니다. key값을 알면 빠르게 찾을 수 있다. -> map은 이진 탐색 O(logN)으로 찾지만, hash_map은 hm[key] O(1) -> m[key]도 가능하지 않나요? 그럼 map도 키 값을 알면 O(1) 즉 빠르게 찾을 수 있게 되는 건가요? hash 기법을 이용해서 key값을 추출하는 이유가 보안 때문인건가요?메모리를 늘릴 수 록 성능이 좋아지는 의미가 키 값이 겹쳐질 확률이 적어져서 성능이 좋아지는 건가요? -> 키 값이 겹치면 빈 공간을 찾아 가야하니

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
gamecoding 댓글 1 좋아요 1 조회수 332

SetComboCheckTimer함수에서 질문이 있습니다!

해결됨

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

ComboTimer의시간을 설정하는 float ComboEffectiveTime = (ComboActionData->EffectiveFrameCount[ComboIndex] / ComboActionData->FrameRate) / AttackSpeedRate; 이 코드가 1초를 30Frame으로 잡고 원하는 Frame까지 시간을 체크하기위해서 시간계산 용으로 이해했는데 위같은 방법 대신 Animation Montage BluePrint 에서 Notify로 설정하고 함수를 호출하는 방법은 성능적 차이가 클까요?? 아니면 그냥 개발자의 선택에 따른 차이일까요??

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
호잇 댓글 1 좋아요 0 조회수 456

랜덤박스에 waepon이 생기지 않습니다

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

Weapon이 primaryasset으로 안들어가서 그런가 싶어서 weapon의 데이터를 봤는데 Primary Asset Type은 ABItemData(비쥬얼스튜디오에서는 복사붙여넣기로 넣은거라 이름이 다를 리는 없을 거같습니다.)로 들어가있었습니다. 근데 박스가 생성될 때 assets의 num을 찍어보니 3이 아닌 2가 나오는거 보니 인식이 안되는 거 같은데 엔진의 문제일 수도 있나요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
홍승윤 댓글 2 좋아요 0 조회수 430

Stack Frame 구조 질문 (section2 스택메모리와 스택프레임 10분~12분경)

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

강의에서 설명된 내용 기준으로 argument 10 및 return address가 main함수의 스택 프레임에 있는 것으로 설명되었는데, 실제 코드에서 main함수에서 Test함수를 argument 10을 주면서 호출할 시에 매개변수 10에 대한 값과 추후에 다시 main 함수로 돌아오게 될 위치에 대한 리턴 어드레스 값은 메인 스택 프레임이 아닌 그 아래에 위치할 Test함수의 스택 프레임에 있는 것이 더 정확하지 않나에 대한 질문드립니다.

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
김현우 댓글 2 좋아요 0 조회수 612

2강 - 입력 매핑 컨텍스트 오류가 발생했습니다.

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

BeginPlay 함수를 오버라이딩 하실 때 void AABCharacterPlayer::BeginPlay() { Super::BeginPlay(); APlayerController* PlayerController = CastChecked<APlayerController>(GetController()); if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController)) { Subsystem->AddMappingContext(DefaultMappingContext, 0); // Subsystem->RemoveMappingContext(DefaultMappingContext); } } 와 같이 정의하셨는데, ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController) 이 함수에서 인수가 일치하지 않는다는 오류가 발생합니다. 선생님 코드를 보면 동일한 코드임에도 실행이 잘 되던데, 저는 이 부분 때문에 빌드가 안되고 있습니다. 인수가 ULocalPlayer가 들어와야 한다고 해서, APlayerController이 아닌 ULocalPlayer로 캐스팅도 해봤는데, 런타임에서 바로 터집니다. 혹시 어느 부분이 문제일까요? 모듈에는 EnhancedInput 추가했고, 로그에 해당 오류 말고 다른 오류가 발생하고 있지는 않습니다.

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
오의현 댓글 3 좋아요 0 조회수 1007

Unreal 애니메이션이 기본적으로 MultiThread 옵션이 켜져있는 점에 대해서.

해결됨

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

아마 성능을 위해 애니메이션 블루프린트 로직이 작업자 스레드에서 돌아가도록 옵션 켜는게 있는 것 같은데요. 많은 다른 예제에서 블루프린트 EventGraph 대신 Blueprint Thread Safe Update Animation 이라는 블루프린트 함수를 대신 사용하고 또, C++ 로도 NativeUpdateAnimation() 대신 NativeThreadSafeUpdateAnimation() 가 있더라구요. 그리고 블루프린트 전용 함수에서도 ThreadSafe 옵션을 켜고 끄는게 있는데 이걸 켜면 일반적인 C++ 함수를 호출할 수 없고, C++ 함수에 Meta = (BlueprintThreadSafe) 지정자를 설정하면 보이긴 하는데요. 여기서 NativeThreadSafeUpdateAnimation() 함수나 Meta = (BlueprintThreadSafe) 지정자를 붙인 C++ 함수에는동기화 기법( mutex 같은)을 사용해서 정말 내부적으로도 멀티스레드 프로그래밍 같이 코드를 짜야 하는건가요???

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
themoon007 댓글 2 좋아요 0 조회수 1480

21 : 41 OnGameClear OnGameOver 이벤트 노드

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

앞서 만든 코드에서는 OnGameClearCpp, OnGameOverCpp 이름으로 나오도록 했는데 미리 만드신것에선 이름을 다르게 지으신건가요? OnGameClear, OnGameOver 이름이 다르길래 질문드립니다. +수정 강의 뒤에 내용을 듣다보니 OnGameClearCpp, OnGameOverCpp 도 가져와 연결시켜주네요.. 미리만들어진것말고 제가 직접 만들어보고 있는데 저노드가 안보이는데 어떻게 추가를하면 될까요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
k ch 댓글 2 좋아요 0 조회수 436

에러메세지 뜨면서 막히는데 뭐가 잘못된건지 잘모르겠어요

해결됨

[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문

플레이하면 정상작동되고 몬스터를 한대라도치면 HP가 안달고 esc로 종료하면 해당 메시지가 뜹니다. 이 메세지는 왜 뜨는 건가요 ~?

  • unreal-engine
  • ue-blueprint
박현우 댓글 2 좋아요 0 조회수 562

1강 Default Pawn Class가 바로 변경되지 않는 이유

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

안녕하세요 1강 23:03 에서 강의 영상에서는 Ctrl+Alt+F11을 눌러 에디터 빌드를 완료를 하면 Default Pawn Class가 바로 ThridPersonCharacter로 변경이 되는데, 제 컴퓨터에서는 바로 변경이 되지 않습니다. cpp의 생성자 부분만 변경했음에도, 에디터를 끈 후 비주얼스튜디오에서 빌드를 한 후 다시 에디터를 실행해야 변경된 것이 확인되는데 왜 그럴까요? 제가 놓친 설정이나 빌드 방법이 있는지 궁금합니다.

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
뚜또 댓글 2 좋아요 1 조회수 894

22:53분에서 나오는 FClassFinder 함수 질문입니다.

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

게임모드에 언리얼에서 제공하는 3인칭 템플릿 캐릭터 에셋을 디폴트 폰 클래스로 지정할 때 ConstructorHelpers::FClassFinder 함수에 템플릿으로 APawn을 지정해주셨는데 캐릭터는 폰을 상속받은 클래스인데 ACharacter로 지정하면 안되는 이유가 있나요? 해보니깐 컴파일 오류가 나던데요 ACharacter로 클래스를 찾아야 오히려 더 명확하게 찾는게 아닌가 싶어서 질문드립니다.

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
근면한 복어 댓글 2 좋아요 0 조회수 548

온라인 환경에서 Arrow, 제거와 발사 시 동기화 문제

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

안녕하세요 Rookis님. 강의를 모두 완강하고 포트폴리오를 개선하고 있는 중입니다. 강의 중에 화살을 온라인에 추가할 것이라면 Creature와 GameObject 내용을 수정해야 한다고 하셔서 코드 이사는 완료한 상태입니다. 지금 Arrow는 MyPlayer에서 입력을 받고 State와 WeaponType을 체크하면 Player에서 Scene에 Arrow를 스폰해주는 방식으로 알고 있습니다. 이걸 서버에서는 몬스터나 플레이어를 만드는 GameObject::Create 함수를 파줘서 Arrow를 make_shared로 만들어서 발사 처리를 하게 만들었는데요 서버에서 몬스터가 제거되면 클라이언트에서도 정상적으로 몬스터가 제거되는걸 확인은 했습니다. 그러나 문제가 몇 가지 있습니다. Arrow 스마트 포인터가 해제되지 않는 현상 Arrow 동기화가 종종 씹히는 현상 입니다. 먼저 1번입니다. make_shared로 생성된 Arrow가 해제되지 않음 void Player::UpdateSkill() { if (room == nullptr) return; if (info.weapontype() == Protocol::WEAPON_TYPE_SWORD) { // 내 앞에 있는 좌표 CreatureRef creature = room->GetCreatureAt(GetFrontCellPos()); if (creature) { if (creature->GetType() == Protocol::OBJECT_TYPE_PLAYER) { SetState(IDLE); return; } // 몬스터가 플레이어에게 피격 creature->OnDamaged(shared_from_this()); } } else if (info.weapontype() == Protocol::WEAPON_TYPE_BOW) { ArrowRef arrow = CreateArrow(); arrow->SetDir(GetLookAtDir(GetFrontCellPos())); arrow->SetOwner(shared_from_this()); arrow->room = room; arrow->info.set_posx(info.posx()); arrow->info.set_posy(info.posy()); arrow->SetState(IDLE, true); room->AddObject(arrow); } SetState(IDLE); } 서버쪽의 UpdateSkill 함수인데 여기에서 arrow를 CreateArrow로 만들어서 room에 AddObject로 _arrows map을 만들어 관리를 하고 있습니다. (사실 룸에서 발사체를 관리하는 것이 옳은지도 의문이긴 합니다) void GameRoom::Update() { for (auto& item : _players) { item.second->Update(); } for (auto& item : _monsters) { item.second->Update(); } for (auto& item : _arrows) { item.second->Tick(); } } 그리고 Update 함수, AddObject, RemoveObject도 _arrows map을 처리하게 만들었습니다. 이렇게 처리하다 보니 화살을 제거할 때 몬스터가 피격받는 순간에 해당 화살을 RemoveObject를 실행하니 삭제 이후에 for문을 돌 때 오류가 발생하며 크래시가 발생했습니다. Arrow가 _arrows 맵에서 관리되어서 스마트 포인터가 해제가 안되는 것 같은데, 화살을 어떤 때에서 제거해야 될지 모르겠습니다. 지금은 임시적으로 vector에 참조로 받아와서 Update 하단에서 erase하는 방법을 사용하고 있습니다. 화살 동기화 문제 클라이언트에서는 Projectile 클래스에서 _owner에 대한 정보를 들고 있고 Arrow를 Scene에서 소환할 때 GetOwner 함수로 화살의 주인에 대한 포인터를 들고 있도록 했습니다. 기존에 발사할 때도 S_Move 패킷을 그대로 이용해서 Arrow의 _owner 포인터를 이용해서 위치를 초기화해주고 있습니다. 그런데 두 클라이언트를 접속시켜서 2를 눌러 WeaponType을 Bow로 바꿔서 공격 키로 테스트해보면 종종 반대쪽 플레이어의 화살이 안보이는 경우가 있습니다. 여기에 몇 개의 질문이 있는데요 1) 화살을 생성하고 클라이언트에서 패킷을 전송하는 것이 맞는지 2) 맞다면 어떤 정보를 패킷에 담아야 하는지 3) 서버에서는 어떤 처리를 해주어야 하는지 잘 모르겠습니다. 일단은 Make, Handle 함수를 파서 ObjectInfo를 넣어놓긴 했습니다. 하루 종일 코드를 조작해봐도 해결을 못하고 있습니다.. 도와주세요..

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
티르샷 댓글 2 좋아요 0 조회수 406

인기 태그

인프런 TOP Writers

주간 인기글