어찌저찌하다가 카탄은 다 뒤집어 엎어버리고(네트워크 하는 놈 때문에 힝!)
2D레이싱 게임을 만들기로 하였습니다.
예전에 2D슈팅게임을 만들어본 적이 있고, 나름대로 실력을 업그레이드 하였기 때문에 좀 더 업그레이드 해볼려고 해서요.
(예전에는 객체지향을 몰랐지..휴우)
맵을 사용자가 만들어서 그 맵으로 레이싱을 할 수 있게 하는 것을 만들어 보고자 합니다(사실 스테이지 개념으로 만들려는데 한번 쉽게 만들어보고자=_=)
문제는 맵 에디터를 어떻게 만드냐 인데..
나름대로 아이디어를 적어 보았습니다.
1. 전체의 맵을 기억하고 있는 변수 하나를 생성(일단은 비어있겠지요)
2. 맵에 대한 구성이나 그런 것들은 클래스가 관리(RPG쯔구르처럼 조각조각을 붙이는 형식으로 하려구요) 하며 조각조각마다 충돌이나 기타등등의 정보는 각자 가지고 있다.
- 맵을 만들 때 클래스(도로그림)를 끌어다가 지정위치에 넣는것이죠.
3. 맵을 만들어감에 따라 전체맵기억변수에 삽입(위치만 삽입하면 될 듯) 한다.(벡터로 만들면 될 것 같기도 한데-_-;; 이 부분은 좀 더 고민을 해 봐야 할 듯.)
4. 전체맵기억변수에 맵이 저장이 되면 게임을 할 때 전체맵기억변수에 저장된 위치를 불러와서 조각조각 맞춘다.
5. 플레이~
...일단 아이디어는 이렇습니다.
해봐야 알겠지만, 이 글만 봐서도 뭔가 이상하네~~ 라는 생각이 드신다면 조언 부탁드리겠습니다.
한없이 초보라고 무시는 말아주세요-ㅅ-;; 상처 잘받아요(...)
맵의 통행 가능한 경로들을 vector 로 지정하고 이를 이용하여 통행 가능, 통행 불가 등의 플래그를 씌우는 방식.
대충 제가 생각할 때에는 두 가지 방식이 떠오르는데요 일단 전 좌표에 walkable, non-walkable (혹은 이동속도가 느려진다던가 하는 그 좌표만의 고유한 속성) 여부를 마크하는 방식이라면
전 맵의 좌표를 배열로 구성하면 되고 현재 pc 의 캐릭터의 위치도 그 배열 속에서 판별 가능하므로 일단 프로그램은 용이하겠지만 맵의 규모나 셀의 특성 패턴이 많아지면 메모리를 차지하는 용량이
기하 급수적으로 늘어나 버린다는 단점이 있겠고요
벡터 방식은 다소 고차원의 수학적 지식들을 요구하겠지만 -특히 벡터의 내적이라던가 직교 개념등이 반드시 필요하겠지요- 일단 이걸로 맵을 구성하게 된다면
최단경로 찾기 혹은 갈수 없는 곳을 빨리 발견 (주변이 non-walkable 로 둘러싸인 지점의 walkable coordinate) 하는 알고리즘 등을 적용하기는 용이하리라 생각되네요.
스타크래프트 같은경우 유닛의 최단 이동경로 찾기 같은것은 어떻게 구현했을까요? 이런것들을 한번 비교해 보시면서 생각해 보시면 도움이 될 듯 합니다.