게임을 만들기 위한 시작

게임을 만들기 위한 시작
게임을 만들기 위한 시작

게임을 만들기 위해서는 어떤 것을 공부해야 하는지 알려면 인터넷 검색을 통해 쉽게 할 수 있을 것입니다. 하지만 과거에는 이런 정보의 공급이 부족한 시기였습니다. 그럼 90년대에는 어떻게 게임제작을 했는지 확인할 수 있는 글을 보도록 하겠습니다.

게임의 시작

게임을 제작하려면 일단 무엇부터 시작해야 할까? 우선 이드벤처나 시뮬레이션이나 액션 혹은 RPG 등 중에 어떤 종류의 게임을 만들 것인지를 생각해야 되며 그다음에는 주제 및 줄거리를 생각해야 한다. 물론 처음에는 간단하게 해야 하며 그다음에 천천히 세부적으로 줄거리를 묘사해 나가야 한다. RPG나 어드벤처 게임 같은 경우는 이것만으로도 반 이상이 완성된 것으로 생각해도 좋다. 하지만 줄거리가 그다지 중요시되지 않은 액션 게임은 곧바로 프로그램 제작으로 들어가도 된다. 본 강좌에서는 우선 이러한 액션 게임부터 시작할 예정인데 액션게임 제작에 필요한 테크닉과 이를 파스칼로 구현하는 방법들을 배우는 것만으로도 초심자에게는 상당한 도움이 될 것이다.

줄거리 만들기

액션 게임의 기본 내용은 두말할 것 없이 적을 물리치는 것으로 예를 들면 다음과 같다.

1. 임무

플레이어는 전투기 조종사로 목적지까지 무사히 수송기를 호위하는 임무를 맡았다. 그런데 그 비행 항로는 적의 영공을 지나가야 되므로 당연히 적의 공격을 받게 된다. 따라서 적의 공격으로부터 수송기를 보호해야 한다.

2. 공격

적의 영공 깊숙이 들어갈수록 공격은 더욱 심해진다. 치음에는 대공포화와 미사일이나 탱크의 공격을 받다가 그다음은 전투기의 공격을 받고 나중에는 전투기와 탱크가 함께 공격한다.

3. 보급

플레이어 전투기의 연료와 탄약 및 폭탄은 제한되어 있다. 그러나 이것으로는 임무를 완수하기에 충분치 않다. 그래서 도중에 아군기가 와서 필요한 물품을 보급해 주어야 한다. 기회는 단 한 번이다. 이걸 놓치면 적에게 당한다.

4. 수송기 보호 부분 구체화

공격은 일단 플레이어의 전투기에게 집중되어 있다. 그렇기 때문에 플레이어의 전투기가 수송기 근처에 있거나 같은 방향에 있다면 수송기가 적에게 공격당할 확률이 크다. 따라서 플레이어는 되도록 수송기와 떨어져서 싸워야 하며 그로 인해 적의 목표는 플레이어에게 집중된다. 수송기가 모두 격추되면 플레이어의 임무는 실패이다.

5. 마무리

플레이어가 당하는 경우를 몇 가지 더 늘린다면 다음과 같다. 즉 적기와 부딪히는 경우와 저공으로 비행하다가 지면에 충돌하는 경우나 저공으로 폭격하다 파편에 맞는 경우가 바로 그것이다. 플레이어의 전투기 및 수송기는 각각 5대로 무사히 도착한 수송기의 수는 상금과 관계가 있다. 만일 적이 나타난다면 레이더와 비행기의 데이터베이스가 이를 알려준다.

줄거리 분석 및 캐릭터 구성

플레이어 비행기와 수송기 그리고 급유기와 적 탱크 및 적 전투기와 플레이어가 투하할 폭탄 그리고 플레이어가 발사할 총들부터 적 탱크가 발사할 미사일과 적 전투기가 발사할 미사일 그리고 기타 장식물 등이 등장해야 한다. 기타 장식물은 점수를 올려주는 것들로 적 트럭이나 연료탱크 그리고 건물 등이다. 이런 캐릭터들이 어떤 단계에 걸쳐 등장할지를 생각해야 한다.

제1단계는 시작으로 아무런 공격없이 그냥 비행한다. 제2단계는 탱크의 공격이 있고 제3단계는 전투기의 공격이 있다. 제4단계는 탱크와 전투기의 공격이 같이 진행되고 제5단계는 다시 공격없이 그냥 비행하게 된다. 마지막은 국경을 넘었으므로 제6단계는 기지에 도착해서 게임이 종료된다.

화면 흐름도(display flow chart) 그리기

화면 흐름도는 영화나 CF의 콘티에 해당하는 것으로 프로그램이 완성되었을 경우 그 프로그램을 실행시키면 컴퓨터 화면에서 어떻게 나타날 것인지를 미리 그려보는 것이다. 이 작업을 흐름도를 그린 후에 할 것인지 아니면 그전에 할 것인지는 각각의 취향에 달려있는데 흐름도를 그린 후에 화면 흐름도를 그리기 바란다. 그리고 일반적인 화면 흐름도에는 포함되지 않지만 타이틀 화면 및 기타 화면구성 그리고 등장인물이나 물체의 모양 등도 함께 생각해 두면 편할 것이다.

흐름도 그리기

게임뿐 아니라 모든 프로그램에 있어서 가장 중요하면서도 가장 기초가 되는 것이 바로 이 흐름도로 줄거리와 마찬가지로 처음에는 기본적인 부분만으로 단순하게 구성한 후 차츰 세분화하는 것이 좋다. 물론 이 이상 세분화하는 것도 가능하지만 너무 세분화되면 별다른 의미가 없다. 왜냐하면 가장 세부화된 흐름도는 프로그램 자체와 다를 바가 없기 때문이다. 그림을 보면 순전히 조건분기로 채워져 있다시피 해 예상과는 달리 구조가 단순함을 알 수 있는데 액션 게임 프로그램은 가정문으로 시작해 가정문으로 끝난다고 해도 과언이 아니다. 흐름도까지 끝났으면 이제 본격적인 프로그래밍에 들어간다.

프로그래밍으로 들어가서

이제 프로그램을 위와 같이 만든다면 그 길이는 대략 어느 징도 될까? 필자의 경험에 의하면 약 1000라인 정도로 이 정도면 누구나가 쉽게 만들 수 있을 것이다. 파스칼의 장점은 바로 여기에 있는데 파스칼에선 긴 프로그램을 잘게 쪼개 여러 개의 자그마한 프로그램으로 나눌 수 있다. 위의 프로그램을 예를 들면 시작할 때 타이틀을 보여 주는 프로그램과 점수를 계산해 주는 프로그램 및 수송기를 움직이는 프로그램 또는 발사 기능을 담당하는 프로그램과 마지막으로 적전 투기를 움직이는 프로그램 등으로 나눌 수 있다. 그리고 그 프로그램 중에서도 긴 프로그램이 있다면 또다시 쪼개서 더 작은 프로그램으로 나누면 된다. 이런 식으로 여러 개로 나누어 각각의 프로그램을 작성한 뒤 이를 나중에 합치면 된다. 이러한 작은 프로그램들을 파스칼에선 부프로그램이라고 부른다. 그러므로 프로그램의 길이는 파스칼에선 전혀 문제가 되지 않는다. 프로그램은 본체부터 짜기 시작한다. 이때 필요한 부프로그램이 이미 다 만들어져 있는 것으로 가정하고 프로그램을 전개해 나가겠다. 어느 프로그램에나 다 해당되는 얘기겠지만 이때에도 프로그램의 중심이 되는 부분을 먼저 작성하고 시작과 끝에 등장하는 타이틀이나 음악 같은 겉치레는 되도록 뒤로 미루도록 한다.

이상과 같이 세분화했으면 무엇이 여기서 중심 부분인가를 판단하고 그 부분을 다시 구체화한다. 마찬가지로 다른 부분은 뒤로 미룬다. 물론 구체화할 부분은 여기서는 Repeat Until 부분이 된다. 이상에서 보았듯이 프로그램을 만들 때 필요한 프로시듀어라고 불리는 단계 또는 절차라는 뜻의 용어를 사용하는데 이때 변수나 상수 등의 이름은 우리가 보았을 때 그것이 무엇과 관련되었는가를 금방 알 수 있도록 지정해 주는 것이 좋다. 위 프로그램에서 MyPlane 이 그 좋은 예이다. 이렇게 붙여진 이름들은 단순한 이름으로써만이 아니라 커맨드문의 구실까지 하게 된다. 터보 파스칼은 베이직 같은 인터프리터가 아니므로 한계 내에서는 길이 같은 것을 신경 쓰지 않아도 된다. 그리고 세분화 과정에서 나타나는 변수들은 리스트를 만들어 그때그때 기록해 두는 것이 좋다. 계속해서 이러한 방법으로 구체화해 나가되 적당한 선에서 끝낸다. 앞서도 설명했듯이 프로그램이 너무 길고 복잡해지는 것을 피하기 위해 이를 여러 개의 부프로그램으로 나눠야 하므로 흐름도에 따라 프로시듀어의 이름 정도만 적으면 된다. 그다음에 이러한 프로시듀어를 하나하나 만들어나가면 된다. 프로시듀어도 하나의 프로그램이므로 프로시듀어를 만드는 과정 또한 위와 마찬가지다. 만일 이것이 어려우면 다시 프로시듀어 이름만 적고 나와 나중에 그 프로시듀어를 만들어 주민 된다. 중요한 프로시듀어는 다음과 같다.

GetShape : 캐릭터의 패턴과 관련된 루틴

MoveMyPlane : 플레이어 비행기를 움직이는 루틴

MoveTrans : 수송기를 움직이는 루틴

MoveEnemyJet : 적 전투기를 움직 이는 루틴

MoveOiler : 급유기를 움직이는 루틴

MyGun : 기관총 발사 루틴

MyBomb : 폭탄투하 루틴

EnemyMissile : 적 탱크 미사일 발사 루틴

EnemyGun : 적 전투기 기관총 발사 루틴

MyCrash : 플레이어 비행기 추락 루틴

EnemyCrash : 적 전투기 추락 루틴

이렇게 해서 하나의 게임이 만들어진다. 물론 파스칼 컴파일러와 에디터만 가지고 게임이 다 만들어지는 것은 아니다. 도중에 폰트 에디터로 캐릭터의 모양을 디자인해야 하고 그래픽 프로그램으로 패널이나 배경이나 타이를 화면 등을 그려 야 하는 등의 작업이 필요하다.

게임의 제작 단계는 매우 복잡해서 단순하게 글 하나로 해결이 가능하지는 않습니다. 하지만 기초적인 개요와 게임을 제작할 때 어떤 부분들을 생각해야 하는지 정말 간략하게 살펴볼 수 있는 좋은 글인 것 같습니다. 앞으로도 비슷한 류의 글을 연재하도록 하겠습니다.

Leave a Comment