이번장에서는 간단한 조작법을 알려주도록 하겠습니다.

 

 


 

1. 콘텐츠 드로워 / 콘텐츠 브라우저

기본 세팅에서 좌하단에 있습니다.

PIE

 

누르면 이와 같이 왠 폴더들이 있는 창이 뜨는데, 우선은 레이아웃에 고정을 해줍시다. (꼭 할필요는 없음)

 

해당 창은, 유니티 엔진을 만져본 분들이라면 익숙할 콘텐츠 탐색기인데, 기본 창 1개 외에 추가 창들을 띄워서 파일을 이리저리 옮길수도 있다는 장점이 있습니다.

 

그치만 전 하나만 씀 ㅎㅎ;

 

만일, 파일 위치 이동 등의 이유로 추가 창이 필요하면

 

상단 메뉴 창 -> 콘텐츠 브라우저에서 추가 탭을 누르면 됩니다.

 

여기서 추가를 누르면
이렇게 하나 더 뜹니다

 

 

2. 실행 / 일시정지

언리얼 엔진에서 게임을 바로 실행하는걸 PIE (Play In Editor) 라고 부릅니다.

앞으로 PIE라는 단어를 많이쓰게 될것이니 알아두세요.

PIE 실행 버튼은 위에 있습니다. (단축키 Alt+P)

 

실행 버튼을 누르면 나머지 버튼들이 활성화 되는데, 필요에따라 사용하시면 됩니다.

 

버튼의 기능은 좌측부터 순서대로

 

1. PIE 재생/일시정지

2. 한 스텝단위 실행 (디버깅 시 사용)

3. PIE 중지

4. "게임에서 빠져나오기" : 게임 실행 도중 에디터 조작 가능

 

입니다.

 

---

+ 웃기게도 재생, PIE중지, 게임에서 빠져나가기는 단축키가 있는데

일시정지는 단축키가 기본 세팅이 안되어있습니다.

 

 

단축키 세팅은

편집 -> 에디터 개인설정에서 가능합니다.

 

 

여기로 와서
일반 -> 키보드 단축키
사실 위에 검색 메뉴에서 검색하면 됩니다.

 

 

여기 있는 PIE 설정을 조작해주면 됩니다.

 

버튼을 따로 두거나, 시작 단축키인 Alt+P를 토글에 배치하여 토글가능하도록 쓰는것도 좋습니다.

 

 

--------

3. 아웃라이너

우측에 배치되어있습니다.

 

레벨에 배치되어있는 액터 및 에셋들을 보여주는 창입니다.

 

더블클릭하면 해당 액터의 정보를 볼 수 있습니다.

 

4. 디테일

해당 액터가 어떤 에셋인지, 어떤 상태인지 볼 수 있습니다.

 

실행중에 조작한다고 해서 수정사항이 반영되는건 아니니 실행한 상태로 조작해놓고 왜 반영안되지? 하는 실수는 하지 않도록 합시다.

 

5. 출력 로그

개발시 굉장히 많이 쳐다보게 될 페이지입니다.

 

각종 로그들을 띄워줍니다.

 

필터를 누르면 메시지 / 경고 / 오류 등으로 필터링을 하여 데이터를 체크할 수 있습니다.

 

위치는 좌하단 콘텐츠 브라우저 바로 옆에 있습니다.

 

 

 

 

 

간단히 엔진의 기본 조작을 알려드렸습니다.

 

다음에는 개인적인 기준으로 언리얼 엔진의 꽃인 블루프린트 기본 설명, 조작 및 예시 에셋 제작 (밟으면 사라지는 블록)을 하도록 하겠습니다.

 

 

 


이번 페이지에서 설명한 기능 단축키 정리

 

1. Alt+P : PIE 수행

2. F8 : 빙의 상태 토글 (실행중인 게임에서 빠져나와서 조작 가능)

3. Shift+F1 : PIE에 붙어있는 마우스 커서를 빼서 외부 조작이 가능해집니다.

 

개인적으로 언리얼을 혼자 배울때 제일 막막했던것이

무엇을, 어떻게 해야하냐는것이었다.

 

혼자 배울땐 필요하다 싶어서 해봤지만 실제로 회사가서 전혀 쓰지 않는것도 있고, 그 반대의 경우도 많아서

이참에 간단한 가이드를 작성해볼까 한다.

 

말은 간단한 가이드지만 기본적인 언리얼 이론은 싹 훑고 지나갈 예정.

 

* 타겟 언리얼 엔진 버전 : 5.1~ (최신버전)

--------------------

1) 언리얼 엔진 설치

 

우선은 설치부터 하자.

 

검색창에 에픽런쳐/언리얼엔진 정도로 검색해서 에픽게임즈 런쳐를 받아준다.

 

 

물론, 에픽게임즈 가입해야하니까 꼭 가입해두고..

 

 

 

설치가 종료되고, 실행하면 런쳐 페이지가 나오는데

저어기 좌측에 언리얼 엔진 눌러준다.

 

 

 

 

다음에 이런 페이지가 나오는데 저기서 엔진 설치를 눌러준다.

 

 

 

 

다운로드는 시간이 걸리니, 그동안 학습에 필요한 자료 몇개를 받아주자.

 

마켓플레이스 탭으로 간다.

 

 

 

여기서 무료 -> 에픽게임즈 콘텐츠 로 이동

 

여담이지만, 이달의 무료 콘텐츠에 좋은것들 잘 뜨니까 볼때마다 눌러서 받아주면 좋다.

 

 

 

 

에픽게임즈 콘텐츠에서 아래 두가지 항목을 찾아준다.

 

이 글을 쓰는 시점에는 2페이지에 바로 보이나, 안보이면 검색해서 찾아보도록 합시다.

 

 

카트에 추가 -> 구입하여 라이브러리로 받아두도록 합시다.

 

 

 

 

다시 라이브러리 탭으로 오면,

 

스크린샷과 같이 콘텐츠 보관함에 2개 (혹은 그 이상)이 추가되어있을 것이다.

 

엔진 용량이 큰 편이니 전부 받아질때까지 기다립시다.

 

만일 비주얼 스튜디오 등 IDE가 설치되어있지 않다면 지금 설치해두면 좋습니다.

 

 

 

한참을 기다리면... 

이렇게 엔진 설치가 완료됩니다.

 

 

 

이제 엔진을 켜봅시다.

 

사실 엔진을 켜면 제일 처음 맞딱드리면서 당황하게 되는게

1. 좌측에 뭐 저래 많아요?

2. 우측에 디폴트는 뭐 눌러야해요?

 

이거 두가지인데...

 

사실 답은 간단하다.

1. 좌측에 있는거 - 무시하세요

2. 우측에 디폴트 - 그냥 기능개발 프로토타이핑 할거 아니면 C++로 프로젝트 시작하면 됨

 

 

우선, 아무거나 프로젝트를 만들어보고 이리저리 굴려봅시다.

 

적당히 템플릿 하나를 고르고, 프로젝트 이름을 짓고 실행하면

이런 친구가 뜹니다.

 

최초 실행시에는 셰이더 컴파일 시간이 좀 걸려서...

 

엔진 로딩 시간이 좀 걸리니 진득하게 기다려주면 됩니다.

 

 

 

전부 준비가 되면..

웰컴 투 언리얼엔진

 

이제 이런 화면을 마주하게 됩니다.

 

축하합니다! 당신은 이제 언리얼 엔진 개발자로써 첫 걸음을 내딛었어요!

 

 

다음장에서는 기본적인 조작, 세팅, 그리고 블루프린트에 대한 간략한 설명을 해드리겠습니다.

 

 

 

---------기타 흔히 나오는 질문들-----------

1. 언리얼 개발하려면 컴 사양 좋아야한다는데 얼마나 좋아야 해요?

https://docs.unrealengine.com/5.1/ko/hardware-and-software-specifications-for-unreal-engine/

 

하드웨어 및 소프트웨어 사양

언리얼 엔진으로 개발할 때 필요한 최소 및 권장 하드웨어 및 소프트웨어 사양

docs.unrealengine.com

공식 문서 보시면 답이 나와 있습니다.

 

 

 

2. 언리얼할때 C++ 꼭 알아야하나요?

당연한걸 왜 묻죠?

 

 

 

3. 언리얼 엔진을 코드레벨부터 볼 수 있는 방법이 있다던데...

그건 다음에 설명드리겠습니다. (에픽게임즈 Git 저장소에서 코드 받아서 빌드하는 방법이 있음)

지금 회사에 취업해서 언리얼 만진지도 대충 6개월이 지났다

 

이제는 기본적인 개발은 수행할 수 있다고 생각을 하는데...

 

혼자 공부할때를 좀 되짚어보면, 언리얼은 사실 혼자 접하기에는 굉장히 난해하다고 생각한다.

 

일단 무엇보다, 뭘 써야하고 뭘 배워야 하는지 조차 접근하기게 에매해서, 어떻게 시작할지도 모른다는점이 제일 큰 장벽이라 생각된다.

 

그래서...

 

한번 내가 배웠던 과정을 되짚어가면서 (복습도 할겸) 가이드라인을 한번 써볼까 한다.

 

 

 

 

기본 독자 대상 : C++ 지식이 있고, 유니티 등 게임 개발에 기본적인 지식이 있는 사람

 

목표 : 언리얼 다운로드 부터 언리얼로 미니 프로젝트 하나 만들기까지

 

 

한 30부 생각중인데 아마 일주일에 한두편씩 쓴다치면 반년 걸리지 않을까?

머리 아파서 적당히 정리하고 간다.

 

기본적으로  DX11의 출력은 죄다 쉐이더를 통해서 진행이 된다. (아마도?)

 

그러다보니, 위치 변환도 전부 쉐이더에 데이터를 넘겨줘야 하는데..

 

기본 튜토리얼 데이터를 사용하다보니 프레임워크가 내 손에 안 익어서 그런가 월드매트릭스 변환을 할 방법이 전혀 안떠오르는게 아닌가.

 

그래서 아 어쩌지 하다 본것이...

 

input.pos????

아니 인풋에 pos가 있는게 아닌가

 

해서 input을 열심히 찾았는데.................................... 모르겠어!

 

싶어서 고민하다 그냥 물체 버퍼데이터에 포지션 값을 넣자! 해서 집어넣었다.

 

월드매트릭스를 써보고자 했던 흔적...

 

저래놓고 외부에서 포지션 값을 수정해주니까...

 

 

되긴 된다

되긴 된다.

 

원하던대로 가긴 간다...

 

ㅇ>-<

 

 

그치만 아직 인풋을 받는걸 몾찾은 관계로 (원래 쓰던 GetAsyncKeyState를 DX11에서 쓰려면 좀 방법이 필요해보여서 그건 003에다 쓸 예정) 그건 내일하기로...

 

되게 쓰고보니 별거 아닌데 이거 하느라 4시간이나 걸렸네 허

 

작년 봄 쯤.

 

아 다이렉트X 해봐야지! 하고 과감하게 잡았던 DX11 프로젝트를 완벽하게 이해를 못하고 말아먹고, 결국 학원을 갔더랬다.

 

과거의 처참한 흔적들

 

학원에서 배운건 DX9를 기반으로 한 작업이었지만, 이번에 DX11을 쓸 일이 생길것 같아서 미리 학습차 샘플 프로젝트를 좀 해볼까 한다.

 

이제는 단순히 학습용이 아니라 생존용으로 배워야 하게 생겼으니...

 

 

 

 

목표는 DX11 기반으로 다이나믹 매쉬 띄워서 움직이기 까지.

 

기간은 2주.

 

 

 

 

일단 구조가 바뀌니까 알아보는것부터 문제다

일단은 진입점부터 찾아나서기로 했다.

 

어디가 시작인지 파악이 안되어서 디스어셈블러까지 돌려본 결과 app.cpp에 있는 저 main 함수가 진입점인걸 확인.

 

진입점에서 D3DAppSoruce 타입의 새 항목을 만들고 -> 그것을 코어 어플리케이션의 Run에 삽입해서 돌리는? 구조인거 같은데,

실행순서는 위 이미지에서 탑->다운 으로 이루어지는 모양인듯 하다.

(main -> D3DAppSource 생성자 -> CreateView -> App 생성자 -> App.Init)

 

 

굳이 디스어셈블리를 썼어야했을까...

 

 

 

 

 

이런걸 만들고 있습니다.

'게임 개발 > Unity' 카테고리의 다른 글

기록 #2  (0) 2020.05.09
Rect Transform 잠깐 메모  (0) 2020.02.09
분명 자주 쓰는데 자주 까먹는 기능들  (0) 2019.12.27

사실 원래 좀 적을게 많은데 다 까먹어버렸구 까먹기전에 하나라도 더 적고자...

 

뭐. 학원과정중인데, D3DX - 2DX 때는 스프라이트가 표현을 전부 도와줬지만,

D3DX에서는 원래 버텍스를 세팅하고, 표면을 만들어서 그 위에다 덧 씌우는 식으로 작업이... 되어야 하는데...

 

이게 일단 설명없이 시도해보려고 하니까 되게 막막하더라.

 

일단... 하다가 막혔던것 위주로.

 

1. 선생님! 텍스쳐 입혔는데 텍스쳐가 박살나요!

작업중에 이런 광경을 목격했다.

처음에는 이게 무슨 상황인지 전혀 이해가 안되어서 (분명 Y축값은 전부 0이었다!) 좀 유심히 찾아본결과...

 

단순 Color만 들어가있는 CVERTEX 구조체와, UV가 들어가있는 UVERTEX 구조체의 사이즈가 다른데 VERTEX구조체를 변경했음에도 불구하고 기본 버텍스 사이즈를 변경하지 않아서 생긴 문제였다.

 

뭔 소리냐... 하면...

 

 

이 파트 얘긴데

 

우측 26번줄에서 버텍스 타입을 VTX_TEXTURE (=UVERTEX 구조체) 로 변경했음에도 불구하고 버텍스 사이즈 변수가 여전히 VTX_COLOR (=CVERTEX)로 지정되어있는것이다...

해서, SetStreamSource 할때는 CVERTEX 사이즈로 읽는데, 정작 버퍼에 들어간건 UVERTEX니까 저렇게 엉망진창으로 나올수밖에...

 

 

 

2. 선생님! 텍스쳐를 여러개 넣었는데 하나만 출력돼요!

 

이거는 솔직히 이해가 좀 잘 안됐(고, 아직도 잘 안되)는데...

 

먼저, 2D 시절에 텍스쳐를 그릴때 어떻게 했는지 다시 보고 오자.

 

맨 마지막줄이다.

 

 

CGraphic_Device::Get_Instance()->Get_Sprite()->Draw(pTexInfo->pTexture, nullptr, &D3DXVECTOR3(fCenterX, fCenterY, 0.f), nullptr, D3DCOLOR_ARGB(255, 255, 255, 255));

 

이 말은 즉슨, "장치를 통해 생성된 스프라이트에 크기를 지정해주고, 지정된 텍스쳐를 출력시킨다" 라는 의미.

 

즉, 장치를 이용해서 텍스쳐를 지정해주고 있다는 얘기와 일치... 한다고 볼 수 있을까? (솔직히 확신이 들진 않는다)

 

 

아무튼... 이래서 텍스쳐를 두개 불러왔음에도 불구하고 세팅을 하나만 해주면

 

그냥 처참하게 모든 물체에 같은 텍스쳐가 입혀지게 된다.

 

그래서 어쩌란거냐? 랜더할때 텍스쳐를 매번 지정해줘야 한다는것이다...

 

"아니 선생님, 그러면 매번 엑세스한다고 자원낭비되고 뭐 그런거 없나요?"

 

라는 질문이 들어온다면

 

"애초부터 그러고 있었다" 라는 대답밖에는 나올게 없다...

 

이제와서 깨달은 얘기지만, 랜더 하고 있을때 매번 스프라이트를 지정해주고 있지 않았던가...

 

그럼 뭐, 3D에서도 별 다른건 없다고 생각한다. 역시나 여기서도 텍스쳐를 매번 지정해줘야지

 

 

 

결과물. 이미지가 뒤집힌건 단순히 uv를 잘못준것이다.

 

가끔씩은 이해가 안되더라도 일단 납득부터 하는게 통할때도 있는것 같다...

제목이 짱 긴데.

 

정확히는

 

"Visual Studio 2017 이후 버전에서 MFCDirectX 9동시에 사용하려고 할 시" 발생하는 문제와, 해결법에 대한 내용입니다.

 

아니 요즘 세상에 아무리 그래도 DX9을 쓴다구요? 할 수도 있는데...

 

네 씁니다. 써요... 네...

 

 

* 해당 문제는 Visual Studio 2017 이후부터 발생합니다. 

 

 

일단, MFC를 사용하지 않고 그냥 DX9를 프로젝트에 임포트 했을때는 정상 작동하는것을 상정하고 이야기를 합니다.

 

MFC 프로젝트를 생성하고, pch.h나 framework.h에 d3d9.h, d3dx9.h를 인클루드 해주고 프로젝트를 빌드 돌리면,

 

정신이 아득해진다...

아마 이런 현상을 목격할 가능성이 큽니다.

 

이 문제는, (정확하진 않으나) 추측상, Windows 10 SDK에 기본 탑재되어있는 DX 10~12 버전과, 임의로 설치한 DX 9 버전간의 충돌로 인해 발생하는 문제로 보입니다.

 

뜬금없이 뭔 충돌이냐? 하겠습니다만... Visual Studio 최신버전, 특히 2019 (v142 MFC)를 사용하는 경우에는 기본 세팅이 Win 10 SDK 기반인지라... 아니 이게 충돌이 왜 나지? 싶은데 충돌이 나더라구요.

 

해결법은 의외로 간단했습니다.

 

* 해당 방식으로 해결이 되지 않는 경우, VS2015를 설치하신 뒤에 해당 버전에 동봉되는 SDK 8.1을 사용하시면 됩니다.

 

1. developer.microsoft.com/ko-kr/windows/downloads/sdk-archive/

 

Windows SDK 아카이브 - Windows 앱 개발

이 비보안 업데이트에는 품질 향상이 포함됩니다. MRMSupport.dll 로드 실패로 인해 개발자가 Windows 7에서 UWP 앱을 빌드하지 못하는 문제를 해결했습니다. MidlRT 및 MDMerge가 Windows 7에서 실행되지 않는

developer.microsoft.com

해당 링크에서 Win SDK 8.1 버전을 다운로드 합니다.

 

2. 설치합니다.

 

3. 원하는 프로젝트에서, 프로젝트 > 속성 > 일반 > Windows SDK 버전을 10.0 에서 8.1로 변경합니다.

 

 

 

이 부분을..
이렇게 바꾸면 됩니다.

 

 

 

SDK 버전을 낮추게 되면, 구문오류는 더이상 발생하지 않고 빌드가 성공하게 됩니다.

 

 

이랬던것이
"아무튼 실행됨" 상태로 바뀝니다.

하지만, 온갖 매크로 재정의 경고문구가 발생하는것으로 봐서는... 이 조차 문제가 발생할 여지가 있어 보입니다.

 

이는 문제 발생시 그때 대응하기로 했습니다... 일단은 경고문구에 나와있다시피 Win 8.1 SDK와 DX9 SDK 간의 충돌이니까요.

+ Recent posts