일단 가치에 대한 뒷이야긴 접어두고,

게임을 혼자서 만들어 볼때도 화분갈이 처럼 단계가 중요해.


나는 옛날 게임을 하고 자라서, 꽤 높은 추상 단계의 게임을 즐겼던 것 같아.

요즘 게임들은 너무 구체적이지. 엔진만 동원하면 표현 못할게 없을 지경이니 말야.


이를테면,


snake byte


과일을 먹으면 꼬리가 길어지는 게임.

이 게임의 알고리즘의 핵심은,


int map[MAP_HEIGHT][MAP_WIDTH];

int snake_direction;

int snake_head_x, snake_head_y;

int snake_tail_x, snake_tail_y;

int apple_delay, apple_count;

int apple_x, apple_y;

int goal_x, goal_y;


이거지.

뱀은 map 에 그려진 벽에 머리를 부딪힌다든지 자기 몸통을 물게 되면 죽어.

이로부터 얻을 수 있는 기획의 힌트는, 뱀의 몸은 맵의 벽과 같다는거야.

그리고, 뱀의 모양을 유지하기 위해서, 머리는 조작 방향대로 움직이고,

꼬리는 매번 한칸씩 맵에 그려진 뱀 머리의 이동 방향을 따라간다는거지.

마지 분대 이동시 8번 부분대장(? 맞나)이 분대원들의 발자국을 지우면서 이동하는 것 처럼 말야.

그렇게 기획을 잡으면, 사과를 먹었을때 꼬리를 길어지게 하는게 쉽지.

꼬리한테 apple_delay를 감소시키면서 기다리라고 하면 되니까 : )


다른 예로,


땅따먹기 게임 (원제가 생각 안난다)


흔히 벗기는 야겜으로 많이 포팅되었는데,

직사각 형태의 벽과 이어진 사각형을 그리게 되면, 땅을 얻게 되는거.

야게임에선 그 부분의 벽이 사라지게 되지.

이건 단순히 직각 폴리곤 자르기의 형태지.

가로 선과 세로선의 노드들을 충돌 탐색해서 다각형 모델을 잘라나가는거야.


키보드 입력과 출력을 익혔다면 단순 슈팅게임을 만들어보고,

배열을 익힌다면 벽돌깨기를 구현해보고,

flood fill 을 익혔다면, 2인용 바둑게임을 만들어보고 하는 식으로

자기가 익힌 자료구조나 알고리즘 하나로 어떤 게임을 만들 수 있을지 생각해 보면,

보다 재밌게 진행할 수 있어.