전체 글 280

팀장 리더십 수업 - 다시 읽기

2021년 5월 31일에 처음 읽고 또 다시 '팀장 리더십 수업'을 읽게 되었다. [독서 리뷰] - 팀장 리더십 수업 아는 만큼 보인다는 말이 있듯이 2년전의 나와 지금의 나는 또 다른 사람인 듯 하다. 이 책에 이런 내용이 있었나 싶을 정도로 새롭게 보이는 내용들이 많았다. 이 책은 현재 게임 개발 PD를 맡고 있기에 어떤 것들을 더 잘해야 할지 어떤 것에 소홀했는지 다시 한 번 생각 해 볼 수 있게해 주었다. '점수판'을 보여주라. 팀에 '스크럼 보드'를 아날로그 식으로 표시하기 이해 큰 보드를 구매 했었는데... 아직까지 활용을 못하고 있었다. 이 보드를 활용하여 모두가 목표를 향한 현재의 위치를 잘 알 수 있도록 할 수 있도록 활용해야 겠다. 팀장은 '원숭이'를 키우는 사람을 관리해야지 직접 모두..

독서 리뷰 2023.04.16

[UE] 셰이더 컴파일 속도 올리기(Shader complie)

WorkerProcessPriority는 Unreal Engine에서 셰이더 컴파일러의 우선순위를 설정하는 옵션입니다. 셰이더 컴파일러는 게임의 렌더링에 사용되는 매우 중요한 역할을 수행하는데, 대규모 프로젝트에서는 수많은 셰이더가 존재하기 때문에 컴파일 속도가 매우 느려질 수 있습니다. WorkerProcessPriority설정은 이러한 문제를 해결하기 위해 존재합니다. BaseEngine.ini 파일에서 해당 설정을 변경하면, 각 셰이더 컴파일러의 우선순위가 조정됩니다. 우선순위를 높이면 컴파일 속도가 빨라지지만, 다른 작업들의 우선순위가 낮아질 수 있습니다. WorkerProcessPriority옵션의 값으로는 -2 (Low), -1 (Below Normal), 0 (Normal), 1 (Above..

[UE] Blueprint에서 Shipping, Development 빌드 확인(UE_BUILD_SHIPPING)

다음과 같이 Build Configuration을 가져와서 스트링 비교하여 Shipping 빌드인지 Development 빌드인지 확인 할 수 있습니다. BlueprintFunctionLibrary로 GetGuildConfiguration 함수를 구현해줍니다. class MY_API UMyFunctionLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() public: UFUNCTION(BlueprintPure, Category = PlusLibrary) static void GetBuildConfiguration(FString& Configuration); }; void UMyFunctionLibrary::GetBuildConfiguration(..

[수학] 미분(Differential)

미분은 영어로 differential(차이) 이고, 한자로는 잘게 나누다는 뜻입니다. 미분 이해의 열쇠는 평균 변화율입니다. 그리고 또하나의 열쇠는 극한입니다. 극한을 이해하지 않고 미분·적분을 제대로 이해 할 수 없습니다. 극한을 이해 하는 이해하는 것은 \(\infty\)(무한대)를 이해하는 것입니다. 미분은 문자 그대로 '미세하게 나눈다'는 말입니다. 즉, 미분은 함수를 한없이 작게 나누는 분석입니다. 무한대는 문자 그대로 '끝없이 크다'는 말인데 이를 상상하기 가장 쉬운 것이 바로 '등차 수열'과 '등비 수열'입니다. 다음의 등차 수열 관련 정의가 낯설다면 다음 글을 참고하세요. : [게임 개발/게임 수학] - 등차 수열 [등차 수열의 일반항] \(\mathbf{a_n} = \mathbf{a_1}..

[수학] 순열(Permutation), 조합(Combination)

순열 순열(Permutation)은 객체를 순서에 따라 배열하는 방법의 수를 나타내는 것입니다. 즉, 순서를 고려하여 뽑는 경우의 수. A, B, C, D, E 5개의 문자중에서 순서를 고려하여 3개를 뽑는 경우의 수는 60(5x4x3)가지입니다. 처음에는 5개 중에서, 다음은 4개 중에서, 그 다음은 3개 중에서 뽑을 수 있기 때문입니다. 기호로 표시하면 다음과 같습니다. $${_5}P{_3}=5\times4\times3 = 60$$ 조합 조합(Combination)은 n개의 객체 중에서 r개의 객체를 선택하는 방법의 수를 나타내는 것입니다. 즉, 선서를 고려하지 뽑는 경우의 수. A, B, C, D, E 5개의 문자중에서 순서를 고려하지 않고 3개를 뽑는 경우의 수는 10가지 입니다. 순서를 고려 했..

[UE5] stat unit

Stat Unit stat unit 콘솔 명령어는 언리얼 엔진 뷰포트 내에서 유용한 성능 지표의 가시성을 전환합니다. 또한, stat unitgraph 콘솔 명령어를 사용하여 지표의 실시간 그래프와 함께 동일한 지표를 표시할 수도 있습니다. 각 항목들의 의미는 다음과 같습니다. Frame 게임의 한 프레임을 생성하는 데 소요된 총 시간입니다. Game 게임 쓰레드에서 사용된 시간입니다. 값이 프레임 시간과 유사하면, 게임 성능은 게임 쓰레드에 의해 병목이 발생한 것으로 보입니다. Draw 드로우: 렌더링 쓰레드에서 사용된 시간입니다. 값이 프레임 시간과 유사하면, 게임 성능은 렌더링 쓰레드에 의해 병목이 발생한 것으로 보입니다. GPU GPU: 씬 렌더링에 사용된 GPU에서 소요된 시간입니다. GPU 시..

Unreal Engine의 VSync

Unreal Engine의 VSync(수직동기화)는 화면에 프레임이 제대로 출력되도록 하는 기술입니다. 일반적으로 컴퓨터 모니터는 고정된 주사율을 갖고 있으며, 이 주사율은 초당 화면이 갱신되는 횟수를 의미합니다. VSync는 컴퓨터가 프레임을 모니터의 주사율과 동기화하여, 화면에 깨짐 현상이나 화면 티어링(tearing)이 발생하지 않도록 보장합니다. Unreal Engine에서 VSync는 게임의 설정에서 켜거나 끌 수 있습니다. (r.vsync) VSync를 켜면 게임 엔진은 프레임을 모니터의 주사율과 맞추려고 노력하며, 이는 FPS(Frame per second)를 모니터의 주사율과 일치시켜 60프레임 이하로 제한하게 됩니다. 이로 인해 화면이 부드럽게 출력되는 대신, 게임의 성능이 저하될 수 있..

[UE5] 루멘(Rumen)

루멘은 특별한 하드웨어 가속 없이도 실시간으로 사용 가능한 완전한 다이나믹 글로벌 일루미네이션 기능을 제공합니다. 이전에는 사실적인 간접광 표현에 큰 제약이 있었습니다. 정적인 GI를 위해 라이트 맵 베이킹을 하거나 인위적인 보조광을 배치해야 했습니다. 하지만 이제 루멘을 사용하면 현실과 같은 방식으로 빛을 다룰 수 있습니다. 루멘에서는 스카이 라이트를 사용하여 대기에서 산란되는 태양광으로 지상 전체를 골고루 밝혀주는 느낌을 낼 수 있습니다. 스카이 라이트는 그림자도 지원하기 때문에 동굴에 뚫린 틈으로 동굴을 비추는 GI 효과를 구현할 수 있습니다. 볼륨 메트릭 포그와 반투명 재질의 GI를 지원하며, Emissive 머터리얼에서 발생되는 라이팅의 GI도 지원합니다. 반사된 표면에도 동적인 GI가 적용됩니..

[수학] 등비 수열

\(\mathbf{a_1}\) \(\scriptstyle\text{*r}\to\) \(\mathbf{a_2}\) \(\scriptstyle\text{*r}\to\) \(\mathbf{a_3}\) \(\scriptstyle\text{*r}\to\) \(\mathbf{a_4}\) 일정한 수를 곱한 수열을 '등비 수열'이라 합니다. \(\mathbf{a_4} = \mathbf{a_1}r^3\) 등비 수열의 4번째 항 \(\mathbf{a_4}\)는 \(\mathbf{a_1}\)에 r을 3번 곱한 값입니다. r을 공비라 합니다. [등비 수열의 일반항] \(\mathbf{a_n} = \mathbf{a_1}r^{n-1}\) 등비 수열의 합을 알아 봅시다. [등비 수열의 합] \(\mathbf{S_n} = {{\ma..