playXP

서브 메뉴

Page. 1 / 271 [내 메뉴에 추가]
글쓰기
작성자 MachinemanDW
작성일 2013-08-24 08:58:23 KST 조회 4,106
제목
인피니티소닉님 답글 올릴겸 FPS게임 제작에 대한 저의 생각입니다.

안녕하세요 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 제작을 원하시는 분이 있으시다면 환영합니다. 처음에는 힘들지만 나중에는 무궁무진한 게임이 가능합니다.(아 시간이 없는게 문제 ㅠㅠ)


도움이 필요하시면 팁게에 자세한 설명할 의향도 있습니당.

끝까지 읽어주셔서 감사합니당.

 

음,,, 마지막으로 맵퍼들 화이팅!!

 

 

 

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이콘 크더기 (2013-08-24 09:04:19 KST)
0↑ ↓0
센스 이미지
극좌표로 x,y,z지점이 있을때 적 유닛의 x', y', z'를 알아내서 두 지점 사이 거리가 "어느 이내"로 들어오면 타겟팅 되는 방식이죠. 하지만 이것은 많은 문제를 가져옵니다. x', y', z'지점이 유닛 중심의 아니라는점, 유닛 크기가 클때 유닛모양이 구모양이 아니면 부자연 스러운점 등등

저 어느 이내 의 값을 증가시키면 작은 유닛에 대해서 적중률이 떨어진다거나 그런 건 없으셨나요?
탑뷰로 구현해본적이 있었는데 값을 작게 주면 크기가 큰 유닛은 꼭 중앙쪽만 맞춰야 히트판정이 되고 그래서 많이 힘들었던 기억이... 그렇다고 크게 주면 작은 유닛의 반경이 커지는 느낌을 받아서요.
MachinemanDW (2013-08-24 09:31:26 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
크더기// 님이 칭하신 "어느 이내"의 값은 x,y,z와 x',y',z' 총알과 유닛사이 거리입니다. 값을 증가시면 유닛이 커지는 효과가 되서 타켓팅이 더 잘되죠.
만약 이 값이 너무 작다면 유닛을 무시하고 지나가버리는 경우가 있습니다. 따라서 값을 잘 설정하거나 검색 영역을 곂치도록 해야합니다. 물론 검색 직후 '중단' 너어주시고요.

저도 물론 님처럼 애를 먹은 적이 있었습니다.
저는 그때 매 탄도 중심의 적당히 넓은 영역(반지름 3정도?) 의 유닛을 모두 반환하고
각 유닛의 반경값을 얻어서 반경이 큰 유닛은 작은 유닛보다 조금 먼 거리에서도 히트 판정 나도록 해결 했습니다. 당연히 젤 가까운 유닛만요.
즉 유닛 반경에 따라 "어느 이내"라는 정도가 달라지게 한거죠.
이정도도 어느정도 쓸만 했습니다.
아이콘 크더기 (2013-08-24 10:00:48 KST)
0↑ ↓0
센스 이미지
각 유닛의 반경을 얻는 방법...도 있었네요 으휴 멍청!
역시 장인은 뭔가 다르네요 ㄳㄳ
MachinemanDW (2013-08-24 10:36:09 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
ㅎㅎ 장인 ㅋㅋㅋ
MachinemanDW (2013-08-24 10:38:01 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
관심있으신분 언제나 댓글 달아주셔도 됩니다. 몇년이 지나도 가끔 제가 올린글 읽어봅니다.
아이콘 크더기 (2013-08-24 15:49:04 KST)
0↑ ↓0
센스 이미지
혹시 전공이?
MachinemanDW (2013-08-24 20:37:26 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
기계과입니당.
아이콘 크더기 (2013-08-24 21:04:21 KST)
0↑ ↓0
센스 이미지
어쩐지... 그렇군요.
얼음눈물 (2013-08-25 00:08:16 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
MachinemanDW - 헐...역시 님 맵을 잘만드시는 이유가있엇군요 ㅠㅠ. 님 저 누군지 아시죠? 예전에 닉넴 kellan이엇다가 지금은 BreakTime으로 바꾼 그사람임
MachinemanDW (2013-08-25 07:14:27 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
ㅋㅋ ㅎ2ㅇ
아이콘 데이트어라이브 (2013-08-25 14:46:42 KST)
0↑ ↓0
센스 이미지
님 저랑 초기때 서로 맵 테스트 해줬지요
군대는 갔다오신지 ㅋ 그 시절 아이디는
시카였나로 기억하는데.

그때 님 맵하고 지금 님맵 클라스가 다르네오..호호!
아이콘 HighDarkTemplar (2013-08-25 15:00:44 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
FPS 많이 도전해봤는데도 답이 없어보이네요.. 잘 만들어도 아직 반응속도나 총겜인 경우, 차라리 서든같은 게임을 하지 스타를 하진 않는다고 생각하는 사람이 많더군요... 그래도 언젠가는 인정받는 날이 있겠죠
MachinemanDW (2013-08-25 19:48:43 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
데이트어라이브 // 시카님 기억하죠 ㅋㅋ 그때 님이 저의 <죽음의 눈치게임>테스트 해주셨었낭? ㅎ
MachinemanDW (2013-08-25 19:51:31 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
HighDarkTemplar // 아직 블리자드에서 반응속도 빠르게 할필요는 없다고 밝힌 뎃글을 본적있는데, 뭐 나중에 인터넷 발달하고 블자가 여유있을 때 더 낳아지도록 패치 해주겠죠 뭐 ㅠ
ㅇㄴㄹㄴㅁ (2013-08-25 20:44:49 KST) - 175.125.xxx.138
0↑ ↓0
센스 이미지를 등록해 주세요
근데 정작 인피니티소닉 본인은 여기에 관심조차 안보임 ㅋㅋ
MachinemanDW (2013-08-25 21:02:15 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ열맵 중이신가??
과일장수 (2013-10-22 22:53:18 KST) - 121.147.xxx.153
0↑ ↓0
센스 이미지를 등록해 주세요
저도 FPS맵을 제작하고 있는데요
다양한거 알려주시면 안될까요

네이버아이디:dleorjs112
MachinemanDW (2013-10-25 22:18:01 KST) - 222.117.xxx.118
0↑ ↓0
센스 이미지를 등록해 주세요
dongwon0409@naver.com 으로 메일 보내주세요
네이버는 메일정도만 사용해서;
HoBBang231 (2013-10-28 19:54:53 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
헤헤헤헿헤헤...
그냥 짜져있어야지..
과일장수 (2014-01-02 13:14:33 KST) - 125.136.xxx.196
0↑ ↓0
센스 이미지를 등록해 주세요
최적의 FPS 거리, 높이오프셋은 얼마인가요 ㅠㅠ
초보테란 (2015-03-30 19:22:38 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
다 만들었는데 화면중앙에 에임은 어떻게만즈는지;;
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.