인디 게임 개발자의 와장창 코딩일기 < 테트리스 1편 >
안녕하세요! 인디 게임을 개밣는 심리학도 라메드 입니다.
( 네 개밣는 입니다.. 오늘은 '개발하는'보다는 개밣는이 어울려 보여서 오타를 냅뒀습니다. )
어제 여자친구와 즐거운 시간을 보내고 .. 집에서 멍때리고 있던 중 ,
과연 내가 게임 개발자라고 할 수 있는가.. 에 대한 고찰이 시작되었습니다.
(사실은 그냥 심심했습니다..)
고뇌의 끝은 실천이라고 했던가요.
원래 굴러먹던(?) 성격대로 부딪혀 보기로 합니다.
그래서, 명작 게임을 하나씩 모작해 보면서
코딩 실력을 길러보기로 했습니다!
( 사실 노는 겁니다. )
그래서 !!
오늘 만들 게임 : 테트리스 (Tetris)
참고 자료 :
(출처 유튜브)
네, 테트리스 입니다. 사실 설명이 필요한가 싶을 정도로 테트리스는 고전 명작이라고 할 수 있습니다.
저 어릴 때는 서비스하는 한국 테트리스도 많았는데, 제가 알기로는
저작권 크리티컬을 맞고 물리침을 당했습니다.
비슷한 게임으로는 뿌요뿌요가 있어요.
준비물
Unity3D
VisualStudio Code
유니티는 게임 개발 엔진이고, VS code는 코딩을 도와줍니다. (IDE)
그럼 본격적인 개발에 들어가 보겠습니다.
1. 간단하게 만들자.
단순화
우선 테트리스의 블록 하나 하나는 사실 그냥 상자입니다.
즉, 있고 / 없고 라는 두가지 데이터만 가져도 되는 객체 입니다.
거기에 몇 가지 추가를 한다면, 지금 이 블록이 살아있는지 (조작이 가능한지 )
또 이 블록의 위치는 어디인지 정도가 되겠습니다.
위 4 문장을 코딩으로 하면 다음과 같습니다.
이렇게 Mark 라는 이름의 블록 또는 빈칸(블록이 없는 빈 공간)이 되어줄 객체가 생겼습니다!
2. 보여주자.
위의 데이터를 이제 보여주는 스크립트를 짜줍니다.
이름은 ShowManager로 했습니다.
코드 :
복잡해 보이지만,
크게 함수2개로 이루어진 간단한 코드입니다.
1번 함수 InitBLockByData() 은 처음에 블록을 생성해줍니다.
(Init = initiate의 약자입니다. )
2번 함수 ShowBlockByData()은 생성된 블록의 켜지고 꺼짐 ( 블록이 있고 없음) 을
반영해줍니다. 매 프레임마다 20~40회 까지 반영합니다 (Update문)<- 사실 이럴 필요 없죠 (..)
3. 근데 전 블록을 떨어트리고 싶어요
네 기반작업이 거의다 되었습니다. 이제 블록을 떨어트리는 것을 구현할 차례 입니다 !
우선 새 스크립트 블록 매니져를 짜 줍니다.
위의 3줄은 블록 빈공간을 위한 것이고,
아래 한 줄은 새로 떨어트릴 블록을 위한 것입니다.
내부에 있는 함수 중엔 ,
좌표를 입력하면 그 블록을 활성화 시켜주는 녀석과,
우선 테스트 용으로 네모 모양의 블록을 만들어주는 녀석이 있습니다.
이런 저런 함수들의 도움으로 !
우선 떨어지는 것은 구현이 되었습니다!
결과물
뭔가 부끄럽기 짝이 없군요..
평소에 물리엔진이나 간단한 액션 게임만 만들다가
알고리즘이 들어가는 게임을 만나니 호되게 당한 느낌입니다.
다음에는 테트리스의 충돌판정(아래 블럭이 있을 경우 더이상 내려가지 않음) 을 구현하고,
좌우 이동과
대망의 블록 돌리기! 를 구현하고 나면
대강 마무리가 될 것 같습니다.
읽어주셔서 감사합니다.
가끔 이런 토이 프로젝트로 뭔가 만들고 하면 재밌더라고요 ㅋㅋ
토이프로젝트라고 하는군요 ㅋㅋㅋ 재밌는 시간 보냈습니다!
오 신기합니다!! 한번도 보지 못한 것이네요!
저도 요즘 (하라는 일은 안 하고) 취미로 비주얼 노벨 게임을 만드려다가 아예 엔진부터 만들고 있는데 포스팅 해보고 싶어지네요.
유니티 사용하셨네요. 평소에 개발에 관심이 많으신가봐요
결과물을 만들어냈다는 것만으로도
충분하다고 봅니다.
잘 보고 가요
@lhamed님
https://steemkr.com/sevendaybnwchallenge/@sindoja/7-day-black-and-white-photo-challenge-sindoja-day5
관련 행사중인데
제가 님을 지목했거든요 괜찮으시다면 참여가능하신지요?
참여는 자발입니다.
사정이 되신다면 님도 해보셨으면 좋겠다고 생각해서요
헛 이 글을 이제야 봤네요 ㅠ_ㅠ!!! 죄송합니다.
오 대단하세요~ 신기하네요~^^
와...이것이 진짜 전문가다...라는 생각이 드네요.......
진짜 전문가이십니다...ㅎㅎㅎ 연휴 잘보내셨나요
저는 오늘 구세군을 위한 길거리 공연을 하고왔습니당 ㅎㅎ
동영상 포스팅했으니 심심할떄 오셔서 구경하고 가세용~
(보팅은 안하셔도됩니당~)
저렇게 만드는군요 ! 신기하네요 .. 다음포스팅 기대됩니다 ㅎㅎ
멋지시네요~+_+ 저도 유니티 공부해보려고요! ㅎㅎ