일단 가치에 대한 뒷이야긴 접어두고,
게임을 혼자서 만들어 볼때도 화분갈이 처럼 단계가 중요해.
나는 옛날 게임을 하고 자라서, 꽤 높은 추상 단계의 게임을 즐겼던 것 같아.
요즘 게임들은 너무 구체적이지. 엔진만 동원하면 표현 못할게 없을 지경이니 말야.
이를테면,
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인용 바둑게임을 만들어보고 하는 식으로
자기가 익힌 자료구조나 알고리즘 하나로 어떤 게임을 만들 수 있을지 생각해 보면,
보다 재밌게 진행할 수 있어.
뱀 방향이란 단어가 제멋대로 바껴있다. ㅋㅋ
좀 웃기네 드렉션을 못쓰다니.
요즘 게임만드는애들 반성해라
땅따먹기 속 몬스터의 알고리즘은 어떤거?
랜덤과 추적이지. 2개 이상의 상태를 두는거야.
코드를 적으니 짤리네, 몬스터의 가로 세로 좌표를 플레이어 좌표와 비교해 적으면 증가 크면 감소 시키면 결국, 같아지겠지.
그게 추적이고, 랜덤은, 거의 제자리에서 뱅글뱅글 돌게 될테니, 방향을 결정할때, 방향 벡터의 각도를 조금씩 돌린다든지, 일정 텀을 두어 하나의 방향으로 이동하게 하는거지. 그것두, 전체 무브먼트의 수를 하나로 박고 dx, dy 만 랜덤으로 만들어서 크게든 작게든 고정스탭으로 움직이게 하면 막 속도가 변하는것 처럼 보이겠지?
고전 형태의 땅따먹기 게임의 몬스터는 대각선들이었어. 그 말은, 수직 수평의 선분들과 대각선의 충돌검색 알고리즘이 바탕이란걸 알 수 있지.
땅따먹기는 한번만들어보고싶네 ㅋㅋㅋㅋㅋ
그렇다면 두 선분이 너무 큰 폭으로 움직이면 마치 그 사이 시간 텀에서 부딪혔는데 시작과 끝의 동작 사이에 중간 교차 판단 보정이 없어 뚫고 나가는것 처럼 보일 수 있으니, 선분의 위치 변화율을 작게 해서, 사선들이 모핑하는것 처럼 보이게 한거지. 따지고 보면 보간계산이 귀찮았을 뿐.
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.