레이더즈 기술 사례

44
레이더즈 기술 사례 마이에트 엔터테인먼트 남기룡

Upload: -

Post on 10-Jul-2015

2.449 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: 레이더즈 기술 사례

레이더즈 기술 사례

마이에트 엔터테인먼트

남기룡

Page 2: 레이더즈 기술 사례

게임 소개

Page 3: 레이더즈 기술 사례

레이더즈

Page 4: 레이더즈 기술 사례

레이더즈

• 논타겟팅 MMORPG

• 2012년 7월 피망에서 출시, 2013년 9월 서비스 종료

• 현재 북미, 일본에서 서비스 중

• 개발 기간 약 5년

• 개발 인원 초기 10명, 런칭시 약 60명 – 프로그래머는 초기 5명, 런칭시 약 12명, 엔진팀 따로 구성

• 액션성 높은 에픽 몬스터와의 전투가 특징 – 부위 파괴

– 잡아 던지기

– 브레이커블 파츠 무기 등

Page 5: 레이더즈 기술 사례

레이더즈

Page 6: 레이더즈 기술 사례

라이브러리

• 외부 라이브러리 – Physx

– FMOD

– SpeedTree

– PathEngine

– Bandi Capture Library

Page 7: 레이더즈 기술 사례

라이브러리

• 내부 라이브러리 – RealSpace3 : 렌더링 엔진

– Mint3 : 인터페이스 라이브러리

– CML : 마이에트 공통 라이브러리

– RealInput : 입력 라이브러리

– Minet : 네트워크 라이브러리

Page 8: 레이더즈 기술 사례

• CoreTool : 맵 편집

• CharacterTool : 모델 뷰어/NPC, 몬스터 편집

• EffectTool : 이펙트 툴

• 벨릭시안 : 컨텐츠 편집

• AI Monitor

• 엑셀

• 그 외 수많은 인하우스웨어

Page 9: 레이더즈 기술 사례

툴 - CoreTool

Page 10: 레이더즈 기술 사례

툴 - CoreTool

• 맵 편집 – 터레인/나무/맵 오브젝트/라이트/네비게이션 메쉬/충돌 설정

• 게임 오브젝트 배치 – NPC/몬스터/채집물/센서/마커/사운드

• 환경 설정 – 맵 속성/날씨/시간

Page 11: 레이더즈 기술 사례

툴 – 캐릭터 툴

Page 12: 레이더즈 기술 사례

툴 – 캐릭터 툴

• 모델 뷰어

• 몬스터 스킬 편집 – 판정

– 충돌

– 이펙트

– 애니메이션 블렌딩, 오버레이, 이벤트, 피격 리액션

– 카메라 효과

– 부위 파괴

Page 13: 레이더즈 기술 사례

툴 - 벨릭시안

Page 14: 레이더즈 기술 사례

툴 – 벨릭시안

• 퀘스트 편집

• 조건

• 대화

• 인터랙션

• 루팅 아이템

• 지역화, 문자열 관리

Page 15: 레이더즈 기술 사례

툴 - 엑셀

Page 16: 레이더즈 기술 사례

툴 – 엑셀

• 거의 모든 데이터의 편집 및 관리 – NPC/몬스터

– 아이템

– 크래프팅

– 상점

– 랜덤 박스

– 몬스터 스킬

– 버프

• 엑셀에서 입력 후 XML로 추출하여 게임에서 사용

• 참조, 매크로, 함수, 피봇 테이블 등 엑셀의 모든 기능을 적극 활용함

Page 17: 레이더즈 기술 사례

서버

Page 18: 레이더즈 기술 사례

서버 구조도

Client

Master DB

Game DB Log DB

Game Server

Game Server App

Server

Master Server

Game Server

Patch Server

Game Server

Web Server

World (Max 5k)

Login Server

Page 19: 레이더즈 기술 사례

GameServer

• 게임의 모든 로직을 담당, 실제 유저가 접속하는 서버

• 게임 로직은 단일 쓰레드

• 채널 구조로서 프로세스를 늘리는 방식으로 Scale out

• 논타겟팅의 게임 특색에 맞게 서버 자체가 렌더링하지 않는 커다란 클라이언트라는 개념으로 제작 – 풀 3D 베이스

– 길찾기 : 네비게이션 메쉬 기반

– B-tree 기반 충돌

– 캡슐을 이용한 판정 체크

– 커맨드 기반 게임 루프

• Tick = 20 ~ 40 (상황에 따라 유동적)

• 허용 가능한 지연 시간 100ms

Page 20: 레이더즈 기술 사례

GameServer

Command

Command

Command

Command Queue Command Handler

World Update

Entity Update

Game Logic Update …

Game Loop

Command

User

User

User

MasterServer AppServer

Page 21: 레이더즈 기술 사례

LoginServer

• 인증 등 게임에 진입하기 위한 기초 작업을 담당

• 특별한 거 없다

Page 22: 레이더즈 기술 사례

MasterServer

• 월드의 모든 서버 관리

• 서버 간의 통신을 중계

• 유저 세션 관리

Page 23: 레이더즈 기술 사례

AppServer

• GameServer에 종속되지 않는 포괄적인 기능이면서 CPU, IO 등의 부하가 많은 독립적인 피처를 담당

• Auction

• 채팅

• 로깅

• 투기장

Page 24: 레이더즈 기술 사례

논타겟팅 MMORPG 제작

Page 25: 레이더즈 기술 사례

판정

• 논타겟팅은 서버 관점에선 결국 판정의 방법 차이 – 모든 판정이 광역 판정

• 판정은 모두 순수하게 서버에서 처리한다. – MORPG와 차이점

– 최적화가 중요하다

• CS 지연 시간을 고려하여 서버에서 50~100ms 먼저 판정한다. – 하드 유저는 선판정을 민감하게 감지함

– 선판정을 감추기 위한 여러가지 꼼수(?) 사용

– 호불호가 있다.

– 해결 과제

Page 26: 레이더즈 기술 사례

판정

• 모든 판정은 캡슐 대 캡슐 판정으로 일반화 – 처리 연산이 빠르면서 거의 모든 상황에 일반화하여 적용 가능

• 모델의 판정 캡슐 – 인간 크기 이하의 몬스터는 캡슐 한 개로 구성

– 인간보다 큰 몸의 몬스터는 부위마다 캡슐의 조합으로 구성

– 애니메이션에 따라 캡슐의 위치가 변하지는 않고, 누워있을 때 등의 특정 상태(State)에 따라 캡슐 위치 동기화

• 스킬의 판정 캡슐 – 최적화를 위해 공격 시간의 매 프레임마다 판정하지 않고 각 공격당 한 번씩만 판정

– 예를 들어 3번 주먹질하면 3번만 판정

Page 27: 레이더즈 기술 사례

판정

<마영전> <레이더즈>

Page 28: 레이더즈 기술 사례

타격감

• 공격자의 애니메이션, 피격자의 리액션, 효과, 타이밍 이 네가지 요소가 적절히 잘 배합되어야 기분좋은 타격감이 생긴다.

Page 29: 레이더즈 기술 사례

타격감

• 공격자의 애니메이션

• 피격자의 리액션 – 다음 슬라이드에서..

• 효과 – 적절한 이펙트

– 적절한 사운드

– 적절한 다이나믹 라이트

– 적절한 카메라 효과

– 적절한 포스트 이펙트

– 부위 파괴

• 타이밍 – 서버에서 선 판정하고, 클라이언트에서 서버 판정 정보를 미리 받은 후에 피격 타이

밍에 맞게 처리

Page 30: 레이더즈 기술 사례

타격감 – 피격자의 리액션

• 공격자의 스킬과 피격자의 상황에 따라 모션 팩터라는 이름으로 수치화하여 다양한 모션으로 피격 애니메이션이 나오도록 일반화

• 덩치가 큰 에픽 몬스터는 Knockback, KnockDown, ThrowUp, Deflect을 적용하지 않고 Pain 애니메이션을 따로 제작

Beaten Knockback

Stun Deflect ThrowUp

KnockDown

F Beaten

Page 31: 레이더즈 기술 사례

위치값 동기화

• 액션 요소가 많기 때문에 대부분의 스킬을 사용하면 캐릭터의 위치가 변경됨

• 서버와 클라이언트의 위치값 동기화가 큰 이슈

• 서버는 캐릭터의 애니메이션 정보가 없기 때문에 각 스킬의 위치 샘플링값을 따로 갖고있음

• 돌진 중간에 벽에 부딫힌다거나 낭떠러지 등의 예외 사항 처리 – 스킬 사용 전에 충돌 체크

Page 32: 레이더즈 기술 사례

위치값 동기화

Page 33: 레이더즈 기술 사례

이제 몬스터를 만들어 보면서 설명합니다.

Page 34: 레이더즈 기술 사례

키메라는 이렇게 싸워요

• http://www.youtube.com/watch?v=ObHXNOc63tg

Page 35: 레이더즈 기술 사례

먼저 엑셀에서 몬스터의 기본 정보를 입력합니다

• ID, 이름, Level, MaxHP 등등 입력

• 기존의 몬스터에서 복붙!

Page 36: 레이더즈 기술 사례

모델의 충돌, 판정 정보를 입력합니다

• 정밀하게 판정되길 원하거나 피격되는 부위마다 다르게 처리하려면 캡슐을 여러 개로 나누어 편집 – 이펙트 효과/AI 이벤트 연결/부위 파괴/데미지 차등 감소 등

Page 37: 레이더즈 기술 사례

몬스터의 스킬 기본 정보를 입력합니다

• 기본 정보를 엑셀로 입력

Page 38: 레이더즈 기술 사례

스킬의 공격 판정 정보를 입력합니다

• 캐릭터 툴에서 편집

• 자동으로 만들어주는 것이 아니라서 한땀한땀 손으로 입력.. orz

Page 39: 레이더즈 기술 사례

스킬의 공격, 피격 이펙트를 연결합니다

• 이펙트는 메쉬 이펙트, 파티클, 동적 라이트, 카메라 효과, 사운드, 포스트 이펙트 등을 모두 일반화하여 사용함

• 피격시, 공격 애니메이션 이벤트 등 특정 상황에 따라 이펙트를 연결

Page 40: 레이더즈 기술 사례

캐릭터의 Mode

• 몬스터는 특수한 State인 Mode 상태가 따로 있음

• Mode State에 따라 Idle, 이동 애니메이션, 판정, 충돌 등을 다른 그룹으로 처리

• Mode의 예 – 하늘을 날고 있는 상태

– 땅속에 있는 상태

– 투명화

– 다른 무기를 집어듬

Ground mode Flying mode

Page 41: 레이더즈 기술 사례

AI 스크립트를 입력합니다

• 내부적으로 COLT라고 부름

• XML 태그와 Lua 스크립트의 조합

• 동적 편집 가능

• 생각할 수 있는 대부분의 것은 거의 모두 만들 수 있는 구조 – 단지 디버깅이 빡쎌뿐... ㄷㄷ

Page 42: 레이더즈 기술 사례

AI 스크립트를 입력합니다

<XML> <Lua>

Page 43: 레이더즈 기술 사례

그외 디테일한 부분도 체크합니다

• 회전 애니메이션

• 부위 파괴

• 등장할 때의 연출

• 몬스터가 승리할 때의 연출

• Pain 애니메이션

• 밸런싱

• 등등

Page 44: 레이더즈 기술 사례

감사합니다