ݺߣ

ݺߣShare a Scribd company logo
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
01
02
03
04
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
Grid
Load Grid Grid Grid Grid
Unload
Grid Grid Grid Grid Grid
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
좌표
3byte
복셀 데이터
8byte
좌표
3byte
복셀 데이터
8byte
좌표
3byte
복셀 데이터
8byte
좌표
1~3 byte
복셀 데이터
8byte
인덱스
1~4 byte
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
0 0
00
0 0
10
0 0
01
0 0
11
0 1
00
0 1
10
0 1
01
0 1
11
1 0
00
1 0
10
1 0
01
1 0
11
1 1
00
1 1
10
1 1
01
1 1
11
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
Bush
Bush
Bush
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
점프 공중 / 지면
달리기 지면
수영 수면 / 수중
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기

More Related Content

What's hot (20)

[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
YEONG-CHEON YOU
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
devCAT Studio, NEXON
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
Jongwon Kim
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptx
MUUMUMUMU
빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자
KyeongWon Koo
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
Yongha Kim
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
승명 양
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
예림 임
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
Lee Dustin
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
devCAT Studio, NEXON
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
Jongwon Kim
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptx
MUUMUMUMU
빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자
KyeongWon Koo
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
Yongha Kim
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
승명 양
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
예림 임
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
Lee Dustin

More from 강 민우 (20)

[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
강 민우
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
강 민우
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
강 민우
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
강 민우
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
강 민우
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
강 민우
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
강 민우
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
강 민우
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
강 민우
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
강 민우
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
강 민우
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
강 민우
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
강 민우
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
강 민우
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
강 민우
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
강 민우
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
강 민우
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
강 민우
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
강 민우
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
강 민우
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
강 민우
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
강 민우
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
강 민우
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
강 민우
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
강 민우
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
강 민우
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
강 민우
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
강 민우
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
강 민우
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
강 민우
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
강 민우
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
강 민우
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
강 민우
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
강 민우
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
강 민우
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
강 민우
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
강 민우
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
강 민우
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
강 민우
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
강 민우

[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기

Editor's Notes

  • #2: 오늘 제가 소개해드릴 내용은검은사막에서자체 제작해서 실제로 사용중인네비게이션시스템에 대한 내용입니다. 이를 구현하면서 겪었던 문제들,해결했던 방법들에 대해 공유하는 시간으로 준비했습니다. 저는펄어비스모바일개발팀의 프로그래머 민경인입니다.
  • #6: 이미잘 쓰고 있는오픈소스/상용 라이브러리도 많이 있습니다. 검은사막도개발 초기에는 이런 라이브러리를 잘 사용하고 있었습니다
  • #8: 빨간 박스로 지정된 영역들은벽 부분들인데,길찾기에활용되지 않는 데이터라 모두 제거된 것을 볼 수 있음.
  • #9: 이런간단해보이는지형이라도 이렇게 많은 삼각형으로 분할이 됩니다.
  • #10: 삼각형끼리 인접한 면을 연결한그래프를만들어둔다면,널리알려져있는최단거리탐색 알고리즘들을 사용할 수 있습니다. 이때I / H간의 연결을 보면,인접한변이일치하지 않아강제로 링크를 연결을해줘야하는 경우도 생깁니다.
  • #15: 여러개의파일에 각각 독립적으로 저장하려면,이와같이분할을하게됩니다.
  • #16: 분할 결과는이전 모습과 상당히 달라지죠. 이때 다시 재 연결을 얼마나 빠르게 할 수 있느냐가 관건 운이 좋으면 파란색 영역처럼 바로 인접 영역으로삼을수도있겠지만,운이 나쁘면 빨간색 영역처럼 변이 맞지 않아 더 많은연결정보를추가해줘야하는 경우가 생깁니다.
  • #17: 개발초기부터벽타고오르는액션이나장거리 대포에 대한아이디어들이 나오고있을시점이라,서버에서의이동검증이매우중요했음. 특히벽타기는기존게임들의이동방식과특성이달랐고,거의모든지형에대한데이터를가지고있어야할필요성이있었음
  • #18: 검은사막지형의 경우 매우 복잡한 형태의지형들이 존재하고, 이 곳들에 대해 별도의 처리 없이 게임에 필요한 데이터를 추출할 수 있으면 좋겠다.
  • #19: 이렇게 해서 먼저 어떤형태로 만들지에 대해대략적인설계를 하기 시작했습니다. 다른 여러가지 이유도 합쳐지긴 했지만, 핵심은 로딩 속도의 개선과 네비 데이터 추출과정에서 발생하는 수작업을 줄이는 것이 가장 큰 목표였죠. 그래서 선택한 도구가 복셀데이터 였습니다.
  • #20: 복셀보다는 픽셀이 더 익숙한 개념이실텐데요. 픽셀은 아시다시피 이미지를 이루는 하나의 점을 가리키는 용어죠
  • #21: 복셀은픽셀의3차원 버전으로 생각할 수 있습니다. 특징은레고블록1칸과 비슷하기도 한데요. 여러 색을 가진 수많은 픽셀들이 모여서 사진을만들어내는것처럼 작은복셀들을모아서 커다란 형체를 만들어 표현할 수 있습니다 뿐만아니라앞으로설명드릴내용을들어보시면다루는 방식이 이미지 처리의 개념을 종종채용해오는것을 보실 수 있습니다
  • #22: 복셀은모든 축에 대해 정렬된 데이터로이루어져있기때문에 각 축의 좌표만 알면 접근이 가능합니다. 따라서 연결 링크를 재구성 할 필요가 없어서, 네비메쉬보다실시간스트리밍에알맞은 구조라고 할 수 있습니다 또한 그 자체로A*알고리즘을 적용할 수 있다는 장점도 있습니다.
  • #23: 칸별로지형데이터를담아둔다면,서버 검증이나,각종컨텐츠구현시유용할 것 같다. 특정 지형에 따른 효과를 받는다거나 물속,공중,건물 위 등과 같은 지형의 성질을 직관적으로 판단 할 수 있습니다.
  • #24: 1섹터는128m입방으로 이루어진 공간으로 결정했다.이 안을몇개의복셀로나눌것이냐가관건 세밀하게 나눌수록 정확한 데이터를 가지고 있을 수 있긴 하다.다만,무턱대고복셀을작게만들수도없습니다.
  • #25: 바로복셀사이즈가작아질수록 가지고 있어야 할 데이터가 기하급수적으로 늘어납니다. (무려세제곱배) 사진이나 동영상의 경우도 고해상도일수록 용량이급증하는것처럼
  • #26: 각복셀당1바이트라고만 잡아도 대략471기가가 넘는 용량이 필요합니다 따라서 복셀에 대한 관리 전략이 필요해집니다. 이런 커다란 데이터를 어떻게 담아야할지 고민을 하기 시작했습니다
  • #27: 복셀을전부PlaneData로저장할 수는 없기 때문에,과거 학부에서 과제로 다뤘었던SparseMatrix특성을 차용합니다. Sparse Matrix는 속이 대부분 비어있는 희소행렬로,지형데이터도 이와 유사한 특징을 가집니다.
  • #28: 지형이라고 함은 캐릭터가 뛰어다닐 공간을 상정하고 만들기 마련인데요. 따라서 대부분의 공간은 허공으로 이루어져 있습니다. 즉 모든 데이터를 메모리상에서 관리할 필요는 없다는 것입니다. (데이터 없음 상태 자체를 허공으로 판정할 수 있습니다.)
  • #29: 노드는실제복셀데이터라고 보시면 됩니다.길찾기알고리즘이 인식할 최소 단위 그리드는파일에 저장되는 단위라고 볼 수 있습니다. 이렇게나뉘어진데이터들은 실시간으로 로드/언로드가 되면서 실시간으로 변동 됩니다
  • #30: 각각분리되어있는그리드들을일관되게 접근할 수 있는 인터페이스를 만들었습니다 이를 통해길찾기알고리즘이 데이터 구조와 상관없이 동작할 수있게 되었고 길찾기수행여부와상관없이지형데이터의로드언로드처리가가능해졌습니다
  • #31: 지금까지 내용이 정적인 데이터였다면 동적으로 변동되는 내역들도 최근의 게임들은 많이존재할텐데요. 플레이어들,또한 그들이 설치하는설치물등도경로차폐기능이필요한 경우가 많습니다. 적의 이동을 방해하는바리케이트와같은 건물들입니다. 이들을Ai캐릭터들과 서버에서인식하기위해구현한 것이Obstacle입니다. 일부네비게이션라이브러리들은Obstacle추가삭제시에도재구축과정을 거치는 경우가 있지만 MMORPG와 같이 전 월드에서 수많은 장애물이 처리되는 상황에서는 그러한재구축처리를하는것이부담됩니다. 따라서 이Obstacle자체를 동적으로 충돌 처리를 수행하도록 만들었습니다.
  • #32: 이런 방해물들은실제 눈에보여지는형태보다 간략한 형태로 대략적인 처리를 수행함으로써,빠르게 조회/수정을 할 수 있도록 했습니다. 이들의변경시는자신의 데이터만 수정하고 충돌될 좌표에 대한 조회가발생할때에만정확한 충돌 여부 계산을 수행하게 됩니다.
  • #33: 네비게이션복셀들과달리Lock을 거는 빈도가 높으므로별도의 섹터를 두었습니다. 같은 섹터 내에서의 이동은 개체 하나의 메모리만 수정하면 작업이 끝날 수 있습니다. 미리 분리 작업을 하지 않는 이유는 이번 작업에 있어서 이러한 동적 장애물이 이동하는 빈도가 실제로 충돌이 발생되는 케이스가 더 적었기 때문입니다. 반대의 경우라면 당연하게도 미리 고정데이터로 굽는 형태를 선택해야 했겠지요.
  • #34: 이 당시측정결과로보면,순차적으로 한 셀씩 샘플링을 하는 것보다 섹터 공간을8분할 하여 미리 커다란 공간들을 제외해 나가는 식의 접근을했을때커다란 속도 향상이 있었습니다. 다만,한계점이 있었지요. 뭔가 있는건 알겠지만 정확하게 무엇이 있는지 판단할 방법이 제한적이었습니다.
  • #35: 결국 전체 월드샘플러를만들기에 이릅니다 오브젝트 배치 데이터와버텍스/인덱스 버퍼에 직접 접근하여셈플링을수행하면 사용되는 모델의 파일명,텍스쳐명부터배치툴에서지정되는 다양한 옵션을 사용할 수 있었습니다 이것이 가능해진다면 한 모델내에서 나무와 잎들을 구분하고,수면 데이터를 뽑아내는 등 기존에 손으로 해야했던 상당수의 수작업들이 사라질 수 있었습니다. 물론 뽑아야할 대상이 많다보니 처리속도도 중요한 이슈입니다.
  • #36: 점3개로 이루어진 삼각형이주어졌을때복셀샘플링을 어떻게해야할까요? 또 얼만큼의 간격으로 샘플링을 해야 놓치는 부분 없이 샘플링이 가능할까요? 이에 대한 정리가 이 표본화 정리입니다. 이것은 음성녹음,정보통신 등의 분야에서는 매우 기본으로 알려져 있는 정리입니다. 핵심만 집자면 신호대역의2배로 샘플링 하면 후회가 없을것이다라는 내용인데요 복셀 공간에서 최소단위는 복셀의 크기입니다 따라서 복셀크기의 반이 권장 샘플링 단위가 됩니다
  • #37: 위쪽 삼각형에서나뉘어진선분 대로 샘플링을수행할경우 사각형의2차원 배열을순회하는것과동일하여, 코드는 더간단해지지만,샘플링 밀도가 한곳에 너무 집중되어 시간이 낭비되는 경우가 발생합니다.
  • #38: 생각보다 많은 고민이 필요했지만, 결국 결과물이 나오긴 하더랍니다. 기본적인셈플 데이터를 추출하고, 간단한 길찾기 알고리즘을 만들어 붙여보았던 상태입니다.
  • #39: 이때까지는 일부 셈플 데이터를 가지고, 추출과 기본 구현이 중심이었다면, 이후 부터는 실제 게임 전체에 적용해나가면서 부딛혔던 문제들에 대해 이야기를 해보려고 합니다.
  • #40: 복셀영역내에존재하기만 한다면복셀이생성되므로 충분히 공간이 있는데도복셀이길을막아버리는현상들이 발생했습니다 기본 복셀 사이즈를 1m로 잡은 기초부터 흔들리기 시작했습니다. 복셀 사이즈를 2배 축소시키면, 어느정도 문제가 완화되겠지만, A*를 같은 비용으로 돌리더라도 진행할수 있는거리가면접 비례로 줄어들것이고, 메모리는 지금의 몇배는 늘어날 터였습니다.
  • #45: A*는 현재 위치에서 갈수 있는 곳에 대한 후보지들을 등록하고 가장 가능성이 높은(유력함을 나타내는 포인트 등으로 정렬된 녀석)후보지로 이동해서 다음스탭을 진행합니다.
  • #46: A* 알고리즘의 가장 중요한 성능포인트는 후보 노드를 등록하고 가장 유력한 후보를 탐색하는 부분을 얼마나 빠르게 하느냐가 관건입니다 후보노드의 숫자가 많다는 것은 그만큼 성능적으로 불리합니다.
  • #47: 실제 인접한 노드 만으로도 이미 체크해야하는 연결이 많아지고, 이것으로 급한불은 껏다고 할 수 있겠지만 네비게이션 매쉬 방식에 비해 한번에 후보군을 탐색하는 거리도 짧으므로 느릴 수 밖에 없습니다.
  • #48: A*를 돌리기 전에 직선으로 이동가능한지 샘플링 검사를 추가하는 것만으로도 상당수 길찾기에 성공합니다.
  • #49: 직선으로 이동을 하지 못할 경우 최종적으로A* 를 수행하면서 경로 탐색을 하게 되는데요 최적 노드를 선정하는 방법도 다음과 같습니다 현재까지 진행해온 거리+목적지까지 앞으로 진행해야할 예상 거리 이 부분에서도 개선을 할 부분이 있었습니다
  • #50: A*는 최단 거리의 길을 찾는 방식이기 때문에 후보군을 등록하다가 더 나은 경로가 탐색되면 경로를 갱신하기도 하고 후보 위치중 가장 적합한 노드를 선정하는 가중치 계산식에 의해서도 다양한 시행착오를 계산하게 됩니다. 지금 그림상에는 장애물에 막혔을때 경로를 찾는 부분을 표현하였지만 경로가 꺾이는 순간부터는 다시 최초 시작점부터도 탐색을 시작하는 경우가 발생합니다.
  • #51: 전통적인GreedyBestFirst형태는 가장 먼저 테스트에 성공한 시도를 기준으로 확장하는 방식입니다. 이때 적절한 계산식에 의해 실패라고 판단할 경우 다른 후보 노드를 수행하게 됩니다. MMORPG의 지형들에서는 복셀1칸당 장애물이 있는형태의 미로형태는 거의 존재하지 않기 때문에 상당부분은 개활지를 진행하는 경우가 많습니다. 따라서 이미 지나온 거리가 멀어지더라도 목적지까지의 남은거리를 더 중요하도록 가중치를 조정했습니다. 이를 통해 한번 길찾기에 후보 노드 등록량이 줄어들었고 후보 노드를 관리하는priorityqueue의Insert/find횟수가 줄어들었고,큐의 크기가 작아져insert/find의 수행 부담도 줄어들었습니다
  • #52: 복셀상의 좌표만으로A*를수행하면45도로 각진 경로를 구하게 됩니다. 옛날타일링방식의고전게임들에서볼수있는 경로인데요.이를 대각선 이외의 다양한 각도로도 이동할 수 있다면축약해주는최적화 기능도 필요했습니다.
  • #53: 이를 구현함에 있어서직선경로테스트가 유용하게 활용되었습니다 최초 시작 지점부터 순차적으로 경로 테스트를수행해보고성공한 지점까지직선경로로대체하면 됩니다.
  • #54: 이를 통해서GreedyFirstTest의 약간 멍청해 보일 수 있는 경로를어느정도개선하는 효과도 있었습니다 이 결과는A* 자체만으로 최적의 길을 찾을 필요가 없을 수 있음을 보여줍니다. 모든경우를 대체하지는 못하지만 이로 인해 얻는 성능이득을 다른곳에 투자할수 있게 되었습니다
  • #56: 패스 최적화와 비슷한 방식이지만,회전각을 추가로 입력하여 이와 같이 곡선 패스를 구하는 방법도 구현합니다. 패스 최적화탐색시회전각을 반영하여 순차적으로 검색하는 방식으로,구현한다면 모든 경우에 대해곡선패스를찾을 수는 없겠지만,대부분의 경우에납득할만한결과를보여줍니다.
  • #57: 메모리/성능 측면에서의 개선을 한 뒤에 남는 여력으로 비로소 해상도를2배 증가시킬 수 있었습니다. 최초프로토타입에 비해 좀더지형데이터를표현하기에적합해졌습니다. 실사용 하는 툴이 되어서 눈이 좀덜아프게수정되고 속성별로 색을 달리해볼수있게 되었습니다.
  • #58: 이전 버전과비교해보면조금더명확합니다. 동그라미 친 부분을 보면 기존에 큰 박스1개로 표현되던 부분이개선버전에서는그래도 계단 비슷하게 변경되었습니다. 높이가1칸차이나는지형이라 경로탐색시통과 가능한 형태이지만 크게눈에띄는부분이라면 경계에Npc이동불가속성을 지정하는 것으로 처리 가능할 수준이 되었습니다
  • #59: 최소한 캐릭터 최소 바디 사이즈/√2는 보장되어야 캐릭터 중심점 기준으로 직선 검사를 할 수가 있다! 현재 캐릭터의 반지름은0.4m이므로0.28m이하의복셀로이루어진맵에서는중심점 기준으로 직선검사를 하는 것이 가능해진다. 따라서2배 이상 해상도를 늘려야 한다!
  • #60: 기존처럼 해상도 자체를 늘리는 것은 메모리 제약이 크다. 따라서 기존SubPixel이라고 하는 개념을 가져와서 사용합니다. 1개의복셀을8개의 서브복셀로나누어 존재 유무를 담는 방법으로 각복셀당1byte만 추가하면 해상도를2배 뻥튀기 할 수 있습니다.
  • #61: 서브 복셀을 적용해본 결과를 표현해보았습니다. 복셀의 해상도가25cm수준이 되어 복셀1칸의 최대 길이도35.35cm가 되어 기존 캐릭터의 중점이 벽에 걸리지 않도록 수정된 것을 볼 수 있습니다.
  • #62: 서브복셀정보까지 포함된 최종 결과입니다 굳이 지형을 함께 보지 않더라도어떤지형인지눈으로 식별 가능한 수준까지세밀해진것을 볼 수 있습니다.
  • #64: 복셀에 대한 조회와 샘플링 과정이 최적화 됨에 따라, 서버에서도 Raycast와 비슷한 형태의 쿼리를 만들어 줄 수 있었습니다. 이를 이요해 몬스터의 가시성 판단을 구현할 수 있었고, 실제로 게임내에서도 잠입미션이나, 기본 전투 대상인식등의 서버기반 컨텐츠에 광범위하게 사용되고 있습니다.
  • #65: 실제 검은사막 에서 사용중인덤불데이터입니다. 이 잎사귀 영역은 통행에는 지장이 없는 타입이지만, 가시성 판단에 사용하고 있습니다.
  • #66: 동일한 원리로, 공격지점에서 공격 대상까지의 차폐물이 있는지에도 같은 기능이 사용됩니다. 스크린샷은 크자카 라는 월드보스인데요. 브레스를 사용할때 기둥뒤에 숨어있으면 데미지를 받지 않게 됩니다.
  • #67: 클라이언트에서 인지할 수 없는 거리에 대한 충돌판정이 가능해진다. (검은사막의 대포류 발사체들은 서버에서 충돌판정이 발생한다.) 몬스터나 NPC들도 같은대포기능을 이용해트리나 요새나 트롤 요새와 같이 대규모 전투장면을 구현할 수 있었습니다.
  • #68: 동작별로 이동가능한 속성들이 고정되므로 (점프는 공중, 달리기는 지면… ) 성벽을 통과한다거나, 땅속이나 하늘을 날아다니는 이동 핵들을 원천적으로 검증할 수 있다.
  • #69: 동작별로 이동가능한 속성들이 고정되므로 (점프는 공중, 달리기는 지면… ) 성벽을 통과한다거나, 땅속이나 하늘을 날아다니는 이동 핵들을 원천적으로 검증할 수 있다.
  • #70: 동작별로 이동가능한 속성들이 고정되므로 (점프는 공중, 달리기는 지면… ) 성벽을 통과한다거나, 땅속이나 하늘을 날아다니는 이동 핵들을 원천적으로 검증할 수 있다.
  • #71: 몬스터들도 같은 인자를 이용해서, 수중 몬스터나 하피 같은 공중을 날아다니는 네비게이션이 가능해졌습니다.
  • #72: Dynamic SubLevel 이라고 하는 용어는 인터넷에서 본건데요. 보통은 이렇게 고정된 지형 위에서 움직이는 다양한 Agent들과 Obstacle이 존재하는 상황을 가정할 수 있습니다.
  • #73: 하지만, 배,엘리베이터,유저가 설치한바리케이트등등캐릭터가 올라탈 수 있는 발판들은 이야기가 달라지죠. Agent가 탐색해야될 대상이 월드의 데이터가 아닌, 탑승물을 기본으로 탐색할 수 있도록 동적인 처리가 가능해야 합니다. 이것들은 게임
  • #74: 월드 공간이 아닌,다른 캐릭터를 태우는 경우네비게이션데이터를 뽑아 일반 지형과 동일하게네비게이션데이터를 이용한 검증을 수행할 수 있도록 한다. 대양의 경우 파도의 폭이 큰데,이 경우 배의로컬좌표계로통일하여 서버와 동기화 한다. 탑승물이이동하면,탑승자들이 전원 위치가 갱신되므로, 플레이어가 다른탑승물에타있을때전송하는 데이터전송량을줄일 수 있다.