묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션15 스마트 포인터 20:00 질문이요!
멀티스레드 환경이라는 가정 하에, RefCountable 클래스만 존재할 때 발생하는 문제점은 이해를 했습니다.그래서 TSharedPtr 클래스가 제공하는 이점이 RefCountable 클래스에서 여러 단계로 처리해서 다른 스레드가 침투하는 빈틈을 막기 위해서 마치 포장지로 덮듯 단일로 이루어지게끔 설계한 것이라고 이해하면 되는걸까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Input Mapping Context 의 Modifiers 설정에 대해 궁금한 점이 있습니다.
input mapping context 에서, Modifiers 의 Order의 의미를 잘 이해하지 못하고 있습니다.예를 들어, W 키는 Swizzle Input Axis Values 를 추가하여 YXZ 설정하였고, (W키를 누르면 Value의 Y 값이 변동하는 것을 확인하였습니다.) A 키는 Swizzle Input Axis Values 및 Order를 설정하지 않았고, 근데 어떤 이유로 Value의 X 값을 변동시키는 것인지 궁금하며(Negate 가 Value를 음수의 값으로 변동시키는것 까지만 알고 있습니다.) S 키는 갑자기 또 Swizzle Input Axis Values 를 추가하여 YXZ 로 설정하였고, D 키는 다시 Swizzle Input Axis Values 를 설정하지 않았는데, 어떻게 Value의 X값을 1로 변동시키는 것인지 궁금합니다. 만약 A 키나 D 키의 설정처럼 Swizzle Input Axis Values 설정을 추가하지 않는다면, 자동으로 XZY 같은 오더로 설정되는것인지..; 아무리 머리를 굴려봐도 이해가 잘 가지 않습니다.
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
BrainComponent가 뭔지 모르겠습니다.
UBehaviorTreeComponent* BTComponent = Cast<UBehaviorTreeComponent>(BrainComponent); if (BTComponent) { BTComponent->StopTree(); }안녕하세요. 11강 강의에서 BTComponent를 생성할 때 인자값으로 BrainComponent를 넣으셨는데 이해를 못했습니다.. 제가 구글에서 찾아보니 BrainComponent는 AIController가 생성되면서 같이 생성되는 것이고, AI에 관한 명령들은 BrainComponent를 통해 가능하다고 설명이 되어있었습니다.행동 트리도 AI에 관한 제어를 하는 것이기 때문에 BrainComponent를 인자로 넣어주는 것인가요?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
멀티플레이 게임 구현시 어떤 부분을 고려해야 할까요?
어빌리티 시스템은 이제 어느 정도 사용가능한데멀티플레이 게임 구현시 OSS이용 Steam 타겟입니다. 따로 고려해야 되는 부분이나 팁이 있을까요?
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Ctrl + F5 키를 눌러 빌드하면 오류가 생깁니다.
안녕하세요. Ctrl + F5 키를 이용하여 빌드를 하면 언리얼 엔진 에디터가 열리지 않고 cmd 창에 아래와 같이 적혀있습니다.하지만 Ctrl + Shift + B를 하면 빌드는 잘됩니다. 왜 아래와 같이 오류가 나는 건지 모르겠습니다.. Global options:-Help : Display this help.-Verbose : Increase output verbosity-VeryVerbose : Increase output verbosity more-Log : Specify a log file location instead of the default Engine/Programs/UnrealBuildTool/Log.txt-TraceWrites : Trace writes requested to the specified file-Timestamps : Include timestamps in the log-FromMsBuild : Format messages for msbuild-SuppressSDKWarnings : Missing SDKs error verbosity level will be reduced from warning to log-Progress : Write progress messages in a format that can be parsed by other programs-NoMutex : Allow more than one instance of the program to run at once-WaitMutex : Wait for another instance to finish and then start, rather than aborting immediately-RemoteIni : Remote tool ini directory-Mode= : Select tool mode. One of the following (default tool mode is "Build"):AggregateClangTimingInfo, AggregateParsedTimingInfo, Analyze, ApplePostBuildSync, Build,ClRepro, Clean, Deploy, Execute, FixIncludePaths, GenerateClangDatabase, GenerateProjectFiles,IOSPostBuildSync, IWYU, InlineGeneratedCpps, JsonExport, PVSGather, ParseMsvcTimingInfo,PrintBuildGraphInfo, ProfileUnitySizes, Query, QueryTargets, Server, SetupPlatforms,Test, UnrealHeaderTool, ValidatePlatforms, WriteDocumentation, WriteMetadata-Clean : Clean build products. Equivalent to -Mode=Clean-ProjectFiles : Generate project files based on IDE preference. Equivalent to -Mode=GenerateProjectFiles-ProjectFileFormat= : Generate project files in specified format. May be used multiple times.-Makefile : Generate Linux Makefile-CMakefile : Generate project files for CMake-QMakefile : Generate project files for QMake-KDevelopfile : Generate project files for KDevelop-CodeliteFiles : Generate project files for Codelite-XCodeProjectFiles : Generate project files for XCode-EddieProjectFiles : Generate project files for Eddie-VSCode : Generate project files for Visual Studio Code-VSMac : Generate project files for Visual Studio Mac-CLion : Generate project files for CLion-Rider : Generate project files for RiderD:\UE_5.3\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe (process 28468) exited with code 1 (0x1).Press any key to close this window . . .
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
게임어빌리티를 멀티플레이로 동기화하는 방법을 알고 싶습니다.
PlayerState 클래스의 생성자에 ASC->SetIsReplicated(true);를 추가하고캐릭터의 SetCharacterControl 함수에 if (!IsLocallyControlled()){return;}를 추가한 뒤캐릭터의 PossessedBy 함수에 SetupGASInputComponent();를 넣었는 데 이걸로는 공격 어빌리티가 완전히 동기화되지는 않더라고요서버역할도 하는 클라이언트(A)에서 공격키를 누르면 다른 클라이언트(B)에서 동기화되는데 클라이언트(B)에서 공격키를 눌렀을 때는 아무일도 일어나지 않습니다.OnRep_PlayerState 함수 안에서도 어빌리티를 등록해줘야 하는 걸까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
55강 수업자료 빌드를 하면 이상합니다.
저만 이런건지 뭐가 문제인지 잘 모르겠어요. 줄간 공백이 없어야지 정상일텐데...
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
12강 NPC를 죽인 후 문제가 생깁니다.
NPC를 죽인 후에 이동키가 먹지않고 점프만 가능하며 점프할 경우 바닥을 뚫고 계속해서 아래로 떨어집니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
안녕하세요. 프로젝트 생성시 GAS 관련 모듈이 나오지 않습니다.
새로운 환경에서 GAS를 실습하고자 프로젝트를 하나 새로 파서 GAS시스템을 적용하고자 하였습니다.처럼 Gameplay관련 모듈을 넣고 빌드를 했는데와 같이 관련 모듈이 나타나지 않는 상황입니다.세팅시 추가적으로 해야할 일이 있을까요??강의 항상 잘 듣고있습니다. 감사합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
virtual 소멸자 관련 질문
안녕하세요. 부모클래스의 함수를 override 하기 위한 목적으로 부모클래스 함수에 virtual 키워드를 붙여주고 자식클래스가 이 함수구현을 강제하기 위해 virtual 키워드를 사용하는 것으로 이해 했습니다. 하나 이해가 되지 않는 부분은, 소멸자에 virtual 키워드를 붙여주었을때, 부모클래스의 소멸자와 자식클래스의 소멸자가 이름이 다름에도 자식클래스 소멸자를 호출해준다는 것인데, 해당 내용을 Perplexity에 질문해보니 C++ 내부적으로 소멸자를 동일한 이름으로 취급하기 때문이라는 답변을 얻었습니다. 이 내용이 맞는건지 답변 부탁드립니다.감사합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
InifityBlade Weapons 에셋 관련 질문
위 이미지 처럼 압축을 풀고,해당 부분을 복사해서제가 강의를 따라하는 프로젝트의 붙여넣었습니다.그리고 에디터를 통해 확인해보니 아래 이미지 처럼 인식하지 않습니다.더블 클릭할 시 아래 메시지가 나옵니다.아래의 다른 문의 글의 이미지에 나와있는 Github의 InfinityBladeWarriors와 InfinityBladeWeapons 폴더들은 현재 존재하지 않습니다.어떻게 해결할 수 있을까요? 제가 잘못 복사한건가요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
라이브코딩 문제가 나오네요..ㅠ
비쥬얼 스튜디오에서 디버그로 게임 에디터를 킨 다음 실행하면 반영이 잘 되어서 실행이 되는데요한 번 오류가 나오더니 에디터에서 이전버전?으로 적용이 되는 것같아요 만들어 놨던 npc도 표시가 안되서 라이브코딩을 해보려는데 계속 저렇게 오류가 나옵니다.. Generate VS Project File도 다시 해보고 했는데도 이러네요.. 해결방법이 뭔지 좀 알 수 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
안녕하세요. 강의와는 별개의 내용이지만 질문드립니다.
선생님 강의를 전부 듣고 저만의 게임을 제작하고 있습니다.강의 내용과 크게 상관은 없지만 여쭐 곳이 없어 질문합니다.문제상황은 이렇습니다.저는 PMAttack 이라는 트레이스채널을 하나 만들고 기본 설정은 Overlap으로 둔 상태입니다.그리고 다음과 같은 코드를 통해 구 안에 들어오는 모든 액터를 찾아보려했습니다.void APMArrowRain::HitOfRain() { // 1초마다 데미지 FVector Center = GetActorLocation(); const float SphereRadius = 500.f; FCollisionShape CollisionSphere = FCollisionShape::MakeSphere(SphereRadius); FCollisionQueryParams Params(FName(TEXT("Attack")), false, this); TArray<FOverlapResult> Overlaps; DrawDebugSphere(GetWorld(), Center, SphereRadius, 12, FColor::Green, false, 1.0f, 0, 2.0f); bool bIsHit = GetWorld()->OverlapMultiByChannel( Overlaps, // 결과를 저장할 배열 Center, // 중심점 FQuat::Identity, // 회전 ECollisionChannel::ECC_GameTraceChannel2, // 채널(PMAttack) CollisionSphere, // 콜리전 형태 Params // 추가 파라미터 ); if (bIsHit) { for (auto& Overlap : Overlaps) { AActor* OverlapActor = Overlap.GetActor(); if (OverlapActor == Owner) { UE_LOG(LogTemp, Log, TEXT("asd")); continue; } if (OverlapActor) { // 데미지를 받는 인터페이스를 생성해서 인터페이스가 구현됐는지 확인 UE_LOG(LogTemp, Log, TEXT("%s"), *OverlapActor->GetName()); } } } } 하지만 코드를 실행해보면 주변에 있는 액터(큐브나 플레인, 그리고 Owner 등)이 아무도 로그에 찍히지 않았습니다.(모든 액터는 Overlap event를 전부 true로 설정했습니다.)문제는 여기부터 입니다. 범위에 들어오는 액터중 하나라도 ColiisionPreset에서 PMAttack에 대한 채널 반응을 Block으로 바꿀 경우 그 때부터 정상적으로 범위에 있는 액터들이 출력됩니다.오랜 시간 조사를 했지만 끝내 해답을 얻지 못해 질문드립니다. 왜 범위 내 모든 액터의 콜리전 설정이 특정 채널에 대해 Overlap 인 경우 일땐 위 코드가 정상적으로 동작하지 않고,왜 범위 내 액터 중 하나만 이라도 Block으로 설정되어 있다면 그제서야 모든 액터에 대해 정상적으로 Overlap 판정이 날까요?긴 글 읽어주셔서 감사합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
The Project file or web cannot be found라고 뜹니다.
안녕하세요. 강의를 듣고 코드를 작성한 후에 빌드를 해보니,Hp 바가 max값으로 채워지지도 않고 줄어들지도 않아서 Binaries와 Intermediate 폴더를 삭제하고 다시 실행해 보았습니다.근데 사진과 같이 갑자기 not found 라고 뜨면서 헤더파일과 cpp 파일이 뜨지 않습니다. 어떻게 해결을 해야 할까요..
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
수업 외 질문은 어디서 하면 되나요?
혼자 따로 개발을 해보고 싶어서 해보고 있는데 클래스 생성부터 막히네요ㅠㅠ.. 강의 보고 클래스를 생성하면 잘 생성이 되는데 개별적으로 생성을 하면 클래스 경로를 아예 찾지를 못합니다.. 수업 외의 질문은 여기서 질문을 할 수는 없는 건가요?
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
TakeDamage함수에 관해 궁금한게 있습니다!
안녕하세요. 강의를 듣던 중에 TakeDamage 함수에 관해 궁금한게 있어 질문을 남깁니다. FDamageEvent DamageEvent; OutHitResult.GetActor()->TakeDamage(AttackDamage, DamageEvent, GetController(), this);위 코드에서 NPC가 공격을 받은 경우, OutHitResult.GetActor() 이 값은 NPC의 액터를 가져오고, GetController() 과 this 는 플레이어의 정보를 가져오는 건가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
[클라 입장] 강의에서 빌드를 하면 오류가 발생합니다.
Server를 빌드하면 Server 프로젝트 내에 있는 Enum.pb.h 파일에서 이런 오류들이 발생합니다. 어떻게 해결해야 할까요?
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
MSB3073 오류로 프로젝트 빌드가 불가능합니다.
C4067 전처리기 지시문 다음에 예기치 않은 토큰이 있습니다. 줄 바꿈 문자가 필요합니다.C4668 '__has_feature'은(는) 전처리기 매크로로 정의되어 있지 않으므로 '#if/#elif'에 해당하는 '0'으로 바뀝니다.MSB3073 ""C:\Program Files\Epic Games\UE_5.4\Engine\Build\BatchFiles\Build.bat" ArenaBattleEditor Win64 Development -Project="C:\Users\Runner\Downloads\UnrealGAS1-10\UnrealGAS1-10\ArenaBattleGAS.uproject" -WaitMutex -FromMsBuild -architecture=x64" 명령이 종료되었습니다(코드: 6). 안녕하세요, 강의 자료 깃허브를 통해 브랜치 10 의 프로젝트를 다운 받아 열어보려고 하는 데 빌드가 되지 않아 프로젝트 실행조차 되지 않고 있습니다. 아래에 해결을 위해 시도한 내용들도 함께 작성하니 도움 부탁 드립니다. 새해 복 많이 받으세요.^^ <시도한 내용들>Binaries 삭제 후 Generate, Visual Studio에서 리빌드/빌드 -> MSB3073 오류 발생 uproject에서 VisualStudioTools 플러그인 확인 후 1번 과정 재진행 -> 해당 플러그인이 없음을 확인했으나 여전히 MSB3073 오류 발생언리얼 마켓플레이스(Fab)에서 Visual Studio Integration Tool 다운 후 1번 과정 재진행 -> uproject에 VisualStudioTools 플러그인이 존재했으나 여전히 MSB3073 오류 발생다른 브랜치로 다운 받은 프로젝트 실행 -> 브랜치 1, 2 등 다른 브랜치의 프로젝트로 다운 받아 실행해도 MSB3073 오류 발생
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
안녕하세요. 수업을 따라가면서 저만의 게임을 만드는 중인데 문제가 생겼습니다.
마지막에 빌드를 하고 exe 파일을 실행해보는데 검은 화면만 뜨고 아무것도 나오지 않습니다. 프로젝트 세팅에서 default game mode랑 level다 지정해 뒀는데도 검은 화면만 나오고 cmd에서 -log로 실행해봐도 콘솔창에 아무런 로그도 올라오지 않습니다. 어디가 문제인걸까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
4강에서 크래쉬가 발생합니다.
안녕하세요. 크래쉬가 발생을 하여 질문드립니다.LoginId:c94d24654bb053080c17c2ad5040f05aEpicAccountId:fccedefcd3d646a6a9f2c9f009701903Assertion failed: Pair != nullptr [File:D:\UE_5.3\Engine\Source\Runtime\Core\Public\Containers\Map.h] [Line: 671]UnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditorUnrealEditorUnrealEditorUnrealEditorUnrealEditorUnrealEditorkernel32ntdll위와 같이 크래쉬가 발생을 합니다.static ConstructorHelpers::FObjectFinder<USkeletalMesh> CharacterMeshRef(TEXT("/Script/Engine.SkeletalMesh'/Game/InfinityBladeWarriors/Character/CompleteCharacters/SK_CharM_Cardboard.SK_CharM_Cardboard'"));if (CharacterMeshRef.Object){GetMesh()->SetSkeletalMesh(CharacterMeshRef.Object);} /*static ConstructorHelpers::FClassFinder<UAnimInstance> AnimInstanceClassRef(TEXT("/Game/ArenaBattle/Animation/ABP_ABCharacter.ABP_ABCharacter_C"));if (AnimInstanceClassRef.Class){GetMesh()->SetAnimInstanceClass(AnimInstanceClassRef.Class);}*/ 경로를 변경한 후 플레이를 하니 갑자기 크래쉬가 나타났습니다.애니메이션 클래스가 문제인가 싶어서 주석을 처리한 후 다시 빌드를 하여도 크래쉬가 동일하게 발생합니다.문제가 나는 곳이 현재 프로젝트의 코드가 아닌 다른 곳인거 같은데 어떻게 해결해야할지 모르겠습니다..