반응형

간만에 개발하려다보니 까먹은게 많아서 확실히 해두기 위해 엔진 소스중 중요한 내용을 먼저 메모하고 나중에 정리해서 엔진설명을 할까한다. 한너울 엔진 1.0 다시 뜯어고치는중....

 

#define WIN32_LEAN_AND_MEAN

 

이라고 적혀있는것을 오픈소스들을 보면 심심치 않게 볼 수 있다. 예전에 써놓고 까먹고있기도 했고 그당시 잘 모르고 넘어가서 조사를 해봤다. 아래 사이트 맨 마지막을 보면 나와있다.

 

https://docs.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers

  • Define WIN32_LEAN_AND_MEAN to exclude APIs such as Cryptography, DDE, RPC, Shell, and Windows Sockets.

최근 UWP니 .net WPF니 하면서 잘 안배우려는 사람들이 늘고있지만 WIN32 API는 여전히 많이 사용되고 있다. WIN32만 잘해도 아직도 많이 인정받는걸 보면 위에 나온거처럼 WIN32_LEAN_AND_MEAN 옵션을 이용해서 빌드타임 최적화를 하는것도 좋은 방법이라고 생각한다.

WIN32로 프로그래밍을 할 때 #include <windows.h> 전에 '#define WIN32_LEAN_AND_MEAN' 한줄을 작성을 하면 된다. 그러면 <windows.h>의 경우 win32 api들과 관련된 헤더들을 모아주는 역할을 한다고 알고있는데 여기서 암호화나 DDE, RPC, Shell, Windows Socket 과 관련된 기능을 로드하지 않는다. 컴파일러들이 요즘 똑똑해져서 Optimize 버전에서 실행시간이나 프로그램 용량차이가 크진 않겠지만 관련 헤더들을 include하지 않도록 줄여준다면 빌드타임을 효과적으로 줄일 수 있다. 게임을 만들면서 위의 기능들을 굳이 win32 API들을 사용할 이유가 없기 때문에 Hanneoul Engine에서는 생략하고 넘어간다.

 

크게 줄지는 않지만 티끌모아 태산이라고 조금씩이라도 초반에 미리 줄일 수 있는것들은 줄이고 시작하는게 좋다고 생각된다. C++이 인터프리터 언어가 아닌 이상 프로젝트가 무거워질수록 빌드 타이밍이 길어질꺼고 결국 고통스러운건 개발자일테니 미리미리 줄여두자.

 

반응형
반응형

아마 지금의 자료를 찾지 못했다면 바로 포기했을 것이다.

https://de.slideshare.net/GerkeMaxPreussner/gdc-europe-2014


상당히 유용한 슬라이드였다.

이때 GDC를 갈 기회가 사실 있었는데 왜 안갔을까... GTC가서 물론 재밌게 놀긴(?) 했지만 조금 후회가 된다...


항상 소스코드를 어떻게 어디부터 봐야할지 몰랐는데 디렉터리부터 차근차근 알아가니 좀 진입장벽이 낮아지는 느낌(?)

여하튼 좀 정리를 해본다.



 

아직 보지 않은 부분이기때문에 해당 강의 내용기반으로 정리하는 중이긴 하지만 나중에 하나하나 뜯어보면서 차근차근

틀린 내용에 대해서는 갱신을 하겠다

 

우선 크게 Engine과 Programs 로 나뉘는데

Engine은 모든 code, contents, configurate 등등을 다루고 있는 게임 엔진의 가장 핵심 부분이라 할 수 있다.

Programs는 다양한 프로젝트들이 나열되어 있는것으로 봐서 StandAlone Application들이나 개발 Tool들을 의미한다고 한다.

 

우선 엔진 폴더부터 봐보자.

 

하나씩 폴더 설명부터 정리해 보자면

 

- Build : 엔진부 코드들을 빌딩하는데 필요한 파일들

개발 플랫폼 별로 폴더들이 정리되어있다

 

- Config : Configuation 파일

역시 개발 플랫폼 별로 폴더가 잘 정리가 되어있다. ini파일들을 살펴보면 에디터부터 게임, 하드웨어등 기본 설정값들이 어떤식으로 사용되는지 유추해볼 수 있다.

 

- Content: Shared Engine Context라고 되어있다.

실체가 뭘까 궁금해서 실제로 폴더를 열어보니 에디터에서 유저가 게임 개발에 사용하는 class들이 .template형식으로 저장되어 있다.

 

- Extras: VisualStudioDebugging 이란 폴더가 있고 Visualizer라고 되어있는것으로 유추하여보면 Visual Studio의 Custom Visualizer를 Editor에서 쓰기위해 설정값들이 저장되어있는것으로 추정된다.

 

- Plugins: 게임 Project에 필요한 플러그인으로 Component라고 불러야하나... Editor나 Runtime에서 필요한 기능을 관리하는 폴더라고 보면 될듯하다.

잘 알겠지만 언리얼은 Plug-in형태로 기능을 추가할 수 있다.

 

- Programs: 폴더를 열어보면 빌드툴과 헤더툴이라고 나온다. 언리얼4 빌딩의 자동화를 위한 도구인데 자세한건 다음에 빌드툴 관련해서 작성할때 참고하도록 하자. 생각보다 내용이 정리하기 힘들다...

궁금한 사람들은 https://docs.unrealengine.com/en-us/Programming/BuildTools 참조를 하자.

 

- Shaders: 언리얼 쉐이더 파일들로 확인되고 있고 쉐이더를 만들경우 이 폴더에 두고 작업해야한다.

나중에 리뷰하겠지만 궁금하면 https://www.unrealengine.com/ko/blog/how-to-add-global-shaders-to-ue4 요길 참조하자

 

- Source: 여기가 핵심이다. 메인 소스코드가 전부 있다. 하위 폴더를 잠시 살펴보면 사용가능한 API들을 구현해 놓은 파일들을 가져다 놓았다.

Editor: Unreal 에디터에서 사용할 수 있는 API이다.

Developer: 개발 전용 API로 shader 컴파일러같은것들이 있는걸로 보아 Runtime에서는 사용되지 않을 API들을 의미하는 것 같다

Runtime: 어디서든 사용 가능한 런타임 관련 API들이 있다.

ThirdParty: 언리얼에서 사용하는 Thirdparty lib들에 대한 경로라던가 플랫폼별 세팅들에 대한 C#스크립트와 XML파일이 들어있다.

 

일단은 간단히 여기까지 1-2에서 보도록 하고 1-3에서 본격적으로 하나하나 어떤식으로 파볼지 결정하자.

 

Programs폴더는 다음 기회에 Engine이 어느정도 정리 되면 시작하겠다.

 

폴더에 무엇이 있는지 전혀 알기 힘들었는데 이제 하나하나 보다보니 대충의 언리얼이 얼마나 큰 덩어리였는지 알 수 있게 되었다...

 

과연 Unreal5 이전에 이 분석 작업이 끝날 수 있을까 궁금하다.... 분발해야지...

 

 

 

 




반응형
반응형

언젠가 게임엔진을 만들겠다고 헛소리를 한적이 있었다.

그래서인지 계속해서 언리얼 분석에 대한 욕심만 키우고 있었지 실천에 옮기기가 너무 힘들었다.

 

자... 수십번 다운받았던 소스코드를 위해 이곳으로 가자

 

http://api.unrealengine.com/latest/KOR/GettingStarted/DownloadingUnrealEngine/index.html

 

이곳에서 받자! 예전에 비하면 굉장히 편해졌다!

 

항상 남자라면 마스터 브랜치! 라고 하곤 하지만 사실 공부하는 입장에선 안정적인 릴리즈 브랜치하나 정해서 꾸준하게 정리하는게 좋다.

4.20.3 기준으로 분석을 시작한다. 혹시라도 다루는 릴리즈가 버전이 올라가게 되면 변경사항은 최대한 반영하도록 하겠다!

 

자 git에서 clone 해서 소스코드를 내려받았으면 작업하는 환경이 Windows 이기 때문에 Window개발환경도 적겠다.

빌드용으론 Visual Studio 2017을 사용하고 있고 분석엔 가벼운 Visual Studio Code를 사용하고 있다.

 

위에 소개했던 링크에서 하라는대로 다 하면된다.

 

배치파일(setup.bat) 내부는 몇줄 안되니 분석을 해보자면


echo Engine/Binaries/DotNET/GitDependencies.exe %* >>.git\hooks\post-checkout

 

이 부분으로 봐서  GitDependencies.exe 라는것으로 엔진 툴을 위해 OS 의 dependency를 체크하게 된다.

그리고 해당 git에서 가져오는것을 알수 있다.

꽤 시간이 걸리니 커피 한잔하면서 느긋하게 엔진 파일을 다운받자..

 

 

 

다 다운받으면 


/wait Engine\Extras\Redist\en-us\UE4PrereqSetup_x64.exe /quiet


이부분이 실행되는데 quiet 옵션으로 UI가 안뜨고 조용히 설치가 된다. 아마 엔진구동에 필요한 .net이라던가 dxsdk 등이 깔리는것으로 파악된다.

마지막으로 언리얼 버전을 등록한 후에 setup이 끝난다.


setup이 끝난 후 GenerateProjectFiles.bat파일을 까보면

Engine\Build\BatchFiles 폴더의 GenerateProjectFiles.bat을 실행하라고 나와있는게 보인다.

 

해당 경로의 GenerateProjectFiles.bat 을 까보면 친절하게 주석이 잘 나와있다.

설명을 참조하도록 하자.

이런 배치파일 볼때마다 느끼는거지만 예외처리를 참 주저리주저리(?) 잘 해놓았다.

귀찮지만 꼭 배우고 넘어가야할 점!!!

 

VS2015를 설치하지 않았지만 필자는 다행해 sin파일이 잘 떨어졌으므로 넘어가도록 하겠다.

 

이런거 하나하나 다 적기엔 시간이 없다!!!

 

UE4.sln 을 Visual Studio로 열어보자!

 

설치편은 여기서 마치겠다

 

 

 

반응형

+ Recent posts