SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
레이더즈 기술 사례
마이에트 엔터테인먼트
남기룡
게임 소개
레이더즈
레이더즈
•
•
•
•
•

논타겟팅 MMORPG
2012년 7월 피망에서 출시, 2013년 9월 서비스 종료
현재 북미, 일본에서 서비스 중
개발 기간 약 5년
개발 인원 초기 10명, 런칭시 약 60명
– 프로그래머는 초기 5명, 런칭시 약 12명, 엔진팀 따로 구성

• 액션성 높은 에픽 몬스터와의 전투가 특징
– 부위 파괴
– 잡아 던지기
– 브레이커블 파츠 무기 등
레이더즈
라이브러리
• 외부 라이브러리
–
–
–
–
–

Physx
FMOD
SpeedTree
PathEngine
Bandi Capture Library
라이브러리
• 내부 라이브러리
–
–
–
–
–

RealSpace3 : 렌더링 엔진
Mint3 : 인터페이스 라이브러리
CML : 마이에트 공통 라이브러리
RealInput : 입력 라이브러리
Minet : 네트워크 라이브러리
툴
•
•
•
•
•
•
•

CoreTool : 맵 편집
CharacterTool : 모델 뷰어/NPC, 몬스터 편집
EffectTool : 이펙트 툴
벨릭시안 : 컨텐츠 편집
AI Monitor
엑셀
그 외 수많은 인하우스웨어
툴 - CoreTool
툴 - CoreTool
• 맵 편집
– 터레인/나무/맵 오브젝트/라이트/네비게이션 메쉬/충돌 설정

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

• 환경 설정
– 맵 속성/날씨/시간
툴 – 캐릭터 툴
툴 – 캐릭터 툴
• 모델 뷰어
• 몬스터 스킬 편집
–
–
–
–
–
–

판정
충돌
이펙트
애니메이션 블렌딩, 오버레이, 이벤트, 피격 리액션
카메라 효과
부위 파괴
툴 - 벨릭시안
툴 – 벨릭시안
•
•
•
•
•
•

퀘스트 편집
조건
대화
인터랙션
루팅 아이템
지역화, 문자열 관리
툴 - 엑셀
툴 – 엑셀
• 거의 모든 데이터의 편집 및 관리
–
–
–
–
–
–
–

NPC/몬스터
아이템
크래프팅
상점
랜덤 박스
몬스터 스킬
버프

• 엑셀에서 입력 후 XML로 추출하여 게임에서 사용
• 참조, 매크로, 함수, 피봇 테이블 등 엑셀의 모든 기능을 적극 활용함
서버
Master
DB

서버 구조도
Patch
Game
Server

Server

World (Max 5k)

Web
Game
Server

Server
Login
Server

Client

Master
Server

Game
Game
Server
Server

App
Server

Game DB

Log DB
GameServer
•
•
•
•

게임의 모든 로직을 담당, 실제 유저가 접속하는 서버
게임 로직은 단일 쓰레드
채널 구조로서 프로세스를 늘리는 방식으로 Scale out
논타겟팅의 게임 특색에 맞게 서버 자체가 렌더링하지 않는
커다란 클라이언트라는 개념으로 제작
–
–
–
–
–

풀 3D 베이스
길찾기 : 네비게이션 메쉬 기반
B-tree 기반 충돌
캡슐을 이용한 판정 체크
커맨드 기반 게임 루프

• Tick = 20 ~ 40 (상황에 따라 유동적)
• 허용 가능한 지연 시간 100ms
GameServer
Game Loop

Command Queue

Command
Handler

User

Command

User

Command

World
Update

User

Command

Entity
Update

MasterServer
AppServer

Command

Game Logic
Update
…
LoginServer
• 인증 등 게임에 진입하기 위한 기초 작업을 담당
• 특별한 거 없다
MasterServer
• 월드의 모든 서버 관리
• 서버 간의 통신을 중계
• 유저 세션 관리
AppServer
• GameServer에 종속되지 않는 포괄적인 기능이면서 CPU,
IO 등의 부하가 많은 독립적인 피처를 담당
• Auction
• 채팅
• 로깅
• 투기장
논타겟팅 MMORPG 제작
판정
• 논타겟팅은 서버 관점에선 결국 판정의 방법 차이
– 모든 판정이 광역 판정

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

• CS 지연 시간을 고려하여 서버에서 50~100ms 먼저 판정한다.
–
–
–
–

하드 유저는 선판정을 민감하게 감지함
선판정을 감추기 위한 여러가지 꼼수(?) 사용
호불호가 있다.
해결 과제
판정
• 모든 판정은 캡슐 대 캡슐 판정으로 일반화
– 처리 연산이 빠르면서 거의 모든 상황에 일반화하여 적용 가능

• 모델의 판정 캡슐
– 인간 크기 이하의 몬스터는 캡슐 한 개로 구성
– 인간보다 큰 몸의 몬스터는 부위마다 캡슐의 조합으로 구성
– 애니메이션에 따라 캡슐의 위치가 변하지는 않고, 누워있을 때 등의 특정 상태
(State)에 따라 캡슐 위치 동기화

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

<마영전>

<레이더즈>
타격감
• 공격자의 애니메이션, 피격자의 리액션, 효과, 타이밍 이 네가지 요소
가 적절히 잘 배합되어야 기분좋은 타격감이 생긴다.
타격감
• 공격자의 애니메이션
• 피격자의 리액션
– 다음 슬라이드에서..

• 효과
–
–
–
–
–
–

적절한 이펙트
적절한 사운드
적절한 다이나믹 라이트
적절한 카메라 효과
적절한 포스트 이펙트
부위 파괴

• 타이밍
– 서버에서 선 판정하고, 클라이언트에서 서버 판정 정보를 미리 받은 후에 피격 타이
밍에 맞게 처리
타격감 – 피격자의 리액션
• 공격자의 스킬과 피격자의 상황에 따라 모션 팩터라는 이름으로 수치
화하여 다양한 모션으로 피격 애니메이션이 나오도록 일반화
• 덩치가 큰 에픽 몬스터는 Knockback, KnockDown, ThrowUp,
Deflect을 적용하지 않고 Pain 애니메이션을 따로 제작

Beaten

Stun

Knockback

F Beaten

KnockDown
Deflect

ThrowUp
위치값 동기화
• 액션 요소가 많기 때문에 대부분의 스킬을 사용하면 캐릭터의 위치가
변경됨
• 서버와 클라이언트의 위치값 동기화가 큰 이슈
• 서버는 캐릭터의 애니메이션 정보가 없기 때문에 각 스킬의 위치 샘플
링값을 따로 갖고있음
• 돌진 중간에 벽에 부딫힌다거나 낭떠러지 등의 예외 사항 처리
– 스킬 사용 전에 충돌 체크
위치값 동기화
이제 몬스터를 만들어 보면서
설명합니다.
키메라는 이렇게 싸워요
• http://www.youtube.com/watch?v=ObHXNOc63tg
먼저 엑셀에서 몬스터의 기본 정보를 입력합니다
• ID, 이름, Level, MaxHP 등등 입력
• 기존의 몬스터에서 복붙!
모델의 충돌, 판정 정보를 입력합니다
•

정밀하게 판정되길 원하거나 피격되는 부위마다 다르게 처리하려면 캡슐을 여
러 개로 나누어 편집
–

이펙트 효과/AI 이벤트 연결/부위 파괴/데미지 차등 감소 등
몬스터의 스킬 기본 정보를 입력합니다
•

기본 정보를 엑셀로 입력
스킬의 공격 판정 정보를 입력합니다
•
•

캐릭터 툴에서 편집
자동으로 만들어주는 것이 아니라서 한땀한땀 손으로 입력.. orz
스킬의 공격, 피격 이펙트를 연결합니다
•
•

이펙트는 메쉬 이펙트, 파티클, 동적 라이트, 카메라 효과, 사운드, 포스트 이펙트 등을 모두 일반화하
여 사용함
피격시, 공격 애니메이션 이벤트 등 특정 상황에 따라 이펙트를 연결
캐릭터의 Mode
•
•
•

몬스터는 특수한 State인 Mode 상태가 따로 있음
Mode State에 따라 Idle, 이동 애니메이션, 판정, 충돌 등을 다른 그룹으로 처
리
Mode의 예
–
–
–
–

하늘을 날고 있는 상태
땅속에 있는 상태
투명화
다른 무기를 집어듬

Ground mode

Flying mode
AI 스크립트를 입력합니다
•
•
•
•

내부적으로 COLT라고 부름
XML 태그와 Lua 스크립트의 조합
동적 편집 가능
생각할 수 있는 대부분의 것은 거의 모두 만들 수 있는 구조
–

단지 디버깅이 빡쎌뿐... ㄷㄷ
AI 스크립트를 입력합니다

<XML>

<Lua>
그외 디테일한 부분도 체크합니다
•
•
•
•
•
•
•

회전 애니메이션
부위 파괴
등장할 때의 연출
몬스터가 승리할 때의 연출
Pain 애니메이션
밸런싱
등등
감사합니다

Weitere ähnliche Inhalte

Was ist angesagt?

임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
영욱 오
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
MinGeun Park
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
devCAT Studio, NEXON
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
devCAT Studio, NEXON
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
 

Was ist angesagt? (20)

게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
게임회사 실무용어 완전정복! 쿡앱스 용어정리집
게임회사 실무용어 완전정복! 쿡앱스 용어정리집 게임회사 실무용어 완전정복! 쿡앱스 용어정리집
게임회사 실무용어 완전정복! 쿡앱스 용어정리집
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
 
게임 스타트업 시작하기
게임 스타트업 시작하기게임 스타트업 시작하기
게임 스타트업 시작하기
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 

Andere mochten auch

Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2
기룡 남
 
Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악
기룡 남
 
Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단
기룡 남
 
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
기룡 남
 
Game AI Overview
Game AI OverviewGame AI Overview
Game AI Overview
기룡 남
 

Andere mochten auch (18)

Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2
 
Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악
 
Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단
 
마쉬멜로우 첼린지
마쉬멜로우 첼린지마쉬멜로우 첼린지
마쉬멜로우 첼린지
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
 
Pm
PmPm
Pm
 
유니티직원들 유니티배우기 (세일즈,마케팅,오피스팀 대상)
유니티직원들 유니티배우기 (세일즈,마케팅,오피스팀 대상)유니티직원들 유니티배우기 (세일즈,마케팅,오피스팀 대상)
유니티직원들 유니티배우기 (세일즈,마케팅,오피스팀 대상)
 
5시간동안 웨딩런 만들기 워크샵(유나이트2015)
5시간동안 웨딩런 만들기 워크샵(유나이트2015)5시간동안 웨딩런 만들기 워크샵(유나이트2015)
5시간동안 웨딩런 만들기 워크샵(유나이트2015)
 
게임 스타트업 시작하기 두달 후
게임 스타트업 시작하기 두달 후게임 스타트업 시작하기 두달 후
게임 스타트업 시작하기 두달 후
 
5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)
 
Game AI Overview
Game AI OverviewGame AI Overview
Game AI Overview
 
NDC 2015 게임 스타트업 시작하기
NDC 2015 게임 스타트업 시작하기NDC 2015 게임 스타트업 시작하기
NDC 2015 게임 스타트업 시작하기
 
이펙트 없는 게임은 콜라없는 햄버거와 같다(유니티 이펙트 세미나용 PT)
이펙트 없는 게임은 콜라없는 햄버거와 같다(유니티 이펙트 세미나용 PT)이펙트 없는 게임은 콜라없는 햄버거와 같다(유니티 이펙트 세미나용 PT)
이펙트 없는 게임은 콜라없는 햄버거와 같다(유니티 이펙트 세미나용 PT)
 
Game system design using Table
Game system design using TableGame system design using Table
Game system design using Table
 
NDC2016 카툰999 포스트모템(피드백의 힘)
NDC2016 카툰999 포스트모템(피드백의 힘)NDC2016 카툰999 포스트모템(피드백의 힘)
NDC2016 카툰999 포스트모템(피드백의 힘)
 
Introduction to Data Oriented Design
Introduction to Data Oriented DesignIntroduction to Data Oriented Design
Introduction to Data Oriented Design
 
디발자가 말하는 시선을 끄는 PPT
디발자가 말하는 시선을 끄는 PPT디발자가 말하는 시선을 끄는 PPT
디발자가 말하는 시선을 끄는 PPT
 

Ähnlich wie 레이더즈 기술 사례

양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
devCAT Studio, NEXON
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
영준 박
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
Chanwoong Kim
 

Ähnlich wie 레이더즈 기술 사례 (20)

나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
 
Cyberpunk2165
Cyberpunk2165Cyberpunk2165
Cyberpunk2165
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
 
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 

Mehr von 기룡 남

Mehr von 기룡 남 (9)

GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기
 
Ignite Maiet 03 순정만화를 게임으로 재현하기
Ignite Maiet 03 순정만화를 게임으로 재현하기Ignite Maiet 03 순정만화를 게임으로 재현하기
Ignite Maiet 03 순정만화를 게임으로 재현하기
 
생산적인 개발을 위한 지속적인 테스트
생산적인 개발을 위한 지속적인 테스트생산적인 개발을 위한 지속적인 테스트
생산적인 개발을 위한 지속적인 테스트
 
Rapid Development
Rapid DevelopmentRapid Development
Rapid Development
 
refactoring database
refactoring databaserefactoring database
refactoring database
 
Continuous Test
Continuous TestContinuous Test
Continuous Test
 
KGC2007 Scrum And Xp
KGC2007 Scrum And XpKGC2007 Scrum And Xp
KGC2007 Scrum And Xp
 
Gunz Postmortem
Gunz PostmortemGunz Postmortem
Gunz Postmortem
 
Responding to change
Responding to changeResponding to change
Responding to change
 

레이더즈 기술 사례

  • 1. 레이더즈 기술 사례 마이에트 엔터테인먼트 남기룡
  • 4. 레이더즈 • • • • • 논타겟팅 MMORPG 2012년 7월 피망에서 출시, 2013년 9월 서비스 종료 현재 북미, 일본에서 서비스 중 개발 기간 약 5년 개발 인원 초기 10명, 런칭시 약 60명 – 프로그래머는 초기 5명, 런칭시 약 12명, 엔진팀 따로 구성 • 액션성 높은 에픽 몬스터와의 전투가 특징 – 부위 파괴 – 잡아 던지기 – 브레이커블 파츠 무기 등
  • 7. 라이브러리 • 내부 라이브러리 – – – – – RealSpace3 : 렌더링 엔진 Mint3 : 인터페이스 라이브러리 CML : 마이에트 공통 라이브러리 RealInput : 입력 라이브러리 Minet : 네트워크 라이브러리
  • 8. 툴 • • • • • • • CoreTool : 맵 편집 CharacterTool : 모델 뷰어/NPC, 몬스터 편집 EffectTool : 이펙트 툴 벨릭시안 : 컨텐츠 편집 AI Monitor 엑셀 그 외 수많은 인하우스웨어
  • 10. 툴 - CoreTool • 맵 편집 – 터레인/나무/맵 오브젝트/라이트/네비게이션 메쉬/충돌 설정 • 게임 오브젝트 배치 – NPC/몬스터/채집물/센서/마커/사운드 • 환경 설정 – 맵 속성/날씨/시간
  • 12. 툴 – 캐릭터 툴 • 모델 뷰어 • 몬스터 스킬 편집 – – – – – – 판정 충돌 이펙트 애니메이션 블렌딩, 오버레이, 이벤트, 피격 리액션 카메라 효과 부위 파괴
  • 14. 툴 – 벨릭시안 • • • • • • 퀘스트 편집 조건 대화 인터랙션 루팅 아이템 지역화, 문자열 관리
  • 16. 툴 – 엑셀 • 거의 모든 데이터의 편집 및 관리 – – – – – – – NPC/몬스터 아이템 크래프팅 상점 랜덤 박스 몬스터 스킬 버프 • 엑셀에서 입력 후 XML로 추출하여 게임에서 사용 • 참조, 매크로, 함수, 피봇 테이블 등 엑셀의 모든 기능을 적극 활용함
  • 18. Master DB 서버 구조도 Patch Game Server Server World (Max 5k) Web Game Server Server Login Server Client Master Server Game Game Server Server App Server Game DB Log DB
  • 19. GameServer • • • • 게임의 모든 로직을 담당, 실제 유저가 접속하는 서버 게임 로직은 단일 쓰레드 채널 구조로서 프로세스를 늘리는 방식으로 Scale out 논타겟팅의 게임 특색에 맞게 서버 자체가 렌더링하지 않는 커다란 클라이언트라는 개념으로 제작 – – – – – 풀 3D 베이스 길찾기 : 네비게이션 메쉬 기반 B-tree 기반 충돌 캡슐을 이용한 판정 체크 커맨드 기반 게임 루프 • Tick = 20 ~ 40 (상황에 따라 유동적) • 허용 가능한 지연 시간 100ms
  • 21. LoginServer • 인증 등 게임에 진입하기 위한 기초 작업을 담당 • 특별한 거 없다
  • 22. MasterServer • 월드의 모든 서버 관리 • 서버 간의 통신을 중계 • 유저 세션 관리
  • 23. AppServer • GameServer에 종속되지 않는 포괄적인 기능이면서 CPU, IO 등의 부하가 많은 독립적인 피처를 담당 • Auction • 채팅 • 로깅 • 투기장
  • 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. 위치값 동기화 • 액션 요소가 많기 때문에 대부분의 스킬을 사용하면 캐릭터의 위치가 변경됨 • 서버와 클라이언트의 위치값 동기화가 큰 이슈 • 서버는 캐릭터의 애니메이션 정보가 없기 때문에 각 스킬의 위치 샘플 링값을 따로 갖고있음 • 돌진 중간에 벽에 부딫힌다거나 낭떠러지 등의 예외 사항 처리 – 스킬 사용 전에 충돌 체크
  • 33. 이제 몬스터를 만들어 보면서 설명합니다.
  • 34. 키메라는 이렇게 싸워요 • http://www.youtube.com/watch?v=ObHXNOc63tg
  • 35. 먼저 엑셀에서 몬스터의 기본 정보를 입력합니다 • ID, 이름, Level, MaxHP 등등 입력 • 기존의 몬스터에서 복붙!
  • 36. 모델의 충돌, 판정 정보를 입력합니다 • 정밀하게 판정되길 원하거나 피격되는 부위마다 다르게 처리하려면 캡슐을 여 러 개로 나누어 편집 – 이펙트 효과/AI 이벤트 연결/부위 파괴/데미지 차등 감소 등
  • 37. 몬스터의 스킬 기본 정보를 입력합니다 • 기본 정보를 엑셀로 입력
  • 38. 스킬의 공격 판정 정보를 입력합니다 • • 캐릭터 툴에서 편집 자동으로 만들어주는 것이 아니라서 한땀한땀 손으로 입력.. orz
  • 39. 스킬의 공격, 피격 이펙트를 연결합니다 • • 이펙트는 메쉬 이펙트, 파티클, 동적 라이트, 카메라 효과, 사운드, 포스트 이펙트 등을 모두 일반화하 여 사용함 피격시, 공격 애니메이션 이벤트 등 특정 상황에 따라 이펙트를 연결
  • 40. 캐릭터의 Mode • • • 몬스터는 특수한 State인 Mode 상태가 따로 있음 Mode State에 따라 Idle, 이동 애니메이션, 판정, 충돌 등을 다른 그룹으로 처 리 Mode의 예 – – – – 하늘을 날고 있는 상태 땅속에 있는 상태 투명화 다른 무기를 집어듬 Ground mode Flying mode
  • 41. AI 스크립트를 입력합니다 • • • • 내부적으로 COLT라고 부름 XML 태그와 Lua 스크립트의 조합 동적 편집 가능 생각할 수 있는 대부분의 것은 거의 모두 만들 수 있는 구조 – 단지 디버깅이 빡쎌뿐... ㄷㄷ
  • 43. 그외 디테일한 부분도 체크합니다 • • • • • • • 회전 애니메이션 부위 파괴 등장할 때의 연출 몬스터가 승리할 때의 연출 Pain 애니메이션 밸런싱 등등