프로그래밍/Unreal 부트캠프

TIL 2024.12.16 기록

Rozentea 2024. 12. 16. 20:52

0. 개요


유데미 언리얼 강의와 유튜브 유니티 강의를 보며 독학을 했지만, 프로젝트를 혼자서 진행하려니 막막한 느낌이 들었다.. 그래서 스파르타 코딩 Unreal 부트캠프를 신청해 튜터분들께 질문을 통해 보다 언리얼에 대해 자새히 배우고, 궁금한 것을 물어보며 한층 더 성장하려 하고, 프로젝트를 함께 진행할 팀원분들을 만나 혼자서는 막막했던 프로젝트 진행을 해 나아가고자 한다.

 

오늘은 약 1달간 함께 공부를 진행할 조원분들을 만나 아이스 브레이킹 시간을 가져 여러 이야기를 하고, 몇가지 과제를 수행했다.

조원들 모두 MBTI도 다르고, 서로 겪어온 경험도 크게 달랐다. 학생분, 다양한 분야를 다루시는 분, 실무 경력이 있으신 분 등등..

하지만, 부트 캠프를 통해 얻고자하는 것, 이후의 목표, 게임을 좋아한다는 공통점등도 찾을 수 있었다.

또, 이야기를 나누며 내가 프로그래밍에 왜 도전을 했고, 어떤 부분이 즐거웠고, 어떤 도전들을 해왔는지 다시 생각할 수 있어서 유익한 시간이었다.

 

과제의 경우 진행하면서 다시 한번 언리얼을 살펴볼 수 있어서 좋았다.

 

1. 언리얼 엔진 실행 및 환경 둘러보기


디버깅을 위한 편집기 기호 : 에디터에서의 c++ 프로젝트 디버깅 심볼이 포함되기 때문에 편리하다.

이전에는 해당 파일을 설치하지 않았는데, 해당 파일들을 설치하면, 엔진 소스 코드를 디버깅할 수 있고, 엔진 소스 코드 자체도 수정할 수 있다.

 

소스 코드 위치 : 설치 경로마다 다르겠지만, "엔진 설치 폴더\Source\Runtime\Engine\Private" 경로에 cpp 파일이 있음을 확인할 수 있었다.

조원 분들과 에디터에서 c++에서 편집버튼을 눌러 소스 코드를 확인하다가 헤더로만 연결되어서 찾아보게 되었다.

 

이 외에는 기존에 사용했었던, 아웃라이너, 뷰포트, 프로젝트, 에디터 셋팅 탭, 콘텐츠 브라우저등을 한번씩 살펴보며 마무리 했다.

2. 공식 문서 및 커뮤니티 자료 찾아보기


언리얼 5.5버전이 업데이트 되면서, 5.5 문서가 새로 생긴 것을 확인했다. 기존 문서는 4.x 문서 이후로는 한글 번역이 제대로 이루어지지 않았어서 문서를 보기 힘든 부분도 있었는데, 번역이 잘되어 있는것 같아서 문서를 보며 원하는 정보를 더 쉽고 빠르게 찾을 수 있을 것 같았다.

 

새로운 기능들도 살펴보았는데, 이전에도 잘 모르던 기술들의 퀄리티가 증가했다는 것을 알았다.

특히 라이팅이 이전부터서 굉장한 퀄리티를 보였었는데, 더 기술이 좋아져 렌더링 속도나 더 많은 광원을 처리하는 등 퀄리티가 더욱 높아져서 놀랐다.. 꽤 전부터 느꼈지만 기술의 발전 속도가 너무나 빠른것 같다..

다른 기능으로는 데이 시퀀스는 24시간 하루 주기를 자동으로 생성하는 실험적인 플러그인이라는데, 기존 프로젝트를 진행할 때, 낮과 밤을 구현하기 위해 이것저것 시도해 봤었던 기억이 있어서 시간 개념이 있는 게임을 만들 때 사용하면 좋지 않을까하는 생각이 들었다.

 

또, 언리얼이 게임 업계뿐 아니라 영상, 건축, 자동차 회사 등 다양한 분야에서 사용되기 때문인지 카메라 기능도 많이 추가되고, 개선된것 같아보였다.

나중에 마지막 프로젝트를 진행할 때, 꼭 카메라는 신경써서 만들고 싶어서 관심있게 보게되었다. 

 

이전에는 문서에서 기술쪽은 관심있게 안봤었는데, 카오스 비주얼 디버거는 굉장히 좋은것 같다..! PhysX를 이용해 프로젝트를 진행했을 때에도 비주얼 디버거가 있으면, 콜리전들이 어떻게 상호작용하고 있는지 직관적이게 볼 수 있어서 편했는데, 언리얼에도 이런 기능이 추가되어서 콜리전 관련 버그가 발생했을 때 유용하게 사용할 수 있을 것 같다.

 

 

이후에는 UDC와 unreal api가 바뀐점은 없는지 슬쩍 확인해보았다.

unreal api는 프로젝트를 진행하면서 많이 열어보겠지만, 오늘 소스 코드를 조금 분석하며 공부해보니, unreal api 도 같이 보는게 좋을 것 같았다.

 

fvector_netquantize 10 :

소스 코드를 공부할 때, 기존 fvector 외에 fvector_netquantize 10라는 타입을 처음 봤는데, 정확하진 않지만 UDC에서 살펴보니 데이터 압축을 어떻게 하느냐 인것 같다.

=> 복제 될 때, 반올림이 발생하지만, 로컬에서는 백터가 변하지 않는다고 한다..

=> 서버에서 클라이언트로 혹은 클라이언트에서 서버로 데이터를 전송할 때, 기존 fvector보다 압축되어 전송할 수 있어서, 트래픽을 절약할 수 있어서 사용하는 것 같다.

=> 결국 정밀도를 요구하지 않는 fvector를 전달 할때, 데이터의 양을 줄여 성능적인 이점을 취하고자 할 때 사용하는 타입이라 생각된다.

 

이런식으로 소스 코드를 보면서 궁금한 점들을 하나하나 풀어가려면 UDC와 unreal api를 자주 보게 될것 같다.

3. 공식 유튜브 채널 혹은 커뮤니티 살펴보기


영상은 공식 유튜브 영상을 보지 않고, 언리얼 5.0버전이 막 나왔을 때 사용해 봤었던 water plugin에 관한 영상을 시청했다.

그때는 언리얼을 블루프린트만 조금 할 줄 알았을 때라 water plugin이 너무 복잡해 보이고 사용하기 쉽지 않았었는데, 영상을 보니, 랜드스케이프에 스플라인을 추가해 쉽게 강을 만들고, 영역을 선택해 바다를 만드는 모습을 보니 다시 한번 더 사용해보고 싶은 생각이 들었다.

 

다음 프로젝트에서 물이 필요할지 모르겠지만, 물이 필요하다면, 혹은 바다를 배경으로 하는 게임을 만든다면 꼭 사용해보고 싶다.

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/water-system-in-unreal-engine

https://www.youtube.com/shorts/zycp9CAmq4g

https://www.youtube.com/watch?v=1cfPiofNy-U

 

4. 마무리


캠프 첫 날이라 설렘이 가득했는데, 좋은 조원분들을 만나 다양한 대화를 나누고, 게임 클라이언트 프로그래머가 왜 되고 싶었는지 다시 한번 더 떠올릴 수 있어서 얻은것이 많은 하루였다.

뿐만 아니라 앞으로의 목표를 확실히 정할 수 있었고, 프로젝트에 적용 해보고 싶은 것들이 많이 생겨나 뜻 깊은 하루였다.

 

소스 코드를 분석하는 시간이 조금 오래 걸렸는데, 앞으로 udc와 unreal api를 적극 활용해서 조금만 더 빠르게, 그리고 확실하게 소스코드를 조금씩 파악해 보고 싶다.