안녕하세요 FPS / TPS맵 4가지를 게시해본 제작자입니다.
(최근엔 테란 디펜스 워즈 ㅎ)
저도 님처럼(?) 에디터 처음 접하고 암것도 모른 시절에 FPS게임을 무지 만들고 싶었습니다.
저의 첫맵이 FPS 끝맵도 FPS ㅎㅎ
스타2가 나오면 FPS게임이 어느정도 주를 이룰거라 예상했는데, FPS 잘 만드는 사람도 많지는 않은 것 같고(?), 또 반응속도 문제등 여러가지 문제로 이 분야게임이 별로 없어서 아쉽긴합니다.ㅠ
뭐, 예전에 TPS게임중 상위권에 오래 간게 '벨시르 퀘스트' 정도만 기억합니다.
음, 이 글은 갤럭시 Q&A에 질문 올리신 '인피니티소닉' 님 뿐만아니라 나중에 관심있는 누군가 검색해서 볼 수도 있기 때문에 어느정도 간단하게 언저리는 해보겠습니다.
1. 먼저 카메라가 유닛을 따라가야하는데 그 함수가 있습니다. 그리고 데이터-카메라 에서 시간차 없게 바짝 붙어서 가게 수정가능합니다.
2. FPS처럼 카메라 모드를 변경하는 함수가 있습니다. 카메라 마우스 고정 등 여러 함수를 써야 카메라부분이 끝납니다. 특히 카메라가 맵 전체를 보면 랙이 심해지므로 카메라 절단면을 줄여서 해결해야합니다. 그래서 하늘 배경은 하기 힘드게 되고요.
3. 키보드 반응 이벤트로 WASD를 눌러서 이동하도록 트리거를 짜줍니다. 특히, AD키는 옆으로 이동하는데 이때 옆이라는 것은 내가 보는 카메라 방향과 90도를 이루겠죠 카메라 Z축, Y축의 현재 값을 얻는 함수가 있습니다.
만약 AD키를 방향 전환으로 하신다면 비추입니다. 베틀넷에서는 반응속도 차이로 싱글과 다르게 조작이 매우 불안정합니다. 따라서 방향전환은 마우스로 화면을 돌리는것을 추천합니다.
4. W계속 누르고 있으면 앞으로 계속 가야합니다. 'While'문이 필요할 겁니다. W를 떼면 정지하는데 이때 '트리거 정지' 함수를 쓰면 각 플레이어 마다 트리거를 일일이 만들어야하는 번거로움이 있습니다. 하나의 부울변수를 잘 활용해서 만들수 있습니다.
AD나 WS를 동시에 누를때 A누르다가 D누를때, 같은 키를 빠르게 반복해서 누를때 등 생각보다 여러 버그 요인이 많이 있습니다. 잘 연구하시기 바랍니다.
5. 대부분 카메라 Y, Z회전값의 두가지 인자로 극좌표를 이용해서 탄도식을 만듭니다. 매게변수를 증가시켜 내가 바라보는 방향으로 직선방향으로 나아가면서 적을 검색하고 있으면 데미지 효과를 먹입니다. 이러면 지상과 공중 유닛도 구별해 맞아서 처음엔 매우 신기하긴 합니다.
극좌표로 탄의 x,y,z지점이 있을때 적 유닛의 x', y', z'를 알아내서 두 지점 사이 거리가 어느 이내로 들어오면 타겟팅 되는 방식이죠. 하지만 이것은 많은 문제를 가져옵니다. x', y', z'지점이 유닛 중심의 아니라는점, 유닛 크기가 클때 유닛모양이 구모양이 아니면 부자연 스러운점 등등
6. 특히, 처음하는 자에겐 z'의 값을 얻는게 보통일이 아닙니다. 일단 공중유닛은 쉽게 유닛의 높이 함수를 쓰겠죠. 이렇면 평면의 땅에서는 문제가 없습니다. 언덕이 추가되거나 곡면의 땅에서는 '지점에서의 높이'라는 함수가 필요합니다. 앞의 함수들로 어느정도 식은 해결됩니다.
하지만, z'값은 유닛의 바닥 위치라서 유닛 유형마다 보정값을 추가해 줘야합니다. 이렇게 프로그램이 구현되었는데 버그요인이 있습니다. 매개변수간격이 넓어 검색을 못하는 경우, 구모양 검색이라 정확한 타겟팅 불가 등등
7. 해결책이 있습니다. 이벤트에 유닛 강조됨 유닛 강조 해제됨 이런게 있습니다. 이것은 데이터-유닛-플래그에서 강조표시 할 수 없음 체크를 해제해야 됩니다. 마우스 커서를 모델 위에 얹으면 그 유닛의 반환이 가능합니다. 캠페인 술집에서 유닛에 커서를 대면 흰 테두리가 이 원리랍니다.
이제 감이 오실겁니다.
8. 위 두가지 방법을 중첩하면 더 자연스러운 타겟팅을 구현할 수 있습니다. 총알 궤적 모델이 없으면 밋밋한 게임이 되고, 궤적이 있을 시 유닛에게 직접 공격 효과를 내도록 하면 총알 직선이 유닛쪽으로 빨려가는 어색한 장면이 연출 됩니다.
따라서, 데미지는 유닛 강조됨으로 하시고 시각적 효과는 앞의 탄도식을 추천합니다.
여기까지가 해병 한 마리가 움직이며 원하는 방향으로 총을 쏘는 것을 구현한 것입니다.ㅎ
위의 설명은 결코 FPS 모드로 총쏘는법을 알려주려는 것이 아닙니다. 만약 만들게 되신다면 위의 과정을 겪게 된다는 것을 미리 보여준 것 뿐입니다.
FPS 제작에 관심 있으신 분은 어느정도 도움이 되실 거라 믿습니다.^^
음, 오래전에 제가 한동안 배틀필드를 구현한데면서 '배틀필드 테스트 해주실분'이라고 게시했다 내렸는데 아주 극소수만 했겠지요 ㅎ
전투기 시뮬, 헬리콥터 시뮬, 전차 시뮬, 물리 충돌, 중력까지 다 만들어 봤는데 보통일이 아닙니다 ㅎㅎ 이링크 보시면 알겁니다.
http://www.playxp.com/sc2/galaxy/view.php?article_id=4263337&search=3&search_pos=&q=
http://www.playxp.com/sc2/galaxy/view.php?article_id=3696526&search=3&search_pos=&q=
지금 게시된 외국인의 'Dogfighter' 도 구현 잘해서 저도 놀랬고(이분도 참 미칫네 ㅋㅋ)
제가 마지막으로 말 하고 싶은건 FPS에서 중요한건 조작성이고, 카메라 움직임이 어설프지 않아야합니다.
FPS 제작을 원하시는 분이 있으시다면 환영합니다. 처음에는 힘들지만 나중에는 무궁무진한 게임이 가능합니다.(아 시간이 없는게 문제 ㅠㅠ)
도움이 필요하시면 팁게에 자세한 설명할 의향도 있습니당.
끝까지 읽어주셔서 감사합니당.
음,,, 마지막으로 맵퍼들 화이팅!!