아방스 칼럼


아마 저같은 프로그램 완전 초보자를 위한 유니티 3D에 대한 처음이자 마지막 공부법 입니다.


유니티 3D란 ?


사이트 링크 : http://unity3d.com/ 

스크린샷 2012-05-24 오후 12.50.57.png



위와같은 3D 게임 엔진 입니다. 


언어는 Javascript와 C#등을 사용하며 접근성이 매우 쉽고 현재 게임이 돌아가는 대부분의 하드웨어 플랫폼을 지원한다는 매력이 있습니다.


게임 하나를 만들면 원하면 언제든 IOS, Android, X-BOX, PlatStation, Windows (32bit / 64bit), OSX (MAC) 등의 게임을 뽑아낼수 있는 정말 

큰 장점을 갖고 있죠.


하지만 정말 가장 큰 장점은 프로그래머가 아니라도 게임 코딩을 할 수 있는 정말 쉬운 접근성에 요즘 공부를 하시는 분들이 많아 번역된 책이 

꽤 나왔기 때문에 독학이 가능하다는 것이죠.

물론 게임 엔진을 익힐때 까지 무한정 사용할 수 있는 PC와 웹버전 게임만 만 빌드 사용할 수 있는 무료버전이 있어서 공부에 더욱 부담이 없습니다. (다 만들어서 팔더라도 엔진 자체가 저렴하기 때문에 큰 부담이 되지 않죠. ^^ 물론...간단한 PC패키지게임을 개발하는 아마추어 분들은 그냥 무료 엔진이라 보시면 됩니다. 온라인은 잘 모르고 관심도 없으니... 따로 알아보시기 바랍니다.(전 온라인 게임 자체를 싫어해서...))


서론은 여기까지 하고 공부를 하고 싶은데 정말 시작부터 감이 안오시는 완전 초보분들을 위해 조그마한 가이드를 써봅니다.


잘 아셔야 하는게 제가 지금부터 쓰는 가이드는 SRPG입니다. 

(간단한 슈팅게임이나 퍼즐게임은 대충 아무 책이나 사셔도 대부분 잘 나와있습니다.)


1. 게임 엔진에 대한 두려움에 대한 제거 

유니티 코리아 링크 : http://korea.unity3d.com/ 

위 사이트는 유니티 3D의 국내 사이트 입니다. 

이곳에 "자료실" -> "유니티강의" 로 가시면 동영상 강의가 있습니다.

5분여 짜리 강의가 여러개 있으니 한번 쭉 틀오놓고 보시기 바랍니다. 

(솔직히 다 봐도 1시간 조금 넘는 분량입니다.  관심이 있으시면 이 정도 보셔도 되겠죠?^^;)


2. 첫번째 책의 선택 

동영상 강의도 봤겠다 이제 슬슬 게임을 만들어보고 싶지만, 여전히 프로그램은 잘 모르겠다 하시는 분들에게 추천 드리는 책입니다.

(지금부터 만들 게임은 2D SRPG입니다.)

201112160002.jpg

"Unity 3 game development : 기능별 집중 구현을 통한 유니티 게임 개발" 이란 책이 있습니다.

일단 이 책의 1장 게임을 그냥 따라 만듭니다. (책 뒤에 중급을 위한 어쩌고 써있는데 무시하시기 바랍니다. ^^)

해본 결과 이책의 장점은 1장에 3D 엔진에서 2D게임을 만드는 기초를 알려줍니다. 

이부분은 상당히 중요합니다. 제가 산 책 중에 가장 따라하기 쉬운 1장에서 2D게임 기초를 알려주는 책은 이 책밖에 없더군요.

(그리고 예제 소스에 오타가 없습니다. 초보자는 오타가 나서 오류가 뜨면 두려움에 몸을 떨기 마련이기에 이부분은 상당히 중요합니다.=..=)


1장을 다 만드셨으면 2장은... 음 일단 넘기시고 다음 책으로 갑니다.(헉!... 낭비일 수도 있겠지만 전 목적없는 예제에는 관심이 없는 성격이라 말이죠 ...)


3. 두번째 책의 선택

2011F1073797.jpg

"Unity 3 Blueprint 한국어판 : 4가지 실전 게임으로 배우는 유니티 프로그래밍"이란 책이 있습니다.

사실 이책은 어떤 의미에서 대단한 책입니다.

초보자에게 공부에 대한 사고 방식을 바꿔주는 엄청난 책이죠.


이책은 ... 예제에 오타가 있습니다! 

오타 뿐만이 아니라 구조상 버그도 존재하죠. 

이 책의 예제를 만들어 보며 느낀점은 완전 초보분들은 '이책부터 시작하면 피곤할 수 있겠구나.' 입니다.


하지만 이 책은 한번쯤 작은 게임을 만든 초보분들에게는 정말 좋은 책입니다.

오타와 버그의 수정 범위가 매우 작고 못고칠 수준이 아니라 간단한 버그 메세지를 익힐때 매우 좋습니다.

어짜피 게임 제작은 버그와의 싸움입니다. 너무 이부분을 깨끗하게 넘어가도 나중에 고생하게 되죠.

그래서 위에 1개의 예제를 해보고 이책으로 넘어 오시면 적응이 가능합니다.

 

그리고 정말 큰 장점은 예제코드들의 다양한 방법들을 하나씩 하나씩 꼼꼼히 알려줍니다.

이 부분도 초보자에게는 매우 중요합니다. 

예를 들어 i=i+1; 이 코드와 i++; 이 두가지 수식은 같은 의미입니다. i라는 변수를 1씩 증가 시킨다는 의미이죠.

물론 이런 부분은 어느책에도 존재하지만 이 책에는 이 같은 같은 의미의 다른 표현법을 하나씩 하나씩 던져줍니다.

초보자에게는 단비와도 같죠.


그리고 1번 예제에 타일 클릭에 대한 배열 예제가 들어갑니다. 

이 부분도 중요한데 SRPG게임은 변수가 아닌 배열의 집합이라 봐도 무방할 정도로 배열을 많이 사용합니다.

바닥 이동도 타일 이동이기 때문에 배열값을 마우스 클릭으로 가져오는 부분은 엄청나게 중요하죠.

이 책이 마음에 드는 이유도 여기에 있습니다. 


! 초보자에게는 항상 책의 1장이 중요합니다. 책의 1장이란 가장 쉽고 이해하기 편한 예제가 나오는데 그 부분에 원하는 지식이 나오는 것은 

배움의 시간이 단축되기 때문에 초보자에게는 엄청난 매력이죠.


열심히 예제를 따라하며 2번째 예제까지 만듭니다.

! 3번째 게임도 중요한 WayPoint가 있지만 ... SRPG 에는 배열에 이동경로를 넣는 부분 이외에는 별 큰 메리트가 없습니다.

  2번째 게임까지 만드셨으면 그냥 읽어만 보셔도 됩니다. ^^;


4. SRPG 게임 만들기 시작

여기까지 작업한 3개의 게임 코딩을 어느정도 이해하셨다면 SRPG를 만들기 시작하셔도 좋습니다. 

코드를 조금 잊어버렸어도 책을 찾아보면 되니까 겁먹지 마시고 시작합니다. 

(물론 RPG에 많이 나오는 대화와 저장 문제가 있지만 이 부분은 다른 책에 있으니 일단 빠진 부분 공부가 우선입니다. ^^)


5. 책이 나오지 않은 부분에서 막히다! 

사실 프로젝트를 만들기 위해 폴더를 정리하고 스크립트를 쓰기 시작하면 초장부터 막힙니다.

SRPG의 기초는 타일 배경부터 만들어야 하는데 1차원 배열 밖에 배운것이 없기 때문이죠.

그래서 여기다 팁 몇개를 적어 드리겠습니다. 

(프로그램을 해보신 분들은 문제가 아니지만 초보자들은 알아봐야 변수, if, for, print 정도 알고 시작한다 보시면 됩니다.

2차원 배열이란 의미는 "타일 리스트  (X위치, Y위치)"에 값을 넣습니다. 로 생각하시면 쉽습니다.)

이 부분을 모르시면 검색!을 생활화 합시다. ^^ 


2차원 배열의 선언은 다음과 같습니다. 

var 변수명 : String[ , ]; //문자형 배열의 선언 

var 변수명 : int[ , ];  //정수형 배열의 선언

var 변수명 : GameObject[ , ];  //오브젝트형 배열의 선언


6. SRPG 핵심인 시야와 이동거리등 타일의 거리계산.

배경을 타일맵으로 만들었고 캐릭터를 일정 타일에 배치했는데 이동거리 코딩에서 막히시는 분들이 계실듯 싶습니다.

문제는 책에 없기 때문이지요 ㅠ.ㅠ


그래서 이 부분의 이론을 설명 드리겠습니다.


만일 캐릭터의 위치가 (x=3,y=3)인 타일에 위치해 있습니다.

그리고 이 캐릭터의 한턴 이동 거리가 4 입니다.


일단 while문을 이용해 루프를 만듭니다.

while(0 <=이동거리 ){

     반복문

     이동거리 = 이동거리-1;

}

이렇게 하시면 이  안의 반복문이 4번 반복 될 것입니다.

이 부분에는 이제 배경과 같은 사이즈의 2가지의 2차원 배열이 필요합니다.


첫번째 배열은 '이동타일 체크 배열' (문자나 정수형 배열)

두번째는 '이동타일 오브젝트'를 넣어줄 오브젝트 배열 (오브젝트 형 배열)


이제 반복문에 코딩을 시작하도록 하겠습니다.

만약 제일 처음 실행된다면 맵의 캐릭터 위치에 이동타일 체크 배열에 캐릭터 위치는 이동 가능하다고 체크 합니다.


그리고 다음 반복부터 for문을 이용해 '이동타일 체크 배열'을 (0,0)부터 전체를 검색합니다.

검색하다 '이동타일 체크 배열' 검색중 체크된 위치가 걸리면 그 위치의 4방향의 '이동타일 오브젝트 배열'에

(예(x +1,y) (x-1,y)(x,y-1)(x,y+1)) 이동 타일 오브젝트를 생성해줍니다.


주의! 배열 생성시 x나 y에 증가값이 있으면 반드시 배열축의 최대값-1 보다 작아야 합니다.

          배열 생성시 x나 y에 감소값이 있으면 반드시 1보다 커야 합니다.

          이부분을 검사하시는 공식을 if문으로 생성문장 앞에 넣어줍니다.


다시 for문을 이용해 '이동타일 오브젝트 배열'을 (0,0)부터 전체를 검색합니다.

검색하다 오브젝트가 생성되 있으면 그 위치의 '이동타일 체크 배열'에 캐릭터 이동 가능이라고 체크해 줍니다.


나머지를 반복하면 이동 부분이 그려지는 것을 볼 수 있습니다.


7. 그려졌으니 이제 이동 범위 중 이동 못하는 부분을 검사하자.


배경이 그려진 2차원 배열만큼 크기의 1차원 배열을 만듭니다.

1차원 배열의 크기는 X타일 수 * Y타일 수가 되겠죠.


이동 할 수 있는 위치를 배열에 넣습니다.


StageTileSetArray= [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //Creat Stage Map Array
                                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 0 = don't move
                                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 1 = moving ok
                                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 2 = Hero
                                1,1,0,1,1,1,1,1,1,1,1,1,1,1,1, // 3 = Enemy
                                1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,
                                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                                1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
    

위와 같이 넣으시면 됩니다. 1이 이동가능하겠죠 ^^; 

초보자 분들 잘 보시면 1차원 타일을 한번에 값을 넣은 것을 보실 수 있습니다.

눈으로 보기쉽게 끊어서 X,Y를 구분해 놓은 것 뿐이죠.


이제 타일의 2차원 배열값(X, Y)를 값을 갖고 이동가능한지 알 수 있는 식을 준비합니다.


tileSet = (("Y축 타일의 갯수" - Y-1)* "X축 타일의 갯수" ) + (X);
        if(StageTileSetArray[tileSet]==1){

              값이 맞으면 타일 생성

}


이렇게 쓰시면 (X,Y)타일의 값이 1차원 배열에서 몇번째 타일인지 계산할 수 있습니다.


이 부분의 식을  '이동타일 오브젝트 배열'에 타일 생성 부분에 추가 하시면 이동가능한 부분을 검색하실 수 있습니다.


이곳까지 이해하시면 SRPG게임 만드실때 무리가 없으실 겁니다.


이 이후 부터는 결국 배열 검색 과 배열 저장의 싸움입니다. AI도 마찬가지죠.

새롭게 배워야 하는 것은 별로 없습니다.


8. 아직 게임 저장을 모른다...


이 부분은 파일 입출력 부분인데 국내 분이 쓰신 책에 나와있습니다.

201204030002.jpg

"UNITY 3D로 배우는 실전 게임 개발: 자바스크립트와 유니티만 알면 나도 게임 개발자"

이 책의 퍼즐게임 부분에 저장부분이 나와 있습니다.

이 책은 초반에 너무 3D부분을 강조해서 제가 필요없는 부분이 많아 나중에 보게 되더군요.

결국 어느정도 익숙하게 되면 코드만 찾아봐도 대충 이해가 가니... 저장과 안드로이드 빌드를 참고할때 보게된 책입니다. ^^


여기까지 쓰겠습니다. 아마 여기까지 이해 하셨으면 SRPG게임 제작에 크게 막히는 부분은 없으실듯 싶습니다.


(너무 두서없이 써서 이해가 안되신다면 ... OTL...

그럼 게임 개발이 어느 정도 볼만큼 되면 스샷 들고오겠습니다 +.+!)



 

Who's 소프트아이스크림

profile

TeamSoftIcecream (www.tsicgames.com) 팀장

- '물방울 소리' (호러/추리 어드벤쳐) 개발 및 배포 -

- '왕녀와 기사' (판타지 택틱스/SRPG) 개발 및 배포 -

- '왕녀와 기사 (아이폰 & 아이패드) 개발 완료 및 판매-

- '왕녀와 기사 2 (모바일) 개발 중 -

Comment '13'
  • ?
    TheEK 2012.05.24 14:54
    오오오오 ... 언어/프로그래밍을 배우고 응용해야하는 저로서는 가뭄의 단비같은 프로그램이군요 !!

    적절한 설명/가이드/조언에 무한감사 드립니다~ !!
  • profile
    소프트아이스크림 2012.05.24 15:47
    도움이 되셨으면 좋겠습니다 ^^
  • ?
    소프트아이스크림님 축하합니다.^^ 2012.05.24 15:47
    포인트 팡팡!에 당첨되셨습니다.
    소프트아이스크림님은 14포인트를 보너스로 받으셨습니다.
  • profile
    습작 2012.05.24 15:57

    강좌게시판의 강좌나 RPG 연구실에 연재로 넣어주시는 것도 좋을 것 같은 내용이네요.

    [소프트아이스크림의 Unity3D SRPG 개발일지] 좋다!

  • profile
    소프트아이스크림 2012.05.24 16:50
    사실 유니티 소모임 추진이 실패함에 따라 이전 계획을 마무리 하지는 의미의 글입니다.
    본격적으로 코딩 들어가면 또 자주 못와서 글쓸 시간이 없어서 말이죠...
    이번 개발 마무리 되면 생각해 봐야 겠군요 ㅎㅎㅎ
  • profile
    은색바람 2012.05.24 22:36
    3d 게임 엔진 제작 강좌 빨리 나오면 좋겠네요.ㅎㅎ
  • profile
    하늘바라KSND 2012.05.25 00:11
    기타강봐 쪽도 괜찮을 것 같고요..ㅎㅎ
    화이팅!
  • ?
    ㅁㄴㅇㅂㅈㄷ 2012.05.27 15:52

    소프트아이스크림님,

    유니티도 알만툴처럼 게임 만드는데 필요한 기능들 미리 다 짜놓으면
    알만툴처럼 프로그래밍 지식 전무해도 게임제작에 쉽게 접근할 수 있는 환경 만들 수 있을까요?



  • ?
    TheEK 2012.05.27 16:25
    모든 게임 제작에 있어서 그런건 필 수 입니다.

    단지, Java와 c#등등으로 어떻게 구축하냐가 문제인거죠
  • profile
    소프트아이스크림 2012.05.27 19:11
    가능 합니다.
    저도 그런부분을 고려해서 코딩을 하고 있죠.
    게임을 전혀 못만들어 보신 분들에게 알만툴이 좋은 점은 어떻게 구조를 짜야 하는지 초보자에게 많은 기능을 알려준다는 것입니다.
    알만툴의 기초 (스크립트 기초를 이야기하는것이 아닙니다.눈에 보이는 게임의 내부 시스템 구조를 말하는 것이죠.)를 한번 접해보신다음
    공부하시면 금방 익숙해지실 수 있습니다.
    그리고 공부하다보면 유니티 게임엔진이 알만툴 만큼 유저 접근성이 쉽다고 느끼실 겁니다. ^^
  • ?
    소프트아이스크림님 축하합니다.^^ 2012.05.27 19:11
    포인트 팡팡!에 당첨되셨습니다.
    소프트아이스크림님은 13포인트를 보너스로 받으셨습니다.
  • ?
    코르뉴 2013.02.16 17:40
    유니티를 쓰시는분이 여기 또 계시는군요 ㅎㅎ
    서울에 대학교랑 연계해서 유니티 강좌가 있다던데 전역 날짜랑 갈려서 못 듣네요..
    이런 분들과는 가끔 오프로도 만나면서 같이 정보 공유하면 좋을것 같은데 말이죠.
    Unity 3 Blueprint는 저도 그냥 집히는대로 산거지만 정말 괜찮은 책 같습니다.
  • profile
    소프트아이스크림 2013.02.17 07:52
    ^^ 반갑습니다.
    유니티를 공부하시나 보군요.
    오프라인 강좌보다는 필요한 부분 위주로 QNA 찾아가며 게임을 만들고 있죠.
    이번 게임 개발을 끝내면 아방스에 유니티 쪽을 좀 신경 쓸 생각인데 같이 하셨으면 좋겠네요.

List of Articles
분류 제목 글쓴이 날짜 조회 수
공   지 칼럼 게시판 이용 안내 6 습작 2012.07.09 13970
스크립트이야기 습작의 스크립트 이야기 : 번외편 - 1편 : 스크립트로 보는 알만툴 4 file 습작 2012.06.06 4868
스크립트이야기 습작의 스크립트 이야기 : 자작스크립트 이야기 - 2편 : Etude87_Map_Remember 6 습작 2012.06.05 5176
스크립트이야기 습작의 스크립트 이야기 : 자작스크립트 이야기 - 1편 : Etude87_Variables 1 습작 2012.06.03 3272
단   편 유니티 3D 공부법 (2D 턴방식 SRPG 기준 입니다. ^^) 13 file 소프트아이스크림 2012.05.24 22089
스크립트이야기 습작의 스크립트 이야기 : ABS를 말하다 - 1편 : Vlad ABS 2 습작 2012.05.17 4096
스크립트이야기 습작의 스크립트 이야기 : 소개글 & 목차 6 습작 2012.05.12 4416
게임실황살피기 습작의 게임실황 살피기 : 소개글 & 목차 습작 2012.05.02 2788
단   편 언어들에 대한 잡설와 OOP에 대한 개요 2 에돌이 2011.10.09 2070
단   편 인디 게임 개발에 도움이 될만한 자료 2 에돌이 2011.10.09 3317
자 유 연 재 국어 공부 RPG에 적용하기 2.인물 설정 4 걸인소년 2008.03.13 3569
자 유 연 재 국어 공부 RPG에 적용하기 1. 주제 설정. 7 걸인소년 2008.03.10 3760
자 유 연 재 [꿈꾸는소년의 스토리강좌]RPG의 형식과 스토리 관계(1):전통RPG 7 file 꿈꾸는소년 2008.03.08 3847
자 유 연 재 [꿈꾸는소년의 스토리강좌]RPG라는 게임의 정의와역사(?) 8 꿈꾸는소년 2008.03.07 3822
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9