인디 게임 개발자의 와장창 코딩일기 < 테트리스 1편 >

in #kr7 years ago

대문.png

안녕하세요! 인디 게임을 개밣는 심리학도 라메드 입니다.

( 네 개밣는 입니다.. 오늘은 '개발하는'보다는 개밣는이 어울려 보여서 오타를 냅뒀습니다. )

어제 여자친구와 즐거운 시간을 보내고 .. 집에서 멍때리고 있던 중 ,

과연 내가 게임 개발자라고 할 수 있는가.. 에 대한 고찰이 시작되었습니다.

(사실은 그냥 심심했습니다..)

고뇌의 끝은 실천이라고 했던가요.

원래 굴러먹던(?) 성격대로 부딪혀 보기로 합니다.

그래서, 명작 게임을 하나씩 모작해 보면서

코딩 실력을 길러보기로 했습니다!

( 사실 노는 겁니다. )

그래서 !!

오늘 만들 게임 : 테트리스 (Tetris)

참고 자료 :

(출처 유튜브)

네, 테트리스 입니다. 사실 설명이 필요한가 싶을 정도로 테트리스는 고전 명작이라고 할 수 있습니다.

저 어릴 때는 서비스하는 한국 테트리스도 많았는데, 제가 알기로는

저작권 크리티컬을 맞고 물리침을 당했습니다.

비슷한 게임으로는 뿌요뿌요가 있어요.

준비물

Unity3D
스크린샷 2017-12-25 오후 5.02.10.png

VisualStudio Code

스크린샷 2017-12-25 오후 5.02.04.png

유니티는 게임 개발 엔진이고, VS code는 코딩을 도와줍니다. (IDE)

그럼 본격적인 개발에 들어가 보겠습니다.

1. 간단하게 만들자.

단순화

우선 테트리스의 블록 하나 하나는 사실 그냥 상자입니다.

즉, 있고 / 없고 라는 두가지 데이터만 가져도 되는 객체 입니다.

거기에 몇 가지 추가를 한다면, 지금 이 블록이 살아있는지 (조작이 가능한지 )

또 이 블록의 위치는 어디인지 정도가 되겠습니다.

위 4 문장을 코딩으로 하면 다음과 같습니다.

스크린샷 2017-12-25 오후 5.07.50.png

이렇게 Mark 라는 이름의 블록 또는 빈칸(블록이 없는 빈 공간)이 되어줄 객체가 생겼습니다!

2. 보여주자.

위의 데이터를 이제 보여주는 스크립트를 짜줍니다.

이름은 ShowManager로 했습니다.

코드 :

스크린샷 2017-12-25 오후 5.10.35.png

복잡해 보이지만,

크게 함수2개로 이루어진 간단한 코드입니다.

1번 함수 InitBLockByData() 은 처음에 블록을 생성해줍니다.

(Init = initiate의 약자입니다. )

2번 함수 ShowBlockByData()은 생성된 블록의 켜지고 꺼짐 ( 블록이 있고 없음) 을

반영해줍니다. 매 프레임마다 20~40회 까지 반영합니다 (Update문)<- 사실 이럴 필요 없죠 (..)

3. 근데 전 블록을 떨어트리고 싶어요

네 기반작업이 거의다 되었습니다. 이제 블록을 떨어트리는 것을 구현할 차례 입니다 !

우선 새 스크립트 블록 매니져를 짜 줍니다.

스크린샷 2017-12-25 오후 5.14.40.png

위의 3줄은 블록 빈공간을 위한 것이고,

아래 한 줄은 새로 떨어트릴 블록을 위한 것입니다.

내부에 있는 함수 중엔 ,

스크린샷 2017-12-25 오후 5.17.38.png

좌표를 입력하면 그 블록을 활성화 시켜주는 녀석과,

스크린샷 2017-12-25 오후 5.17.44.png

우선 테스트 용으로 네모 모양의 블록을 만들어주는 녀석이 있습니다.

스크린샷 2017-12-25 오후 5.22.03.png

이런 저런 함수들의 도움으로 !

우선 떨어지는 것은 구현이 되었습니다!

결과물

tetris_1.gif

뭔가 부끄럽기 짝이 없군요..

평소에 물리엔진이나 간단한 액션 게임만 만들다가

알고리즘이 들어가는 게임을 만나니 호되게 당한 느낌입니다.

다음에는 테트리스의 충돌판정(아래 블럭이 있을 경우 더이상 내려가지 않음) 을 구현하고,

좌우 이동과

대망의 블록 돌리기! 를 구현하고 나면

대강 마무리가 될 것 같습니다.

읽어주셔서 감사합니다.

Sort:  

가끔 이런 토이 프로젝트로 뭔가 만들고 하면 재밌더라고요 ㅋㅋ

토이프로젝트라고 하는군요 ㅋㅋㅋ 재밌는 시간 보냈습니다!

오 신기합니다!! 한번도 보지 못한 것이네요!

저도 요즘 (하라는 일은 안 하고) 취미로 비주얼 노벨 게임을 만드려다가 아예 엔진부터 만들고 있는데 포스팅 해보고 싶어지네요.

유니티 사용하셨네요. 평소에 개발에 관심이 많으신가봐요

결과물을 만들어냈다는 것만으로도
충분하다고 봅니다.

잘 보고 가요

@lhamed
https://steemkr.com/sevendaybnwchallenge/@sindoja/7-day-black-and-white-photo-challenge-sindoja-day5
관련 행사중인데
제가 님을 지목했거든요 괜찮으시다면 참여가능하신지요?

참여는 자발입니다.
사정이 되신다면 님도 해보셨으면 좋겠다고 생각해서요

헛 이 글을 이제야 봤네요 ㅠ_ㅠ!!! 죄송합니다.

오 대단하세요~ 신기하네요~^^

와...이것이 진짜 전문가다...라는 생각이 드네요.......
진짜 전문가이십니다...ㅎㅎㅎ 연휴 잘보내셨나요

저는 오늘 구세군을 위한 길거리 공연을 하고왔습니당 ㅎㅎ
동영상 포스팅했으니 심심할떄 오셔서 구경하고 가세용~
(보팅은 안하셔도됩니당~)

저렇게 만드는군요 ! 신기하네요 .. 다음포스팅 기대됩니다 ㅎㅎ

멋지시네요~+_+ 저도 유니티 공부해보려고요! ㅎㅎ

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.030
BTC 58418.48
ETH 2515.89
USDT 1.00
SBD 2.36