전체 글

https://www.acmicpc.net/problem/1377 이 문제는 버블 정렬을 통해 배열을 정렬할 때, 몇 번 루프만에 정렬이 되었는지를 알아내는 함수이다.배열 크기가 최대 500,000이기 때문에 절대 제공해 주는 기본 버블 정렬로는 시간 내에 풀 수 없다. 버블 정렬의 동작 과정을 생각해보면, 왼쪽에서 오른쪽으로 이동하면서 swap을 수행한다.이는 특정 데이터가 1번의 루프에서 swap으로 왼쪽으로 이동할 수 있는 최대 거리가 1이라는 의미이다.즉, 데이터의 정렬 전 index와 정렬 후 index를 비교하여 왼쪽으로 가장 많이 이동한 값을 찾으면 그만큼 루프가 수행되었다는 의미이다. #include #include #include using namespace std;int main(){ ..
C++에서 CallInEditor로 에디터 함수를 만들고 에디터에서 호출하려 하는데, 에셋에 Scripted Asset Actions가 안보인다.// .hpublic: UFUNCTION(CallInEditor) void TestFunc(); // .cppvoid UQuickAssetAction::TestFunc(){ if (GEngine) { GEngine->AddOnScreenDebugMessage(-1, 8.f, FColor::Cyan, TEXT("Working")); }} 이 문제는 Unreal Engine 5.2 버전 이상부터 발생하는 문제이다.5.2 이상부터는 AssetActionUtilityBlueprint 디버깅용 애셋을 생성해야 한다.콘텐츠 브라우저에 우리가 만든 플러그인 ..
특정 헤더 파일을 추가하고 컴파일하면 오류가 난다.이는 Build.cs에서 이 헤더 파일이 존재하는 모듈을 모르기 때문이다. 모듈 추가문제가 되는 헤더를 솔루션 탐색기에 검색한다.그러면 이 헤더가 어느 모듈 내에 있는지 바로 확인 가능하다. PublicDependencyModuleNames에 모듈 추가 후, 컴파일해본다. 비공개 포함 경로 추가해당 모듈이 포함되어 있는데도 컴파일 오류가 발생한다면, 포함해야 하는 비공개 포함 경로가 있다는 의미이다.해당 모듈의 Build.cs 파일에 가서 PrivateIncludePaths가 있는지 확인한다. 비공개 포함 경로가 있다면, 이것도 같이 추가해줘야 한다.지금 추가하려는 모듈의 경우, 다음 폴더 경로를 타고 있다. Engine 폴더의 경우, 엔진이 설치된 위..
라이트 액터(Light Actor)를 배치하는 것과 머티리얼의 이미시브(Emissive) 속성 이 두 가지는 시각적인 결과물, 성능, 그리고 엔진이 빛을 계산하는 방식에서 근본적인 차이가 있다.언리얼 엔진 환경 제작 시, 이 오브젝트를 밝히기 위해 라이트를 설치해야 할까, 아니면 머티리얼을 빛나게 해야 할까?라는 고민은 흔히 발생한다. 라이트 액터 (Light Actor)라이트 액터는 엔진이 물리적으로 빛을 계산하도록 설계된 광원이다.피사체에 정확하고 선명한 그림자를 생성한다.표면의 재질(거칠기 등)에 따라 맺히는 하이라이트(반사광)를 정확하게 표현한다.빛의 감쇠(Attenuation), 반경, 색온도, 강도 등을 디테일하게 조절할 수 있다.이미시브 머티리얼 (Emissive Material)이미시브는 ..
[Unreal Engine 5.6.1]스켈레탈 메시의 최적화를 진행하고 엔진을 다시 빌드하니, 스켈레탈 메시와 관련해서 null포인터 참조 크래시가 발생했다.언리얼 엔진 5.6.1은 기본적으로 자체적인 Skeletal Mesh Reduction 기능을 사용한다. Skeletal Mesh Simplifier이라는 플러그인인데, 이를 통해 에디터에서 LOD의 폴리곤 수나 자동 LOD 생성 등의 편의 기능을 사용할 수 있다.이를 통해 조작된 스켈레탈 메시에 대해서 폴리곤 관련 설정을 시도하면 오류가 발생하는 것을 확인했다. 그래서 Skeletal Mesh Simplifier 플러그인을 통해 Auto LOD를 여러 개 생성한 후, Skeletal Mesh Simplifier를 비활성화했다.그러고 나서 스켈레탈 ..
빌드 파일을 뽑았을 때, GameplayCue Tag가 제대로 지정이 안돼서 Cue 실행이 안되는 경우가 있다. 만약, 에디터에서도 그냥 안나온다면, 혹시 GameplayCue를 C++로 구현했고, 생성자에서 직접 Cue Tag를 지정하고 있지는 않은지 확인하자.C++의 생성자에서 태그를 지정하고 Cue를 블루프린트로 만들어 사용한다면, 태그가 제대로 지정이 안될 가능성이 있다.블루프린트에서 Cue Tag를 재할당 해보자. 먼저 Cue Tag를 추가했으면, "Config" 폴더에 "DefaultGameplayTags.ini" 파일이 있을 것이다.여기에 제대로 "Cue Tag"가 추가되었는지 확인한다.// DefaultGameplayTags.ini+GameplayTagList=(Tag="GameplayC..
빌드를 수행했는데 아래 이미지와 같이, 뜨면서 빌드가 안 되는 경우가 있다.이건 메모리가 부족해서 생기는 문제다. 작업 관리자에 가보면 다음과 같이, Visual C++ Language... 프로세스가 여러 개 있는 것을 확인할 수 있다.이걸 그냥 모두 작업 끝내기로 끝내주면 해결된다.
https://school.programmers.co.kr/learn/courses/30/lessons/84512# 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에는 각 문자가 자릿수별로 채워질 때 매핑되는 수가 있기 때문에, 그걸 찾으려고 했다.(ex. 'I'가 1번째 자리인 경우 1563번째) 근데 못찾겠어서 그냥 문자 자릿수를 하나씩 올리는 완전 탐색으로 풀었다.#include #include using namespace std;// 다음 문자 반환 함수char Next(const char InChar){ switch (InChar) { case 'A': return 'E'; case 'E': ret..
주으기
게임 개발