4. 레이더즈
•
•
•
•
•
논타겟팅 MMORPG
2012년 7월 피망에서 출시, 2013년 9월 서비스 종료
현재 북미, 일본에서 서비스 중
개발 기간 약 5년
개발 인원 초기 10명, 런칭시 약 60명
– 프로그래머는 초기 5명, 런칭시 약 12명, 엔진팀 따로 구성
• 액션성 높은 에픽 몬스터와의 전투가 특징
– 부위 파괴
– 잡아 던지기
– 브레이커블 파츠 무기 등
16. 툴 – 엑셀
• 거의 모든 데이터의 편집 및 관리
–
–
–
–
–
–
–
NPC/몬스터
아이템
크래프팅
상점
랜덤 박스
몬스터 스킬
버프
• 엑셀에서 입력 후 XML로 추출하여 게임에서 사용
• 참조, 매크로, 함수, 피봇 테이블 등 엑셀의 모든 기능을 적극 활용함
19. GameServer
•
•
•
•
게임의 모든 로직을 담당, 실제 유저가 접속하는 서버
게임 로직은 단일 쓰레드
채널 구조로서 프로세스를 늘리는 방식으로 Scale out
논타겟팅의 게임 특색에 맞게 서버 자체가 렌더링하지 않는
커다란 클라이언트라는 개념으로 제작
–
–
–
–
–
풀 3D 베이스
길찾기 : 네비게이션 메쉬 기반
B-tree 기반 충돌
캡슐을 이용한 판정 체크
커맨드 기반 게임 루프
• Tick = 20 ~ 40 (상황에 따라 유동적)
• 허용 가능한 지연 시간 100ms
25. 판정
• 논타겟팅은 서버 관점에선 결국 판정의 방법 차이
– 모든 판정이 광역 판정
• 판정은 모두 순수하게 서버에서 처리한다.
– MORPG와 차이점
– 최적화가 중요하다
• CS 지연 시간을 고려하여 서버에서 50~100ms 먼저 판정한다.
–
–
–
–
하드 유저는 선판정을 민감하게 감지함
선판정을 감추기 위한 여러가지 꼼수(?) 사용
호불호가 있다.
해결 과제
26. 판정
• 모든 판정은 캡슐 대 캡슐 판정으로 일반화
– 처리 연산이 빠르면서 거의 모든 상황에 일반화하여 적용 가능
• 모델의 판정 캡슐
– 인간 크기 이하의 몬스터는 캡슐 한 개로 구성
– 인간보다 큰 몸의 몬스터는 부위마다 캡슐의 조합으로 구성
– 애니메이션에 따라 캡슐의 위치가 변하지는 않고, 누워있을 때 등의 특정 상태
(State)에 따라 캡슐 위치 동기화
• 스킬의 판정 캡슐
– 최적화를 위해 공격 시간의 매 프레임마다 판정하지 않고 각 공격당 한 번씩만 판정
– 예를 들어 3번 주먹질하면 3번만 판정
28. 타격감
• 공격자의 애니메이션, 피격자의 리액션, 효과, 타이밍 이 네가지 요소
가 적절히 잘 배합되어야 기분좋은 타격감이 생긴다.
29. 타격감
• 공격자의 애니메이션
• 피격자의 리액션
– 다음 슬라이드에서..
• 효과
–
–
–
–
–
–
적절한 이펙트
적절한 사운드
적절한 다이나믹 라이트
적절한 카메라 효과
적절한 포스트 이펙트
부위 파괴
• 타이밍
– 서버에서 선 판정하고, 클라이언트에서 서버 판정 정보를 미리 받은 후에 피격 타이
밍에 맞게 처리
30. 타격감 – 피격자의 리액션
• 공격자의 스킬과 피격자의 상황에 따라 모션 팩터라는 이름으로 수치
화하여 다양한 모션으로 피격 애니메이션이 나오도록 일반화
• 덩치가 큰 에픽 몬스터는 Knockback, KnockDown, ThrowUp,
Deflect을 적용하지 않고 Pain 애니메이션을 따로 제작
Beaten
Stun
Knockback
F Beaten
KnockDown
Deflect
ThrowUp
31. 위치값 동기화
• 액션 요소가 많기 때문에 대부분의 스킬을 사용하면 캐릭터의 위치가
변경됨
• 서버와 클라이언트의 위치값 동기화가 큰 이슈
• 서버는 캐릭터의 애니메이션 정보가 없기 때문에 각 스킬의 위치 샘플
링값을 따로 갖고있음
• 돌진 중간에 벽에 부딫힌다거나 낭떠러지 등의 예외 사항 처리
– 스킬 사용 전에 충돌 체크
38. 스킬의 공격 판정 정보를 입력합니다
•
•
캐릭터 툴에서 편집
자동으로 만들어주는 것이 아니라서 한땀한땀 손으로 입력.. orz
39. 스킬의 공격, 피격 이펙트를 연결합니다
•
•
이펙트는 메쉬 이펙트, 파티클, 동적 라이트, 카메라 효과, 사운드, 포스트 이펙트 등을 모두 일반화하
여 사용함
피격시, 공격 애니메이션 이벤트 등 특정 상황에 따라 이펙트를 연결
40. 캐릭터의 Mode
•
•
•
몬스터는 특수한 State인 Mode 상태가 따로 있음
Mode State에 따라 Idle, 이동 애니메이션, 판정, 충돌 등을 다른 그룹으로 처
리
Mode의 예
–
–
–
–
하늘을 날고 있는 상태
땅속에 있는 상태
투명화
다른 무기를 집어듬
Ground mode
Flying mode
41. AI 스크립트를 입력합니다
•
•
•
•
내부적으로 COLT라고 부름
XML 태그와 Lua 스크립트의 조합
동적 편집 가능
생각할 수 있는 대부분의 것은 거의 모두 만들 수 있는 구조
–
단지 디버깅이 빡쎌뿐... ㄷㄷ