본문 바로가기

모바일 게임 개발/[입문]브러쉬유

18. 브러쉬유: 랜덤 배경색 만들기

브러쉬유는 랜덤하게 주어진 배경색을 색 조합으로 맞추는 게임이에요. 이번 장에서는 게임의 시작이라고 할 수 있는 [배경색을 랜덤하게 만드는 로직]을 만들어 볼게요.

 


배경 오브젝트 가져오기

    GM_Game의 로직 구현

 

11장에서 만든 GM_Game(게임모드)을 쓸 시간이 됐네요. 제가 11장에서도 잠깐 언급했듯이 게임모드는 게임을 주관하는 역할을 해요. 그래서 배경색을 바꾸는 역할을 맡겨보려고 합니다.

1. 배경색을 바꾸려면 먼저 배경으로 쓰인 판떼기를 불러내야 해요. GM_Game을 열어서 Custom Event를 만들고 SetBackGroundReference로 이름을 지으세요.

 

2. Get All Actors Of Class 노드를 만들고 Actor Class에는 Static Mesh Actor를 선택하세요.

Get All Actors Of Class는 현재 레벨에 지정된 클래스로 만들어진 액터를 모두 가져오는 함수에요. 여기서 우리는 Static Mesh Actor 클래스를 지정했어요.

에디터 메인으로 나가서 우측 상단 월드아웃라이너(World Outliner)를 보면,

우리의 배경 판떼기의 Type(형)이 Static Mesh Actor임을 알 수 있어요. 그래서 Get All Actors ~ 함수를 호출하면 판떼기를 가져올 수 있어요.

3. Get All Acotrs ~ 노드의 Out Actors의 핀을 뽑.들.검 해서 get 노드를 만드세요.

격자무늬 핀은 배열이라고 말씀 드렸었죠. 그리고 배열은 여러 개의 데이터에 번호를 붙여서 통째로 옮겨다닐 수 있는 것이라고 했어요. Get 노드는 그 중에 특정 번호에 해당하는 데이터를 꺼내는 역할을 해요.

레벨에서 찾아온 Static Mesh Actor들 중 가장 첫번째(0번) 액터를 꺼냈어요. 그리고 그 액터는 보나마나 판떼기일거에요. 왜냐면 레벨에 Static Mesh Actor는 하나 뿐이니까요.

4. 가져온 판떼기 액터에서 실제로 머티리얼을 입고 있는 Static Mesh Component를 빼내겠습니다. Get 노드의 아웃풋 핀을 뽑아 들고 Get Static Mesh Component를 만드세요.

 

컴포넌트(Component)는 액터를 구성하는 요소에요. 자세한 내용은 아래 링크를 참고해주세요.

 

 

컴포넌트

액터 안의 하위 오브젝트로 사용할 수 있도록 설계된 여러 유형의 Component, 컴포넌트에 대한 개요입니다.

docs.unrealengine.com

 

5. Static Mesh Component 핀을 우클릭 한 뒤 Promote to Variable을 이용해 변수를 만드세요. 이름은 Background Mesh로 지으세요. 그러고 나서 노드망을 완성하세요.

변수로 저장해 놓아야 두고두고 불러다가 사용할 수 있어요.

6. BeginPlay 이벤트 노드를 만드세요.

7. BeginPlay 노드에 방금 만든 SetBackground Reference 이벤트 호출 노드를 만들어서 연결하세요.

게임을 시작하면 배경 액터를 찾아서 그 컴포넌트를 변수에 저장한다.

 

이제 GM_Game은 게임의 배경을 마음대로 조종할 수 있게 됐습니다.

 

 


# 배경에 쓰일 색상값 만들기

 

계속해서 배경에 들어갈 색상값을 만드는 로직을 작성해볼게요.

1. GM_Game에서 함수를 하나 만들겠습니다. My Blueprint 탭의 Functions 항목에서 +Function 버튼을 클릭하세요.

2. 함수의 이름을 MakeBackgroundColor로 만드세요.

3. 색깔을 만들어 줄 float(실수형)을 랜덤하게 만들어주는 Random Float in Range 노드를 3개 만드세요. Max값은 모두 1.0으로 바꾸세요.

이 노드들을 이용해 0~1 사이의 실수를 랜덤하게 받아볼 수 있어요.

4. Make Vector 노드를 만들어서 Random Float in Range 를 연결하세요.

랜덤한 실수 3개를 Vector 라는 형태로 묶어주었어요. 이제 이 것을 배경에 쓰인 머티리얼의 Vector Parameter를 바꾸는 데 사용해야 합니다.

5. BackgroundMesh 변수를 찾아 Get 노드를 만드세요. (Variable > Components 아래에 있을거예요)

6. BackgroundMesh 노드의 핀을 뽑.들.검해서 Set Vector Parameter Value on Materials 노드를 만드세요.

7. Vector 형 변수를 하나 만드세요. BackgroundColor로 이름을 짓고 Set 노드를 만들어서 배치하세요.

 

8. 랜덤하게 만든 색상값을 함수 외부로 빼볼게요. 함수 시작 노드(Make Background Color)를 선택하세요.

9. 오른쪽 디테일 패널의 Outputs 항목 옆 + 버튼을 클릭하세요. (마우스를 올리면 +New Parameter 라고 나와요.)

버튼을 누르면 아래처럼 나와요.

이런 Return Node 노드도 나옵니다.

10. Boolean 형을 내보낼 필요는 없겠죠. 아래 그림처럼 Boolean 이라고 써진 버튼을 눌러 Vector로 바꾸세요.

이름도 ReturnValue라고 바꾸세요.

11. 노드망을 아래처럼 연결하세요.

Return Value는 우리나라 말로 '반환값'이라고 해요. 이 함수는 반환값으로 Vector를 가진 함수입니다.

 

 


# 확인하기

 

방금 만든 함수가 잘 작동하는지 확인해볼게요.

1. PC_Game을 열고 AnyKey 이벤트 노드를 만드세요.

 

2. AnyKey 노드를 선택한 상태에서 디테일 패널의 Input Key를 C로 바꾸세요.

 

Any Key가 C로 바뀐 모습

 

 

3. Get Game Mode 노드를 만드세요.

4. Get Game Mode 의 Return Value 핀을 뽑고 Cast To GM_Game 노드를 만드세요.

5. As GM Game 핀을 뽑.들.검해서 Make Background Color를 만드세요.

함수의 Return Value 아웃풋 핀이 보이시죠?

6. Return Value를 잘 전달해주는지 확인하기 위해 Print String 노드를 만들어서 연결하세요. 그리고 노드망을 아래와 같이 완성하세요.

노란핀(Vector)을 분홍핀(String)으로 바꿔주는 중간노드는 두 핀을 연결하면 자동으로 만들어집니다.

연결하려고 하면 나오는 메시지 ​

 

7. Play를 눌러서 게임을 실행한 뒤 C를 눌러보세요. 아래처럼 잘 나오나요? Print String 노드가 Make Background Color 노드의 반환값을 잘 받아서 출력해주세요.

 

C를 누르면 배경색이 변해요

 

serviceapi.nmv.naver.com

8. 플레이를 종료하세요.

9. 노드망에 Comment 처리를 해주겠습니다. 노드를 모두 선택하세요.

그리고 C를 누르세요.

코멘트를 추가할 수 있어요. F2를 누르거나 글씨부분을 클릭하면 Comment라는 글씨를 수정할 수 있습니다. For test 라고 간단하게 적어줄게요. 테스트용으로 만든 것이라고 표시해 놓고 게임이 완성되면 지워주도록 하겠습니다.

코멘트 기능에 대한 자세한 내용은 공식문서를 통해 확인해보세요.

 

 

코멘트

관련이 있는 노드를 그룹으로 묶고 그 기능에 대한 설명을 달 수 있는 그릇입니다.

docs.unrealengine.com

 


# 배경색을 만드는 두가지 색은 어떻게 만들어 질까요?

 

다음장에서는 매우 흥미롭지만 조금은 머리를 써야하는 주제를 다룰거예요. 바로 배경색을 어떻게 적절히 두개의 색으로 나눌것인가에 대해 알아볼텐데요. 왜 배경색을 두개의 색으로 나눠야 되냐면, 플레이어가 다섯개의 튜브 중에 두개의 튜브를 선택해서 정답을 맞추게 하려면 게임 개발자는 항상 정답이 되는 두가지 튜브를 만들어 주어야 하기 때문이에요. 게임플레이의 핵심이 되는 부분인 만큼 잘 따라와주세요 :)