https://unity3d.com/kr/learn/tutorials/projects/2d-roguelike-tutorial/project-introduction?playlist=17150


내가 하고 싶었던 그 프로젝트

사실 유니티에 입문하자마자 가장 먼저 하고 싶었던 튜토리얼이었으나, 튜토리얼 진행에도 순서가 있다고 생각해서 지금까지 다른 튜토리얼들 - Roll a Ball, Space Shooter, Survival Shooter, Tanks! - 을 진행했던 것이었다.


개인적으론 2D 게임을 좋아하고 또 만드는 데 관심이 많다. 그리고 던전크롤, 스톤수프, Slay the spire 같은 로그라이크 장르도 좋아한다.


다시 내레이션 비디오

다시 워크샵 형식이 아니라 내레이션 방식이다. 처음엔 워크샵 형식이 싫었지만, 튜토리얼 비디오를 보다 정이 들었는지 그 분들이 다시 그리워진다.


Roll a Ball 또는 Space Shooter 를 진행했던 그 분의 목소리는 아니다. 아마 다른 사람인 듯.


시작부터 불길한 예감

유튜브 댓글을 보았더니, 예상과는 다르게 엄청나게 많은 혹평들이 있다. 특히 말로만 이것 저것 하라고 말하지 말고 - 심지어 틀리게 알려준다고 한다 - 직접 시연해서 보여달라는 요청이 많다. 아무래도 비디오만 봐서는 진행하기가 좀 어려웠던 모양이다.


반응형




드디어 끝이다!

약 2달 정도 걸렸다. 이제 다음은 2D 로크라이크 튜토리얼을 할 차례이다.


튜토리얼 동영상 마지막에 진행자가 드디어 끝났네요 하면서 만세를 하는데 박수가 터져나온다. 아무래도 아침부터 저녁까지 하루 종일 하는 것이다 보니 진행자나 학생들이나 모두 힘들었을 것이다. 드디어 퇴근이다! 하는 느낌.


문제 발생과 해결

지금까지 튜토리얼을 하면서 큰 문제가 있었던 적은 없었는데, 이번에 처음으로 뭔가 빠뜨린 것인지 제대로 동작하지 않는 부분이 있었다. 발사 시 화살표 크기가 0부터 시작해야 하는데, 이미 큰 상태에서 시작된 것이었다. 뭔가 상대적 Size 지정을 할 때 빠뜨린 부분이 있었던 듯 하다. 겨우 찾아서 수정했다.


유튜브 동영상 댓글에도 뭐가 안된다는 말이 많은데, 내가 알려줄 수 있는 부분은 댓글을 달아서 알려줬다.


게임 규칙의 문제점

튜토리얼이기 때문에 게임 규칙 자체는 하자가 좀 있다. 가장 큰 것은 발사 간의 쿨타임이 존재하지 않는다는 것이다. 따라서 조금이라도 상대방의 위치와 주포가 정렬되면 발사 키만 연타해서 상대를 빠르게 죽이거나 접근하지 못하게 하는 것이 가능하다. 두 번째로는 발사 방향과 이동 방향이 항상 일치한다는 것이다. 주포를 돌릴 수 없으므로 상대를 바라봐야만 피해를 줄 수 있는 가능성이 생기는데, 이러면 상대방을 바라본 상태에서 앞, 뒤로만 움직일 수 있게 된다. 상대방이 먼저 나를 조준했다면 날아오는 포탄을 피하는 것이 급선무이므로 방향을 틀어야만 하고, 나는 다시 피해를 줄 기회를 잃어버리게 되므로 게임 결과가 뻔해진다. 마지막으로 전진 시와 후진 시 좌, 우 입력의 방향이 반전되지 않는 문제가 있다. 무슨 말이냐면, 자동차로 치면 핸들을 왼쪽으로 꺾은 후 후진을 하면 꼬리 부분이 왼쪽으로 움직여야 하는데 이 게임은 왼쪽 입력을 하고 있으면 반드시 왼쪽으로 차체가 회전하게 되어 있으므로 반대로 후진 시 꼬리 부분이 오른쪽으로 움직인다. 물론 무한궤도 특성상 틀린 것은 아니지만 전진과 후진을 반복하다보면 원하지 않는 동작을 하기 쉽다.

반응형

윈도우로 유니티에서 스크립트를 편집하면 보통 Visual Studio + C# 조합을 쓰게 된다. 그런데 최근 새로 유니티를 설치하여 개발하다보니 C# 자동완성이 되지 않는 것을 확인했다.


해결 방법은 다음과 같다:

* 비주얼 스튜디오와 유니티를 닫는다

* 시작-실행-appwiz.cpl 입력 (또는 '프로그램 추가/제거' 찾아서 실행)

* 'Microsoft Visual Studio Installer' 를 찾아서 마우스 오른쪽 클릭 - 변경

* Visual Studio '수정' 클릭

* 오른쪽에서 'Unity를 사용한 게임 개발' 항목을 확장하고 'Unity 2017.2 64비트 편집기' 체크

* (여기까지만 하고 '수정' 버튼을 눌러 나온 뒤 유니티와 VS를 다시 켜면 나의 경우 인텔리센스가 동작했다)

* 혹시 모르니 '개별 구성 요소' 탭 - 코드 도구 - 'NuGet 패키지 관리자' 체크가 안되어있으면 체크

* '수정' 버튼 누르고 체크한 것들이 추가로 설치될때까지 대기

* 이제 유니티, VS를 켜면 자동완성이 됨






정보 출처: https://developercommunity.visualstudio.com/content/problem/130597/unity-intellisense-not-working-after-creating-new-1.html


반응형



https://unity3d.com/kr/learn/tutorials/s/tanks-tutorial


무슨 프로젝트일까

한 PC 에서 2명이 키보드를 가지고 탱크를 몰아 서로를 격파할 수 있는 게임인 것 같다. 즉, 온라인 멀티플레이어가 아니라 오프라인 멀티플레이어 게임이다. 튜토리얼 영상 초반에 완성된 게임의 영상을 보여주는데 꽤 흥미로워 보인다.


튜토리얼 진행 방식

저번 Survival Shooter 튜토리얼과 마찬가지로 자막은 한국어는 없고 영어는 지원한다. 재미있게도 일본어 자막은 있다. 일본인이 유니티에 관심을 많이 가지고 있는 것일까?


'UNITE 2015 BOSTON' 이라고 써있고 스케줄표에 점심 시간이 있는 것으로 보아 상당히 긴 시간동안 진행될 것 같다.




반응형


Survival Shooter 튜토리얼을 끝냈다.

https://unity3d.com/kr/learn/tutorials/s/survival-shooter-tutorial

이전 Space Shooter 튜토리얼 완료 이후 거의 반년만이다.


이번 튜토리얼의 특징

비디오가 강의 전용으로 준비된 것이 아니라 워크샵을 녹화한 것을 보여준 것이라는 점이다. 그리고 비전문가를 대상으로 한 것인지 이런 저런 부연 설명이 많다. 따라서 이전 튜토리얼들과는 달리 시간적으로 분량이 매우 길다. 하나씩 따라하면 큰 문제는 없다. 다만 너무 분량이 많다보니 시작하기도 전에 스트레스를 받는 점은 있었다. 또 자막은 한국어는 없으며 영어만 존재한다. 개발 용어 특성상 불필요하거나 문학적이거나 못 알아듣는 말은 별로 하지 않으니 큰 문제는 없다.


워크샵은 유니티 직원 3명이 진행하는 방식이다. 중간중간 개그를 치는 것도 있는데 생각보다 반응이 썰렁해서 보는 내가 좀 민망한 느낌. 유튜브 영상 댓글에는 직원 숨소리가 매우 거슬린다는 글이 보인다. 나는 그렇게 거슬리진 않았다. 어떤 사람은 우리를 위해 힘써주는 직원에게 숨소리 타령이나 하고 있냐며 호통치는 댓글도 달았다.


이전 튜토리얼들과 마찬가지로 지금의 유니티와 버전이 좀 차이가 나므로 몇몇 기능은 이름이나 레이아웃 등이 좀 바뀌었다. 이것도 pdf 로 어떤 점이 차이점인지 제공되기도 하고, 잘 모르겠으면 유튜브 댓글만 봐도 해결책을 써둔 것이 있어 유용하다.


해결하지 못한 것

라이팅 관련해서 해결을 못한 게 있는데, 게임 오버가 된 후 게임이 다시 시작되었을 때 매우 어두워지는 문제가 있었다. LoadLevel 을 다시 했을 때 발생하는 듯. 디버깅은 귀찮아서 패스했다.


다음 할 일

이제 'Tanks' 튜토리얼을 할 차례이다. 반년 사이 유니티 튜토리얼에 '2D Game Kit' 라는 것이 추가되었다. 할 일이 어째 더 늘어난 느낌이다.

반응형

Space Shooter 튜토리얼을 끝냈다. 

틈틈이 작업하다보니 거의 한 달이 걸렸다. 


기록의 중요성

한 달이 걸렸다는 사실도 저번 일지를 쓴 것 때문에 정확히 알 수 있었다. 이래서 기록은 중요하다. 과거를 되돌아볼 수 있게 해주기 때문이기도 하지만, 머릿속에 두루뭉술하게 존재했던 것이 실체를 가지고 명확하게 바라볼 수 있는 형태로 바뀌기 때문이다. 내가 알고 있다고 느끼지만 실제로는 모르는 것이, 완전하게 알 수 있도록 바뀐다. 거기다가 '내가 몰랐다'라는 사실을 깨닫게 해주는 것은 덤이다.


게임 확장은 건너뜀

정확히는 기본적인 튜토리얼만 끝냈고, "Extending Space Shooter" 항목은 건너뛰었다. 여긴 두 가지 항목이 추가로 있다. 첫번째는 게임을 확장하여 더 많은 적과 다양한 패턴, 무기 업그레이드 등을 다루는 것이다. 실질적인 게임 컨텐츠를 만들어서 게임으로서의 핵심적인 기능 - 재미 - 에 더 충실하도록 하는 것이다. 두번째는 모바일로 게임을 만드는 방법에 대해 다룬다. 둘 다 좋은 내용일 것이 분명하나 각 항목 당 동영상 시간이 2시간 정도 되므로 일단 다른 튜토리얼도 해보기 위해서 그냥 동영상만 훑어보고 넘기기로 했다. 이 동영상들은 앞의 기본적인 내용을 다루는 동영상들과는 다른 사람이 진행한다. 목소리가 상당히 쾌활하다.


다음에 할 일은?

Survival Shooter 를 진행할 예정이다. 빨리 2D Roguelike 튜토리얼을 해보고 싶지만 표시된 순서대로 진행하고 싶다. 순서는 다음과 같다:

1. Roll-a-ball (간단한 공 굴리기)

2. Space Shooter (2D 탑다운 비행슈팅)

3. Survival Shooter (3D 쿼터뷰isometric 슈터)

4. Tanks (1키보드로 2인 플레이 가능한 탱크 슈터)

5. 2D Roguelike (2D 로그라이크)


반성

별것도 아닌데 한 달이나 걸린 것이 큰 문제로 와닿는다. 이 속도면 로그라이크 튜토리얼을 끝냈을 때 내년 봄이 되어버릴 것 같다. 다만 요즘 회사에서 밴드를 하느라 연습을 해야 하기 때문에 시간이 더 줄어든 것이 문제이자 핑계이긴 하다.

반응형

Roll a Ball 튜토리얼 완료


튜토리얼 주소: https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial



사실 Roll a Ball 튜토리얼 완료한 지는 꽤 되었는데 글을 이제야 쓴다.


인상깊게도 모든 튜토리얼이 유튜브 동영상으로 되어 있다. 영어로 이야기하지만 어떤 고마우신 분이 한국어 자막을 붙여두었으므로 보는 데 큰 지장은 없다. 단, 일부 동영상은 번역이 되어 있지 않다. 그래도 프로그래머라면 다 알아들을 수 있는 영어만 사용하고 동영상을 따라만 하면 되니까 영어를 못하는 사람도 큰 문제는 없을 것이다.


이야기하시는 분이 성우인건지 아니면 프로그래머인건지는 모르겠지만 굉장히 목소리가 깔끔해서 혹시 보이스웨어가 아닌가 하는 느낌이 든다. 특히 See the documentation below 같은 부분은 복붙한것 같은 느낌마저 준다.




Space Shooter 튜토리얼 시작


튜토리얼 주소: https://unity3d.com/kr/learn/tutorials/projects/space-shooter-tutorial


시작한 지 약 2주 정도 되었다.


1945 시리즈와 비슷한 종방향 탑다운 비행 슈팅 게임. 예전에 비슷한 2D 게임을 만들어 본 적 있어서 더욱 흥미로운 튜토리얼이다. 게임 자체는 만들기 크기 어렵지 않을 것 같은데 다만 3D 엔진으로 만드는 것이라 어떤 구현 방식 등에서 차이가 나는지 궁금했다. 예를 들면 주인공, 적, 총알이 동일한 Y축(언리얼에서는 Z축) 좌표에 놓여있는지 등이다. 높이가 다르면 카메라 상에서는 피격될 것 같지만 3D 엔진에서는 충돌이 안 되기 때문이다.


위의 Roll a Ball 튜토리얼과 같은 사람이 동영상 목소리로 나오는데, 조금 목소리 느낌이 다르다. 이 튜토리얼이 Roll a Ball 보다 훨씬 전에 만들어진 것 같다. 또 유니티 3D 엔진 4.x 버전 기준으로 만들어진 것이라 현재 유니티 2017 엔진 버전인 5.x 버전에서는 약간 다른 점이 있지만 유튜브 주석으로 설명이 되어 있기도 하고 영어가 된다면 문서를 봐도 되고 대충 짱구를 굴려서 뭐가 없다면 비슷한 메뉴를 사용하든지 주변의 버튼을 눌러봐서 비슷한 창이 뜨는지를 확인해봐도 된다.


동영상을 보다 보면 딱 한번 아주 살짝 웃는 경우가 있는데 이걸 들으면서 보이스웨어가 아니라고 확신하게 되었다.

반응형

'일기' 카테고리의 다른 글

출근 시간에 대한 생각  (0) 2018.01.21
유니티 Space Shooter 튜토리얼 완료  (0) 2017.11.20
Unity 2017 공부 시작  (2) 2017.10.03
게임 회사는 야근의 연속  (0) 2017.09.22
팀 이동에 관한 이야기  (0) 2017.09.20

회사에서는 언리얼4 엔진을 쓰는데, 집에서는 훈련을 유니티로 해볼까 한다. 양쪽 모두 게임 산업에서는 상당히 널리 쓰이고 있다. 유니티는 원래 Unity 3D 라는 상표명을 사용했던 것 같은데, 올해부터 Unity 2017 이라는 이름으로 바뀐 듯 하다. 아마도 2D, 3D 가 모두 지원 가능하다는 이미지를 주고 싶어서가 아닐까? 그 때문인지 프로젝트 생성 시 2D, 3D 를 선택할 수 있게 되어있다.



몇년 전만 해도 양쪽 엔진 모두 개인은 월 몇만원씩 주고 사용해야 했으나 최근 경쟁이 붙기 시작하면서 개인이나 인디 게임 제작하는 회사 수준에서는 모두 무료로 이용할 수 있도록 바뀌었다. 게다가 MS 도 이와 같은 흐름에 동참하면서 비주얼 스튜디오를 개인에게 무료로 개방하였다. 최소한 윈도우 환경에서 취미 생활로 게임을 만들고자 하는 사람에게는 더 없이 좋은 환경이 만들어진 것이다.


다만 언리얼과는 달리, 유니티는 별도의 라이선스(Pro) 없이는 엔진 소스 코드까지 접근할 수는 없는 듯 하다. 언리얼은 디버깅을 할 때 엔진 소스 코드가 보여서 엔진쪽 버그인지 그리고 엔진 코드가 무슨 일을 하는지 쉽게 파악이 가능했는데 - 물론 엔진쪽 버그면 수정이 어려워서 짜증이 나긴 한다 - 유니티는 그런게 어려울 듯 하다. 


언리얼4 엔진은 C++를 보통 사용하지만 유니티는 C#을 사용한다. 개인적으로는 C++을 선호하는 편이지만 C#도 상당히 좋아한다. C#은 무엇보다도 객체 수명 관리가 간편하며 C++와 같이 복잡하고 지저분한 코드가 덜 만들어진다. 언리얼 엔진에서도 대부분의 객체는 스마트 포인터와 같이 따로 해제를 해줄 필요가 없으며 가비지 콜렉션(GC)으로 수명을 관리해주므로 사실상 C++의 문법을 사용하고는 있지만 C#과 비슷한 느낌으로 사용이 가능하게 만들어두었다.


유니티 설치 시 인상깊었던 점은 유니티 설치 시 비주얼 스튜디오 2017 을 같이 설치해준다는 것이다. 언리얼은 별도로 설치했던 것으로 기억한다. 프로그래밍을 처음 하게 될 게임 제작자도 헤멜 거리가 하나 줄어들게 될 것이므로 긍정적으로 볼 수 있겠다.


아래는 두 엔진의 차이점을 표로 정리해본 것이다:

 

Unreal Engine 4

Unity 2017 - Personal 버전

가격

무료

무료

과금 조건 (로열티)

분기 매출 당 $3,000 초과분의 5%

연매출 10만 달러 이상인 경우 Plus 또는 Pro 버전으로 바꿔야 함

엔진 소스 코드 제공

X  (Pro 이상 버전)

주 프로그래밍 언어

C++ 

C# 

프로그래밍 IDE (Windows 기준)

Visual Studio 2017 (또는 2015)

Visual Studio 2017

만약 틀린 정보가 있다면 즉시 업데이트하도록 하겠다.




엔진 이야기는 이 쯤 하고, 이제는 오늘 진행했던 내용이다.


Roll a Ball 이라는 튜토리얼 프로젝트를 하고 있는데 동영상으로 하나씩 따라할 수 있도록 되어 있다. 언리얼로 치자면 블루프린트로만 진행하는 튜토리얼과 같은 수준이지만 유니티에서는 C# 으로 직접 스크립트를 코딩해야 한다. 이 점에서는 언리얼의 진입 장벽이 조금 더 낮다고 볼 수 있겠지만, 블루프린트로 게임을 만드는 경우 (프로그래머 입장에서) 나중에 고생을 많이 하게 되므로 결국엔 별 차이가 없다고도 할 수 있겠다.


몇 가지 인상깊었던 차이점을 하나 보자면, 언리얼은 에디터에서 기본 제공되는 기본 도형 중에 유니티에서 Plane 이라고 불리는 객체가 없다. 이게 없어서 상당히 의아했던 기억이 난다. 언리얼은 부피가 존재하는 블록을 사용하여 평평한 땅을 만든다. 유니티의 Plane 은 부피가 존재하지 않는 평면이다. 대신 앞, 뒷면이 존재하며 반대쪽 방향에서는 이 평면이 컬링되어 보이지 않는다.


또 한가지 다른 점은 축, 좌표계이다. 언리얼은 X, Y축이 지면이고 Z축이 위쪽인데, 유니티에서는 X, Z축이 지면이고 Y축이 위쪽이다. 예를 들어, 위 아래로 길쭉한 캡슐의 크기를 설명할 때 언리얼에서는 1x1x2 라고 표현하지만 유니티에서는 1x2x1 이라고 표현한다. 개인적으로는 Z축을 위쪽으로 보는 것을 선호한다. X, Y축은 위에서 땅을 내려다 보았을때 2D 평면의 좌표가 되고 Z축이 높이(Height)값이 되기 때문이다. 당분간은 이것 때문에 헷갈릴 것 같다.


에디터에서 카메라 움직임을 조작하는 법도 다른데, 예를 들어 마우스 휠 버튼을 누른 채로 이동하는 경우 언리얼에서는 카메라의 좌표를 조작한다는 느낌을 준다. 즉 휠을 누르고 마우스를 위쪽으로 움직이면 카메라는 지면에서 멀어지는 쪽(+Z)으로 움직인다. 반대로 유니티는 손으로 화면을 움켜쥐고 이동시키는 느낌이다. 스마트폰에서 화면을 손으로 누르고 밀어서 스크롤하는 느낌과 같다. 휠을 누르고 마우스를 위쪽으로 움직이면 화면의 다른 물체들이 위로 이동하고, 따라서 카메라는 반대로 내려간다. 나는 언리얼 방식을 선호하는 편이다. 아무래도 FPS 게임을 좋아해서 그런지 카메라가 플레이어로 인식되는 느낌이 더 편하다.


유니티 에디터에서 C# 스크립트인 .cs 파일을 여는 경우 내 기대와는 달리 Visual Studio 2017 이 켜지는 대신 처음 보는 에디터가 모습을 드러냈다. 이름은 MonoDevelop-Unity 이다. VS 가 더 편한 나로써는 약간 심기가 불편했지만 이 에디터가 유니티와 더 결합되어 있을 것이라는 기대를 했다. 그러나 한글과 같은 조합형 언어 지원을 제대로 못하는지 주석에 한글을 쓰니 타이핑이 누락되는 처참한 결과를 내고 말았다. 유니티가 한국 지사도 있는 것으로 아는데 이 점은 빨리 개선되어야 할 듯 하다.


"Input" 이라는 스크립트 코드를 입력한 후 Ctrl+' 를 누르면 관련 도움말 사이트로 즉시 넘어가는 기능의 설명을 따라했지만 유니티 사이트에서 404 에러를 뱉어냈다. 아무래도 이 기능이나 레퍼런스 웹 페이지의 유지보수가 필요할 듯 하다. 조금 더 테스트해보니 레퍼런스가 보관된 웹페이지의 주소가 바뀐 듯 하다. 직접 유니티 사이트에서 API 검색을 통해 Input 에 대한 설명을 찾아낼 수 있었다.


이 주소로 직접 이동하여 검색하면 된다: https://docs.unity3d.com/ScriptReference/index.html


C# 스크립트가 C++ 코드보다 더 나은 점이 있다면 엄청난 시간이 걸리는 컴파일 작업을 하지 않아도 된다는 것이다. 언리얼에서는 한 줄의 코드만 바꾸더라도 컴파일을 다시 해야 했는데 프로젝트가 커지면 커질수록 C++ 의 특성상 몇분에서 수십분 정도는 기다려야 했지만 C# 은 컴파일 속도가 엄청나게 빠르므로 그냥 스크립트를 저장하고 에디터로 오면 짠! 하고 게임을 플레이할 수 있다.

반응형

+ Recent posts