언리얼 엔진에 대한 개념을 어느 정도 학습하였다고 생각해서, 본격적으로 직접 개발에 뛰어들어서 공부해 보고자 한다.
해당 시리즈는 카툰 스타일의 그래픽을 사용하는 3인칭 액션 게임을 개발해 보는 과정으로, 개발 과정에서 생긴 일들을 개발 일지로 남기는 시리즈가 되겠다.
처음 만드는 것이니만큼 볼륨을 최대한 작게 잡고자 했으며, 3개월 이내로 완성하는 것을 목표로 하고 있다. 공부하는 게 목표이므로, 모르는 개념이 나올 때마다 정리하면서 공부해보려 한다.
요약
개발 기간: 2월 2일~2월 3일
이번 일지에서는 다음을 수행했다.
- 프로젝트 기획 결정
- 프로젝트 설계 규칙 결정: 프로젝트 레이어 및 블루프린트 균형, 사용 아키텍처 결정
- 프로젝트 생성 과정에서 발생한 엔진 버전 문제 해결하기: 5.5 버전 대신 Unreal Engine 5.4.4 버전 사용하기
프로젝트 기획
강의를 들은 후 최초로 언리얼 엔진을 이용하여 개인 프로젝트를 제작해 보기로 했다. 초기 기획인 만큼 간단하게 구성하기로 했으며, TPS 스타일의 액션 전투 게임으로 보스 헌팅 게임을 목표로 하였다.
기본적으로 젤다 스타일을 참조하기로 했는데, 소울라이크 게임처럼 Shift를 눌러 회피하고 Tab을 눌러 적을 락온하도록 한다.
- 대상 플랫폼: PC, Windows 환경
- 장르: 3인칭 시점 보스 헌팅 액션 게임
- 그래픽 스타일: 카툰 렌더링 목표, 야간, 비 내리는 배경
프로젝트 설계 규칙
기본적으로 C++과 블루프린트를 섞어서 사용할 예정이므로, C++ 코드를 생성하기로 했다.
해당 프로젝트에서는 유연한 설계 및 의존성 분리를 위해 프로젝트 설계 규칙을 만들었다.
프로젝트 레이어
실제 유니티로 개발하는 과정에서 객체가 서로를 상호 참조하는 경우가 많이 발생했었다. 이번 프로젝트에서는 확장성을 고려하여 깔끔하게 설계해 보기 위해, 이득우 교수님의 언리얼 프로젝트 프로그래밍 강의를 참고하여 구조를 설계해 보기로 했다.
해당 프로젝트는 다음 세 가지 레이어로 프로그램을 분리하여 구성한다.
- Game Layer: 최상위 레이어, 게임 로직을 구체적으로 표현한다.
- 캐릭터, 게임 모드
- Middleware Layer: 데이터 레이어를 기반으로 구축, 다양한 종류의 캐릭터에 서비스를 제공하는 제공자 역할을 한다.
- AI, Item, PlayerController, CharacterStat, Animation, Prop, UI 등
- Data Layer: 최하위 레이어, 게임을 구성하는 기본 데이터
- 스탯 정보, 캐릭터 레벨 테이블 등
이때 이들을 효율적으로 관리하기 위해 다음 규칙을 지정한다.
- 상위 레이어에 있는 객체는 하위 레이어를 자유롭게 참조한다.
- 하위 레이어에 있는 오브젝트가 상위 레이어의 오브젝트를 참조하려면 인터페이스를 통해 참조해야 한다.
블루프린트와 C++의 균형
언리얼 엔진에서는 블루프린트와 C++ 두 개를 모두 활용하여 개발을 진행한다. 같은 내용도 둘 모두로 구현할 수 있다 보니, 둘 중 무엇을 할지 계속해서 선택해야 한다.
실제로 블루프린트는 유니티와 다른 언리얼 엔진만의 특징이기 때문에, 언리얼 공식 문서에서도 가이드라인과 사용 예시를 소개하고 있다.
여러 문서를 찾아보다 보니 둘 사이의 균형을 잡는 부분에서 가장 고민이 되었는데, 결론적으로 때에 따라 편한 쪽으로 하기로 하였다.
프로그래머라 하더라도, 무조건 C++로만 프로그래밍하는 것이 아니라고 한다. 실제로 애니메이션이나 사운드, 머티리얼 부분은 블루프린트를 이용하여 개발하는 편이 생산성이 높다.
보통 블루프린트가 C++ 보다 성능이 떨어진다고 알려져 있는데, 현재에는 성능은 블루프린트 쪽도 많이 올라와서 Tick 함수를 사용하는 것이 아니라면 블루프린트를 사용하는 쪽이 문제라고 할 수는 없다고 한다.
따라서 기반에 해당하는 프레임워크 부분은 C++ 클래스로 구현하고, 게임플레이, 애니메이션이나 기획, 디자인적인 부분과 관련 있다면 블루프린트 위주로 구현하려고 하였다. 다만, 성능에 문제가 생긴다면 C++ 클래스로 구현을 옮기는 쪽으로 작업을 진행하도록 한다.
사용 아키텍처
- Game Ability System 기반의 어빌리티 구현하기
이번에는 공부 목적으로 만드는 것이다.
기본적으로 소형 프로젝트이긴 하지만, GAS 라이브러리 활용 방법을 배웠으므로 이를 기반으로 구현을 해보고자 한다.
프로젝트 생성 과정
처음에는 다음을 참고하여 베이스를 구축하였다. 새로 접하는 장르는 유튜브를 보면서 프로토타입을 만들어보는 것을 선호하는 편인데, TPS 스타일의 RPG 게임을 개발하는 데에 많은 도움이 되었다.
- TPS 스타일의 RPG 튜토리얼: Unreal Engine 5 RPG Tutorial Series(https://www.youtube.com/watch?v=WcDj4uZygyE&t=1997s)
다만 프로젝트 자체가 블루프린트 위주로 진행되는 감이 있어, C++도 함께 사용해 보기 위해 새로 프로젝트를 파보기로 했다.
그런데 언리얼 엔진 UE 5.5를 대상으로 프로젝트를 생성하니 오류가 발생했다.
이전엔 버전을 5.1을 쓰다가 대상 버전이 5.5로 바뀌니 문제가 생긴 것 같은데, 한번 확인해 보기로 했다.
Running E:/Epic Games/UE_5.5/Engine/Build/BatchFiles/Build.bat Development Win64 -Project="E:/Epic Games/Projects/StylizedActionRPG/StylizedActionRPG.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE
Using bundled DotNet SDK version: 8.0.300
Running UnrealBuildTool: dotnet "..\\..\\Engine\\Binaries\\DotNET\\UnrealBuildTool\\UnrealBuildTool.dll" Development Win64 -Project="E:/Epic Games/Projects/StylizedActionRPG/StylizedActionRPG.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDE
Log file: C:\\Users\\Nicitis\\AppData\\Local\\UnrealBuildTool\\Log.txt
Visual Studio 2022 is installed, but is out of date or missing a valid C++ toolchain (minimum version 14.38.33130, preferred version 14.38.33130). Please update Visual Studio 2022 to 17.8 or later and verify that the "MSVC v143 - VS 2022 C++ x64/x86 build tools (v14.38-17.8)" component is selected in the Visual Studio 2022 installation options.
Total execution time: 1.02 seconds
UnrealBuildTool has banned the MSVC 14.39.33519-14.39.99999 toolchains due to compiler issues. Please install a different toolchain such as 14.38.33130 by opening the generated solution and installing recommended components or from the Visual Studio installer.
GPT에 따르면 다음 해결 방법이 있다.
Chat GPT의 답변
1. Visual Studio 2022 업데이트 확인
Unreal Engine 5.5에서는 **Visual Studio 2022 (17.8 이상)**이 필요합니다.
- Visual Studio 2022를 실행합니다.
- 도움말(Help) > Microsoft Visual Studio 정보(About Microsoft Visual Studio)에서 현재 버전을 확인합니다.
- 만약 버전이 17.8 이하라면, Visual Studio Installer를 열어 업데이트하세요.
2. 올바른 C++ 툴체인 설치
현재 설치된 C++ Toolchain 버전이 14.39인데, Unreal Engine은 이 버전을 차단했습니다. 14.38.33130을 설치해야 합니다.
- Visual Studio Installer 실행
- Visual Studio 2022 > 수정(Modify) 클릭
- 개별 구성 요소(Individual Components) 탭으로 이동
- C++ CMake Tools for Windows와 MSVC v143 - VS 2022 C++ x64/x86 build tools (v14.38-17.8) 선택
- 변경 사항 적용을 눌러 설치
3. 기존 빌드 파일 정리 후 다시 실행
툴체인을 업데이트한 후, 프로젝트에서 이전 빌드 캐시를 정리해야 합니다.
- Unreal Engine 프로젝트 폴더로 이동
- 다음 폴더 삭제:
- Binaries
- Intermediate
- Saved
- Visual Studio에서 프로젝트(.uproject) 열기
- Rebuild (전체 다시 빌드) 실행
- 다시 Unreal Engine에서 프로젝트 실행
기존에는 툴 체인이 최신 버전으로 되어 있었다. 그런데 답변에서는 오히려 다운그레이드해서 14.38 버전을 설치하라고 되어 있었다. 다른 시도 여러 가지를 해보다가 해결이 되지 않아 툴 체인을 다운그레이드해 보기로 하였다.
다운그레이드를 하기 전에는 다음 오류도 함께 등장했는데,
platform is not a valid platform to build
WinSDK 11을 설치하지 않아서 그런 것으로 보였다. 따라서 WinSDK 11과 함께 MSVC 14.38 버전도 함께 설치하였다. 다행히 MSVC 다운그레이드 후 정상적으로 실행되어서, 정상적으로 프로젝트를 진행하기로 했다.
버전 변경: 5.5에서 5.1, 5.1에서 5.4.4로
테스트를 위해 Infinity Warrior 캐릭터를 활용하려고 했는데, 해당 캐릭터는 5.4까지만 지원이 된다고 하였다. 그 때문에 5.5 버전을 포기하고 5.1 버전으로 변경을 시도했다.
그런데 컴파일이 안 되는 문제가 발생했다.
Build started at 오후 3:24...
1>------ Skipped Build: Project: UE5, Configuration: BuiltWithUnrealBuildTool Win64 ------
1>Project not selected to build for this solution configuration
2>------ Build started: Project: StylizedActionRPG, Configuration: DebugGame_Editor x64 ------
2>Running UnrealBuildTool: dotnet "..\\..\\Engine\\Binaries\\DotNET\\UnrealBuildTool\\UnrealBuildTool.dll" StylizedActionRPGEditor Win64 DebugGame -Project="E:\\Epic Games\\Projects\\StylizedActionRPG\\StylizedActionRPG.uproject" -WaitMutex -FromMsBuild
2>Log file: C:\\Users\\Nicitis\\AppData\\Local\\UnrealBuildTool\\Log.txt
2>Invalidating makefile for StylizedActionRPGEditor (StylizedActionRPGEditor.Target.cs modified)
2>Building StylizedActionRPGEditor...
2>Using Visual Studio 2022 14.42.34436 toolchain (C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.42.34433) and Windows 10.0.18362.0 SDK (C:\\Program Files (x86)\\Windows Kits\\10).
2>Determining max actions to execute in parallel (16 physical cores, 24 logical cores)
2> Executing up to 16 processes, one per physical core
2> Requested 1.5 GB free memory per action, 3.62 GB available: limiting max parallel actions to 2
2>Building 8 actions with 2 processes...
2>[1/8] Compile SharedPCH.Engine.NonOptimized.ShadowErrors.cpp
2>Detected compiler newer than Visual Studio 2022, please update min version checking in WindowsPlatformCompilerSetup.h
2>E:\\Epic Games\\UE_5.1\\Engine\\Source\\Runtime\\Core\\Public\\Experimental\\ConcurrentLinearAllocator.h(29): error C4668: '__has_feature' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
2>E:\\Epic Games\\UE_5.1\\Engine\\Source\\Runtime\\Core\\Public\\Experimental\\ConcurrentLinearAllocator.h(29): error C4067: unexpected tokens following preprocessor directive - expected a newline
2>[2/8] Compile StylizedActionRPG.init.gen.cpp cancelled
2>[3/8] Compile StylizedActionRPG.cpp cancelled
2>[4/8] Compile SACharacterBase.cpp cancelled
2>[5/8] Compile SACharacterBase.gen.cpp cancelled
2>[6/8] Link UnrealEditor-StylizedActionRPG-Win64-DebugGame.dll cancelled
2>[7/8] Link UnrealEditor-StylizedActionRPG-Win64-DebugGame.lib cancelled
2>[8/8] WriteMetadata StylizedActionRPGEditor-Win64-DebugGame.target cancelled
2>C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.MakeFile.Targets(44,5): error MSB3073: The command ""E:\\Epic Games\\UE_5.1\\Engine\\Build\\BatchFiles\\Build.bat" StylizedActionRPGEditor Win64 DebugGame -Project="E:\\Epic Games\\Projects\\StylizedActionRPG\\StylizedActionRPG.uproject" -WaitMutex -FromMsBuild" exited with code 6.
2>Done building project "StylizedActionRPG.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 1 skipped ==========
========== Build completed at 오후 3:24 and took 39.213 seconds ==========
5.1로 다운그레이드했더니 제대로 맵이 변환되지 않아 데이터가 모두 소실되었다.
확인해 보니 umap 형태의 맵은 하위 버전에 대한 호환성이 없기 때문에 다운그레이드는 불가능하다.
그렇다고 최신 버전 5.5를 사용하기엔 불안정성도 있고, 데모용으로 쓰기 좋은 Infinite Blade 에셋이 5.5를 지원하지 않는 문제가 있다.
따라서 5.4.4 버전을 설치하여 프로젝트를 새로 생성하기로 했다.
일단 여기까지 하니 컴파일 문제는 해결되었다. 다음 일지부터 본격적으로 프로젝트 작업에 들어갈 예정이다.
'Unreal Engine 5 > devlog: 카툰액션게임' 카테고리의 다른 글
언리얼 카툰 액션 게임 Devlog 3: 모델 가져오기 작업 - Material 적용 (1) | 2025.04.27 |
---|---|
언리얼 카툰 액션 게임 Devlog 2: 캐릭터 및 게임모드 설정 및 캐릭터 모델 허가 요청(블루아카이브) (1) | 2025.04.16 |
댓글