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