안녕하세요?


지난번에 계획만 세워놓고서, 익숙하지 않은 일러스트를 그리는 작업을 하려고 하니 시간이 많이 걸리기는 걸렸습니다. 이번 추석 연휴를 통해서 겨우겨우 어떻게 했는데, 그 결과물을 gif파일로 만들어서 한번 보여드리고자 합니다. 



먼저 플레이어 캐릭터인 윳쿠리가 뒤에서 날라오는 대포알에 맞는 애니메이션입니다. 일단 gif파일로 만들면서 보기 편하게 0.2초씩 한장의 그림이 이어지게 하면서 작성한 것입니다.



다음은 윳쿠리가 앞에 있는 장애물에 부딧쳐서 넘어지는 애니메이션이라고 해야 할까요? 일단 이번에는 앞에 있는 장애물 맞고서 쓰러지는 애니메이션을 그리는 데 성공했습니다. 이 역시 이래저래 가지가지 사정으로 인해서 그리는 데 많은 시간이 걸리니는 걸렸습니다.




다음은 윳쿠리가 필드를 뛰면서 아이템이라고 해야 할까요? 스코어링에 필요한 아이템인 먹을 꺼리를 먹는 애니메이션입니다. 



다음은 맨 뒤에 있는 대포가 발사되는 애니메이션입니다. 그런데 이걸 만들고 나서야 깨달았는데, 대포의 포신끝이 조금은 투명하게 처리가 되어서 인지 몰라도, 포구에서 나오는 불꽃이 보이지 말아야 할 곳까지 보인다는 단점이 있습니다. 이래서야 곤란다하는 생각이 듭니다.




이번에는 대포가 발사되고 난 다음에, 포신에서 연기가 나오는 장면입니다. 이 역시 포신끝에 어느정도 문제가 있다는 생각이 드는데, 어떻게 해결을 해야 겠다는 생각이 듭니다.


마지막으로 포탄이 날라가는 애니메이션입니다. 지금은 제자리에서 그냥 뜀뛰기만 하고 있는 것 같지만, 앞으로는 게임상에서 앞으로 나아가면서 바닥에 뒤어 나가는 것이 될 것입니다. 이것으로 애니메이션 2개의 수정만 더 한 다음에, 추가로 아이템이랑 장애물, 그리고 게임의 배경화면을 만든 다음......... 타이틀 화면과 게임오버 화면을 만드는 것이 남아 있다는 생각이 듭니다. 

저작자 표시
신고

안녕하세요?


얼마전에 '수학동아' 에서 게임을 만드는데 필요한 도구인 '게임 엔진'인 '컨스트럭트2'를 소개 하였다는 내용을 포스팅 하기는 했었습니다.


링크 : 수학 동아에서 게임 엔진도 소개하다.


이번 시간에는 지난번 8월호 기사를 이어서, 9월호 기사에 나머지 부분이라고 해야 할까요? 아무튼 소개가 되어 있기는 있었습니다. 다만 충실한 내용에도 불구하고 그 내용이 제 예상과는 달라서 실망이기는 했습니다.



위 스크린샷은 새로운 오브젝트를 추가하기 위한 윈도우입니다. 일단 원래 제 생각에는 앱인벤터2 마냥 이리저리 블록을 연결하는 작업이 있을 줄 알았는데, 그러한 작업없이 메뉴에서 저런 윈도우를 불러오기만 하면 된다는 것입니다. 그래서 이번 9월호의 기사를 가만히 보면, 딱히 프로그래밍을 한다는 부분이 없다는 것을 알 수 있습니다.




다만 이러한 면이 기사가 부실해서 이러는 것이 아니라, 시가에 소개가 된 게임엔진인 '컨스트럭트2'의 특징 때문에 이렇게 된 것으로 보여집니다. 아무튼 간에 기존의 유니티5를 공부한 저게에는 많이 낯설기는 하지만, 그래도 게임의 구성요소라고 해야 할까요? 점프 플랫폼 게임에 있어서 중요한 요소인 '발판, 아이템, 적 캐릭터'를 간단하게 추가한 다음 아래와 같이 'Behaviors' 윈도우를 오기만 하면 됩니다.



이렇게 컨스트럭트2의 특징이 별도의 코딩이나 블럭을 연결하는-앱인벤터2와 같은 방식의 프로그래밍도 없이, 위 스크린샷과 같은 별도의 윈도우를 우클릭으로 불러오기만 하면 다른 게임 엔진-유니티5나 언리얼 엔진등에서 해야만 했던 코딩작업을 간단하게 마칠 수 있다는 장점이 있어 보입니다. 다만 이 컨스트럭트2가 제공하지 않는 기능이라고 해야 할까요? 저렇게 Behaviors에 없는 내용은 추가하려고 하면, 다른 제작툴을 써야만 하는 것이 아닌가 하는 생각이 듭니다.




마지막으로 이 기사가 원래는 3부작인데, 아마 수학동아 7월호에 게임을 구성하는 전체적인 '알고리즘'이 있을 것으로 생각이 됩니다. 하지만 이 부분을 놓친게 아쉽기는 하지만, 그래도 아마추어가 아이디어와 약간의 그림 실력만 있으면 자신만의 게임을 만들 수 있다는 점에서 뭐라고 해야 할까요? 수학과 상관이 없어 보였지만, 있다면 있는 물건을 접할 수 있다는 점에서 의의를 찾아야 겠습니다.

저작자 표시
신고

안녕하세요?


지난번 유니티5의 독학에서 게임인 Yukku Run의 기획을 올렸는데요, 이번에는 제 손으로 플레이어 캐릭터를 직접 그려서 제 손으로 애니메이션까지 만드는 작업을 해 보았습니다. 당연 이번 포스팅의 내용도 제 손으로 직접 그림을 그려서 애니메이션을 만드는 과정이라고 할 수 있습니다.


우선 가장 먼저 해야 했는 과정은 플레이어 캐릭터인 윳쿠리가 뛰어가는 모양을 만들어야 하기에, 하나의 동작을 4 부분으로 나누어서, 4개의 컷으로 만들기로 했습니다. 



우선 위 그림에서 나온 4개의 그림이 제가 손으로 그려서 만들어낸 화면입니다. 이제 이걸 유니티5에서 애니메이션으로 만드는 과정을 거쳐야 합니다. 우선 이를 위해서 전용으로 프로젝트를 생성하도록 하겠습니다.



언제나 보아왔던 유니티5의 새 프로젝트를 생성합니다. 일단 다른 에셋은 모르겠지만, NGUI는 포함시켜 두도록 합니다.



일단 새로 생성된 프로젝트에 Resource Pictures라는 폴더를 만들어서 이번에 새로 만든 그림 4장을 집어 넣도록 합니다. 




그리고 나서는 애니메이션을 만들고 나서, 저장하기 위해서 animation이라는 폴더를 아래의 그림과 같이 만들어 주는 과정을 거쳐야 합니다.



이제 생성된 애니메이션을 저장하기 위한 폴더도 생성이 되었으니, 이제는 본격적으로 애니메이션을 만들기 위한 작업에 들어가 보도록 해야 겠습니다.



위 그림처럼 Window 항목에 있는 Animation이라는 윈도우를 불러와서 작업을 하려고 했습니다만, 어째서인지 작업이 잘 되지를 않았습니다.



알고 봤더니 게임 오브젝트로 추가를 하고 나서야, 작업이 원활하게 할 수 있는 것이였습니다. 일단 위 그림처럼 크기를 지정하지 않은 채 오브젝트로서 추가를 합니다. 그리고 나서 다시 Window메뉴 안에 있는 Animation메뉴를 열도록 합니다. 



위 그림은 Animation윈도우 안에 4개의 그림을 차례로 올려서, samples 항목에다가 10으로 처음 설정을 했습니다만, 나중에는 5까지 내려서 설정을 하는데 해 보았습니다.



유투브에 올린 윳쿠리가 앞으로 뛰어가기 위한 모션을 애니메이션으로 만들어서 표현한 것입니다. 유니티5에서 플레이 버튼을 누르면, 일단은 제자리에서 뛰는 것을 볼 수 있습니다. 이번 작업으로 얻은 것이라면, 처음으로 제 손으로 한번 캐릭터를 그리는 데 성공했고, 이 캐릭터를 제자리 뛰기지만 움직이게 하는 데는 송공했다는 것에 의의가 있다고 해야 겠습니다.

저작자 표시
신고

안녕하세요?


일단 기사에 소개된 '게임 엔진'이라는 것에 대해서 간단하게 소개를 먼저 해야만 하겠습니다. 일반적으로 게임 제작자가 게임을 만들기 위해서는 처음부터 '제작을 위한 도구'를 만들 수도 있지만, 이미 제공이 되는 '게임제작'에 필요한 도구 모음집을 사용할 수도 있습니다. 비유하자면 '게임'이라는 '철로된 도구'를 만드는데 필요한 '대장간 망치'가 '게임엔진'이라고 해야 할까요?


제가 열심히 독학하고 있는 '유니티5'도 실은 게임 엔진이며, 아마 게이머라면 들어본 적이 있는 '언리얼 엔진'도 실은 게임을 만들어 주는 도구라고 보시면 됩니다. 아무튼 이와 관련된 이야기도 하자면 끝이 없지만, 왜 갑자기 게임엔진을 이야기 하느냐 하면, 수학동아 2017년 8월호를 읽던 중에, 제가 생각하기에는 수학과 아무런 관련이 없을 줄 알았던 '게임엔진'에 대한 기사가 올라와 있기에 이를 리뷰해 보고자 합니다.



먼저 기사는 시작하자마자 '컨스트럭트2'라는 게임엔진에 대해서 소개를 하고 있습니다. 왜 이런 게임 엔진을 소개 하였는가 하면, 미리 정의된 명령어 블록을 끌어와서 '드래그 앤 드롭'방식으로 프로그래밍을 하는데, 아무래도 제가 공부를 해본 적이 있는 '앱 인벤터2'와 유사한 방식을 사용하는 것이 분명해 보이는데, 이 이유로 수학동아에서 이 '컨스트럭트2'를 소개하는 것이 아닐까 하는 생각이 들었습니다.




다만 아쉬운점이라면, 기사에서 소개하기로는 [웹과 모바일에서 게임을 만드는데 유용해요]라고 하기는 했습니다만, 무료 버전의 컨스트럭트2의 경우 iOS와 구글 앱스토어 발매라고 해야 할까요? 여기로 게임을 만들어서 올리기 위한 기능은 무료버젼에서는 없다는 것입니다. 개인적으로는 이런 면에서는 제가 독학하고 있는 유니티5에 비해서 무언가 유감스러운 면이 있다는 생각이 듭니다.



기사에도 나와 있는 내용이지만, 9월호의 가사와 연동이 될 것을 염두해 두고서 컨스트럭트2에 대한 대략적인 사용법에 대해서 설명을 하고 있습니다. 기사-8월호 기사에서 소개하는 부분은 주로 '디자인'작업에 관계가 된 부분을 소개하고 있었습니다. 먼저 기본이라면 기본이 되는 프로젝트를 생성하고, 대략적인 런너 게임을 구성하는 방법을 소개하고 있는데, 워낙에 이 '컨스트럭트2'라는 게임 엔진이 직관적으로 사용이 가능해서 인지는 몰라도, 기사에 올라온 설명은 간편한 편입니다.



다만 기사의 내용에서 한가지 아쉬웠던 점이라면, 지면의 부족으로 인해서 원래는 게임엔진에서 상당히 중요하며, 설명을 많이 요구하는 부분에 대해서는 아주 대략적인 면만 설명하고 넘어가는 것을 볼 수 있었습니다. 때문에 예전에 '게임엔진'에 대해서 전혀 공부를 하지 않았거나 접해본 적이 없다면 기사의 내용을 이해하는데 상당히 어려움이 있으리라 예상이 됩니다.




다만 이 한전된 지면에도 불구하고 기사는 '컨스트럭트2'만이 가지는 특징을 직관적으로 알 수 있도록, 게임의 화면을 구성하는 여러가지 요소에 대해서, 어떻게 어떤 '요소'를 배치해야 되는지를 자세하게 설명하고 있ㅅ브니다. 이런 면에서 볼 때 수확동아의 독자가 기사만을 읽고서, 간단한 게임을 하나 만들어 보는 것이 가능하도록 '정보를 전달'하고 있다고 해야 할까요? 간단하지만, 설명대로 하면 게임하나 제작이 가능해 보입니다.


다만 한가지 아쉬운 점이라면, 기사 자체가 2개의 과월호에 걸쳐서 이어지는 형태이기 때문에, 뒤에 있는 나머지 작업인 '프로그래밍'에 대한 부분은 없다는 것이 아쉬웠습니다. 이에 대해서는 수학동아 9월호에 있는 기사를 읽고서, 나중에 추가적인 내용을 포스팅 하여야 하겠다는 생각이 듭니다. 기존의 수학이 이런 게임엔진까지 다루고 있다는 점에서, 무언가 신선하다는 생각이 들었습니다.

저작자 표시
신고

안녕하세요?


유니티5를 독학을 시작해서 이제 처음으로 게임을 만들기 위한 기획에 들어가 보고자 합니다. 기획이라고 해서 거창한 것이 있는 것은 아니고, 그저 제 능력으로 가능한 것을 만들어 보고자 합니다. 이 포스팅에 올라온 것은 그저 '기획'일 뿐이며, 완성된 게임은 어떤 모습이 될지는 지금으로서는 자세하게 알 수는 없습니다. 다만 대략적인 모습은 알 수 있으리라 생각합니다.


타이틀 : Yukku Run!

장르 : 횡스크롤 달리기 게임


일단 여기까지는 구상을 한 것에 지나지 않기 때문에, 자세한 그림이 아닌 대충 그림을 그려서 올리고자 합니다. 게임의 내용은 간단합니다. '윳쿠리'라는 가상 캐릭터-왜 이런 캐릭터를 선택했냐 하면, '머리'만 있는 것이기 때문에 상대적으로 그리기가 쉬우리라 생각해서 입니다.-가 뒤에서 날라오는 대포알을 피하면서 앞에 나오는 장애물도 피하고, 그러면서 간식꺼리를 먹어서 스코어를 올린다고 보시면 됩니다.



위 그림은 타이틀 화면을 대충 그린 것입니다. 그림은 뒤에서 날라오는 대포알에 쫓기는 윳쿠리를 그린 것입니다만, 지금 그림의 퀄러티로서는 좀 무리일지는 모르겠다는 생각이 듭니다. 아무튼 간에 아무것도 모르는 상태에서 게임을 만들면 무언가 좀 난감하게 될지도 모르기 때문에, 일단은 '튜토리얼'까지는 메인 메뉴에 포함을 두고자 합니다.





그리고 정말 중요한 것은 게임뷰라고 해서, 타이틀 화면에서 start를 누르면 시작해서 볼 수 있는 화면을 의미합니다. 이 역시 대충 그리기는 했지만, 어디까지나 기획을 하는 단계에서 이러는 것이고, 실제로는 정말 신경써서 배경을 그리거나, 관련된 에셋을 다운로드 받아야 할 듯 합니다.



그래서 이 게임을 위해서 구현해야 하는 기능의 목록은 다음과 같습니다.

  • 자동으로 끝없이 플레이 할 수 있는 스테이지 생성
  • 2D 캐릭터 애니메이션
  • 키보드를 이용한 플레이어 캐릭터 제어
  • 플레이어의 데이터를 저장
  • 최고 점수를 저장할 수 있는 점수 시스템

대충 이렇게 됩니다. 일단 이 게임은 스테이지가 정해져 있어서 목표지점으로 들어가는 것이 아니라, 끝없이 달리는 것을 목표로 하고 있기 때문에, 유니티5의 카메라 밖에서 스테이지를 생성하고, 그 윳쿠리가 지나간 다음 유니티5의 카메라 밖에서 스테이지가 소멸될 필요가 있습니다.


다음은 캐릭터 애니메이션이라고 하면 대단한 것은 아니고, 다음의 동작을 구현해야 합니다.

1)평상시 뛰어 가는 동작

2)음식먹는 동작

3)뒤에서 날라오는 포탄에 맞는 동작

4)앞에 있는 장애물에 맞는 동작


그리고 키보드를 이용한 윳쿠리-플레이어 캐릭터의 제어에 대해서는 간단합니다.

화살표키 상하로 캐릭터가 달리고 있는 트랙을 상하로 바꾸고, 

왼쪽 화살표 키를 누르면 달리는 속도를 줄이며

오른쪽 화살표 키를 누르면 달리는 속도가 일시적으로 빨라집니다.




그리고 점수에 대해서는 플레이어 캐릭터가 달린 거리 + 먹었는 음식의 점수를 합계해서 계산을 하고자 하며, 마지막으로 모든 플레이어 캐릭터가 날라갔을 경우에 뜨는 게임오버 뷰를 올리겠습니다. 물론 실제 게임에서는 이렇게 대충 그린 뷰가 나오지는 않습니다.



일단 WebGL로 빌드해서 웹페이지상에서 설치없이 플레이를 할 수 있도록 만들 계획이며, 화면 해상도는 1024X600을 생각하고 있는 중입니다. 


물론 이건 어디까지나 기획이며, 아마 제작을 하는 과정에서 이래저래 많은 변경이 가해질 것으로 생각이 됩니다. 그리고 저 역시 [유니티5.X와 함께하는 C# 첫걸음]을 보면서 작업하기 때문에 다소 시간이 걸리리라 생각이 듭니다.

저작자 표시
신고

안녕하세요?


게임엔진인 유니티5의 독학을 지난번 포스팅에서 시작하였으며, 이번 포스팅에서 독학하기 2번째 걸음을 옮기고자 합니다. 우선 첫번째 작업으로 지난번 작성한 test라는 c# 스크립트를 열어서 확인해 보았습니다.



이 스크립트를 드래그해서 Game object에 옮겨 놓는 것으로 제대로 장착시키기(?)를 하도록 하고 이제는 게임 오브젝트에 다른 컴포넌트를 추가하는 작업을 하도록 해보겠습니다.



유니티 화면의 상단에 있는 Inspector화면에서 add component라는 버튼을 누르면 위 스크린샷과 같은 화면이 뜹니다. 여기서 저는 Effects를 선택한 다음에, 하위 항목에 있던 particle을 선택하였습니다.



유니티5의 화면에 있었는 Scene화면에서는 위 스크린샷과 같이 입자들이 퍼지는 것 같은 연출이 일어나는 것을 볼 수 있었습니다. 이제 add component를 추가하는 것을 실습해 보았으니, 다음은 3차원의 물체를 움직이는 것을 실습해 보도록 하겠습니다.



여기서 실습을 해보니까, X좌표의 경우에는 +값을 입력하면-위 스크린샷의 우측 상단에 있는 Position항목의 X값에 +값을 입력하면 박스가 오른쪽으로 움직이고, 반대로 -값을 위 스크린샷처럼 입력하면 왼쪽으로 움직이는 것을 볼 수 있었습니다.



다음은 역시 Test.cs를 도로 연 다음에, 기존에 있던 Hello World를 삭제하고 대신 변수를 선언하도록 합니다. float는 실수값으로 소수점까지 포함할 수 있는 변수의 타입이며, bool은 true/false로 나오는 값을 받는 변수입니다.



다음은 이 선언한 변수들 앞에 public을 붙이도록 합니다. 그리고 나서 다시 유니티5의 화면으로 돌아가면, 다음과 같은 변화가 일어난 것을 볼 수 있습니다.



단지 변수앞에 public을 선언했을 뿐인데, 유니티5에서 각각의 변수에 대해서 일일히 변경을 할 수 있도록 변경이 가능한 항목이 Inspector윈도우에서 뜨는 것을 확인할 수 있었습니다.



다만 주의해야 할 것은, 유니티5에서 변경한 값이 바로 C# script에 반영이 되지는 않는 다는 것입니다. 그리고 듣자니 유니티5에서는 스크립트 상에서 수정한 값보다 유니티5의 Inspector윈도우에서 수정된 값이 먼저 반영된다고 합니다. 이것을 앞으로 주의해야 겠다는 생각이 듭니다.


다음은 void sum()이라고 임의의 함수를 추가하는 작업을 시작해 보았습니다. 이전에 했던 안드로이드 스튜디오와는 다르게 public이나 private를 붙이지 않았지만, 그래도 임의로 함수를 제작해서 특정 타이밍에 실행을 시킬 수 있다는 점이 유사하다고 할 수 있습니다. 여기서는 단순하게 10+10을 해서 그 결과를 출력해 보고자 합니다.



여기서 유니티5의 상단에 있는 플레이 버튼-흔히 비디오나 뮤직 플레이어에 있는 그 삼각형 버튼 맞습니다. 이 버튼을 누르면, Project 옆에 있는 Console창에 위 스크린샷과 같이 20이라는 값이 뜨는 것을 볼 수 있습니다. 여기서 하나 잊으면 안되는 것이, 위 스크린샷에 표시한 우측 상단의 느낌표가 들어간 버튼을 눌려야 스크립트가 실행한 결과를 볼 수 있다고 합니다.



이번 포스팅 마지막 실습으로 위 스크린샷과 같이 코딩을 변경해 보았습니다. 먼저 void로 되어 있는 반환값을 int로 바꾸어서 int sum()으로 바꾸어 보았으며, 이전에 print(result); 라는 구문을 return result;로 변경해 보았습니다.


이후 제가 몰라서 약간은 해메었는데, 위에서 int result=sum();이라고만 선언해서는 결과가 출력되지 않고, 여기서는 print(result);라는 구문까지 추가해 주어야만 했습니다. 유니티를 독학하면서 알게된 새로운 코딩법이지만, 저로서는 안드로이드 스튜디오를 독학하면서 알게된 void 함수명()이 사용하기 더 편하다는 생각이 듭니다.

저작자 표시
신고

+ Recent posts

티스토리 툴바