Cube Tossing Game 개발 비하인드
Nov. 5, 2021, 8:57 p.m.
이 게임은 단순히 저의 게임 개발력을 높이기 위해 연습하는 셈 개발한 게임입니다.
게임잼을 진행하는 것처럼 단순한 아이디어에서 출발해 프로덕션에 이르기까지의 과정을 빠르게 해보면서 게임 개발력을 높이고자 했고 10시간이 걸렸습니다.
개발 요약 영상입니다.
이 게임은 아주 단순히 축구공을 리프팅하듯이 떨어지는 큐브를 터치하여 큐브를 떨어지지 않게 유지하는 게임입니다. 큐브를 한번 누를 때 마다 점수가 1점 올라가며, 중간에 나타나는 아이템을 먹으면 큐브가 한 개 늘어나거나 없어지기도 합니다.
여기에 체력 요소를 추가했습니다. 처음에 총 2개의 체력을 가지고 시작합니다. 큐브가 땅에 떨어지면 체력을 1 잃고, 혹은 큐브가 없는 빈 공간을 터치해도 체력을 1 잃습니다. 이렇게 하여 적절한 난이도를 유지하였고, 또한 땅에 현재 체력에 따라 색이 달라지는 보호막 형태를 만들어 체력이 떨어지는 것을 보호막이 깨지는 듯한 시각적 효과를 주어 직관성을 유지하였어요.
배경은 그라데이션 skybox를 사용하였고, 기본적인 shader는 flat tool kit을 사용하여 깔끔한 색상이 나오도록 하였답니다.
코딩적인 내용을 적자면 이 게임을 개발하는 데 있어서 관건이 있다면 아래로 정리해 볼 수 있습니다.
- 큐브를 터치했을 때 위로 튕기게 하는 것
- 큐브를 잘못 터치했을 때 체력 감소
- 큐브가 땅에 닿았을 때 체력 감소
먼저 큐브를 터치했을 때 위로 튕기게 하는 것은 Rigidbody의 AddForce를 이용하였습니다. 이 때 힘의 방향은 큐브의 중심점으로부터 터치한 포인트의 벡터를 구해 이 벡터의 x축성분을 구한 다음 여기에 위로 가는 y축 성분을 더해 다시 Normalize하고 정해진 상수를 곱하는 식으로 하였습니다. 이렇게 해야 실제로 큐브를 튕기는 느낌이 나겠죠?
또한 큐브를 터치하거나 잘못 터치했음을 인식하는 것은 유니티 내장 함수 중에 스크린 터치 좌표를 받아 유니티 공간상의 좌표로 변환하는 함수가 있는데 이를 사용 하려고 했으나 정확성이 너무 떨어져서 직접 함수를 만들어서 사용했습니다. 이와 관련된 사항은 추가적으로 블로그에 작성하려고 합니다.
마지막으로 큐브가 땅에 닿았을 때는 Collider간의 충돌판정을 통해 하였습니다. OnCollisionEnter를 사용하는 것이 좋습니다.
게임 아이디어를 생각하고 플레이스토어에 출시하기까지 10시간 정도 걸린 것 같은데 한번 하고나니까 이 개발에 있어서 추진력? 도 생긴것 같고 능력적인 향상이 생긴 기분입니다.
앞으로도 한달에 한번씩은 이런 게임개발의 날을 잡아서 간단한 게임을 만들며 개발 능력을 향상시켜보는 것도 나쁘지 않은 것 같습니다. 물론 이 글을 쓰는 시점은 군대에 있으므로 불가능하겠지만요