SlideShare a Scribd company logo
1 of 28
Download to read offline
Creating 3D Game Client Program
With Project Anarchy
- Part 5. waste of time shoveling, our Story -
분 류 NHN NEXT 1기 실전프로젝트 산출물
실습 업체 블루홀 스튜디오
프로젝트 팀명 그랜드부다페스트(문진상/신동찬)
작성자 신동찬
Created Date 2015-01-06
자료를 읽기에 앞서 알아야 할 것
이번 강의에서 당신이 자료에서 참고하거나 배울 수 있는 것
기대했을 수 있지만 자료에 없는 내용
- 앞선 자료들 좀 보고 오세요
- Tool 만들기 : http://www.slideshare.net/ssusere4785c/project-anarchyvision-engine-part1
- part 1 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3-d-part1
- part 2 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3d-part2vforge
- part 3 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3-d-part3
- part 4 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3-d-part4networkmemory-management
- Project Anarchy를 과거 Vision Engine 처럼 사용하는 법
- A* 알고리즘
- 이외 잡다한 삽질기
- 전체 소스 코드 URL(private 입니다…)
Game Tool
Game Tool
클라이언트 – Tool 연동 실습이었는데,
Game Tool 자체가 삽질?!
Game Tool With Vision 엔진이 삽질
삽질기 1편 : http://www.slideshare.net/ssusere4785c/project-anarchyvision-engine-part1
삽질기 2편 : http://www.slideshare.net/ssusere4785c/create-game-tool-with-project-anarchy-part2
Game Tool
Tool은 C#으로 제작 했고,
Vision Engine과의 연동 과정에서 엄청난 삽질 동반
(calling convention 문제로 아예 통으로 때려 넣어 처리 함)
예제코드와 교수님의 가르침이 없었으면
지금도 못하지 않았을까...
제대로 알지 못하고 사용하면 진짜 고생합니다...
Game Tool
주요 삽질기 #1
Game Tool
주요 삽질기 #2
Game Tool
삽질기 1편 : http://www.slideshare.net/ssusere4785c/project-anarchyvision-engine-part1
삽질기 2편 : http://www.slideshare.net/ssusere4785c/create-game-tool-with-project-anarchy-part2
더 자세한 정보
Axis
coordinates and axis
Vision Engine은 DX 축이냐 OpenGL 축이냐 하는 논쟁과 궤를 완전히 달리한다
(전혀 처음 보는 축 구성)
처음에 회전, 이동 등을 하면 상당히 어색하다
coordinates and axis
지형 관련 작업에서 특히 많은 삽질이 있었는데,
그 이유는 2차원 지형 표현할 때 생각하는 x, y 축과 실제 x, y 축이 반대였기 때문이다
(DX에서는 x, z 축으로 했었다)
처음에는 캐릭터 이동에서도 많은 실수가 있었다
Callback Function
Callback Ordering
Vision Engine이 callback 사용이 빈번하기 때문에
잘 알고 쓰면 정말 잘 되어 있기 때문에
callback 등록도 정말 쉽게 되어 있다
Callback Ordering
하지만 등록 순서를 따지기 때문에
직접 만든 클래스인 경우 제어 흐름에 대해 정확히 파악하고
원하는 순서대로 Callback을 등록해 사용해야 한다
마우스 포인터
layer
Callback Ordering
OnRenderHook에 잘못된 Callback 등록 결과
지형 layer
캐릭터 layer
마우스 포인터는 지형보다 뒤에 있는 반면
캐릭터는 지형보다 앞에 그려지고
마우스는 지형 뒤에 있고, 캐릭터 보다 앞에 렌더링
논리적으로 맞지 않은 상황이 발생
A* Algorithm
A* Algorithm
원래 학습 목표에는 분명 없었는데...
12월 초 시연을 마치고 추가된 목표가 발생
• Height Map
• Height Map Tool
• 같이 따라오는 길 찾기 알고리즘
그래서 잘 알려진
A* Algorithm을 사용하는 것으로 함
A* Algorithm
길찾기 순서
1. mesh buffer에 있는 vertex position 값을 2차원 배열로 만듦
2. 시작 위치와 끝 위치를 확인
3. 시작 위치와 끝 위치를 vertex point화(시작점과 끝점)
4. vertex point를 이용해 길찾기(algorithm 돌리기)
5. 찾은 길을 List로 제작하고 시작점과 끝점을 시작 위치 끝 위치로 되돌리기
Position to Vertex
전체 world map을 8000으로 가정
(-4000.0f ~ 4000.0f)
A* Algorithm
검증된 pseudo code 를 사용하자
우리나라 블로그 자료를 결코 맹신하지는 말 것
위키피디아도 영어 자료를 보자...
최초 구현 했을 때 n^3 알고리즘 이어서 사용 불가
A* Algorithm
위키피디아 영문 pseudo code로 작업 후 개선
현재 동적으로 길찾기 구현
A* Algorithm
path 재 조합에서 시작과 끝을 출발점과 종료 지점으로 바꿔
어색한 이동을 방지
A* Algorithm with MinHeap
기능과 상관없이 시간을 소모한 작업 구간
사실 템플릿으로 만들지 않아도 되었는데
굳이 템플릿으로 구현
compare 구현 실수로 더 많은 시간 허비
Project Anarchy
Project Anarchy
3학기(14년 10월 초 ~ 14년 1월 초) 내내 학습 했지만,
아직도 Vision Engine을 전부 파악할 수 없었다.
게다가 Havok에서 제공하는 physics, Ai 등은 손도 못 대봄
(충돌체 구현 등에서 활용하려 작업했으나 실패)
이 엔진 기능도 좋고 진짜 참 좋은데...
vForge 안 거치면 너무 힘듭니다
Project Anarchy
커뮤니티 기능의 사망도 문제
한국에서 사용하는 사람이 적어서 토론도 거의 없으며
10월 말에 올린 질문에 대한 답이… 무려 12월 31일
(그래도 답을 달아줘서 정말 고맙습니다. 안달아 주실 줄 알았는데 그것도 한글로!
그런데 답변 주신 것 안 되는 방법이에요. 저희 다 해봤던 겁니다)
하지만 Unity 등 기타 대세 엔진과는
차원이 다른 황량함이 커뮤니티 사이트에서 느껴짐
분명히 성능, 기능, C++ 친화도 등
기존 게임 개발자들에게 장점이 많은 엔진인 것은 확실함
그러나
학습 시간의 과다
예제의 부족(러시아어 주석 달린 코드로도 공부)
커뮤니티의 비활성화
등의 문제로 경쟁 엔진 대비 생산성이나 기타 측면에서 부족한 모습을 보임
The END
# 이게 끝이 나긴 나는 구나 ㅠㅠ

More Related Content

What's hot

Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2Byeongsu Kang
 
Introduction to Parallel Programming
Introduction to Parallel ProgrammingIntroduction to Parallel Programming
Introduction to Parallel ProgrammingUNIST
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 CHeesuk Kang
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinDong Chan Shin
 
Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍Sang-Kyu Park
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트효준 강
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션QooJuice
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaDexter Jung
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)Sang-Kyu Park
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회Byeongsu Kang
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Dong Chan Shin
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍QooJuice
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터Dong Chan Shin
 
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥Seomgi Han
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinDong Chan Shin
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Heungsub Lee
 

What's hot (20)

Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2
 
Introduction to Parallel Programming
Introduction to Parallel ProgrammingIntroduction to Parallel Programming
Introduction to Parallel Programming
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 C
 
Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshin
 
Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With Java
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본Effective c++ chapter3, 4 요약본
Effective c++ chapter3, 4 요약본
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
TBB 소개
TBB 소개TBB 소개
TBB 소개
 
More effective c++ 항목30부터
More effective c++ 항목30부터More effective c++ 항목30부터
More effective c++ 항목30부터
 
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
파이콘 한국 2019 - 파이썬으로 서버를 극한까지 끌어다 쓰기: Async I/O의 밑바닥
 
5 6 1
5 6 15 6 1
5 6 1
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshin
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 

Similar to Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling

Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Dong Chan Shin
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Dong Chan Shin
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Dong Chan Shin
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)Jinwook On
 
Project anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementProject anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementDong Chan Shin
 
July report in korean
July report in koreanJuly report in korean
July report in koreannao takatoshi
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하GyooHa Kim
 
요즘 유행하는 AI 나도 해보자 (feat. CoreML)
요즘 유행하는 AI 나도 해보자 (feat. CoreML)요즘 유행하는 AI 나도 해보자 (feat. CoreML)
요즘 유행하는 AI 나도 해보자 (feat. CoreML)Chiwon Song
 
More effective c++ chapter3 4
More effective c++ chapter3 4More effective c++ chapter3 4
More effective c++ chapter3 4Dong Chan Shin
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2KoChungWook
 
헤비 이큅먼트
헤비 이큅먼트헤비 이큅먼트
헤비 이큅먼트성원 박
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점Jubok Kim
 
딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기Myeongju Kim
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법NAVER D2
 

Similar to Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling (20)

Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
 
Project anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementProject anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory management
 
July report in korean
July report in koreanJuly report in korean
July report in korean
 
자료구조02
자료구조02자료구조02
자료구조02
 
Modern android
Modern androidModern android
Modern android
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하
 
요즘 유행하는 AI 나도 해보자 (feat. CoreML)
요즘 유행하는 AI 나도 해보자 (feat. CoreML)요즘 유행하는 AI 나도 해보자 (feat. CoreML)
요즘 유행하는 AI 나도 해보자 (feat. CoreML)
 
More effective c++ chapter3 4
More effective c++ chapter3 4More effective c++ chapter3 4
More effective c++ chapter3 4
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2
 
헤비 이큅먼트
헤비 이큅먼트헤비 이큅먼트
헤비 이큅먼트
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
 
In c
In cIn c
In c
 
딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 

More from Dong Chan Shin

User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리Dong Chan Shin
 
몰입 인지공백 프래그난쯔법칙 스토리텔링
몰입 인지공백 프래그난쯔법칙 스토리텔링몰입 인지공백 프래그난쯔법칙 스토리텔링
몰입 인지공백 프래그난쯔법칙 스토리텔링Dong Chan Shin
 
Unreal summit 2014 다시 보기
Unreal summit 2014 다시 보기Unreal summit 2014 다시 보기
Unreal summit 2014 다시 보기Dong Chan Shin
 
RTS 게임 ui에서 확인 할 수 있는 rts 게임 usability
RTS 게임 ui에서 확인 할 수 있는 rts 게임 usabilityRTS 게임 ui에서 확인 할 수 있는 rts 게임 usability
RTS 게임 ui에서 확인 할 수 있는 rts 게임 usabilityDong Chan Shin
 
Proactor/Reactor Server io 성능 분석
Proactor/Reactor Server io 성능 분석Proactor/Reactor Server io 성능 분석
Proactor/Reactor Server io 성능 분석Dong Chan Shin
 
More effective c++ chapter4 이후 항목 29까지
More effective c++ chapter4 이후 항목 29까지More effective c++ chapter4 이후 항목 29까지
More effective c++ chapter4 이후 항목 29까지Dong Chan Shin
 
C++ try catch 어디까지 가봤니
C++ try catch 어디까지 가봤니C++ try catch 어디까지 가봤니
C++ try catch 어디까지 가봤니Dong Chan Shin
 
Dx관련 alignment 정리 by 은자림
Dx관련 alignment 정리 by 은자림Dx관련 alignment 정리 by 은자림
Dx관련 alignment 정리 by 은자림Dong Chan Shin
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinDong Chan Shin
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Dong Chan Shin
 

More from Dong Chan Shin (10)

User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리User experience Design에 활용되는 각종 용어 정리
User experience Design에 활용되는 각종 용어 정리
 
몰입 인지공백 프래그난쯔법칙 스토리텔링
몰입 인지공백 프래그난쯔법칙 스토리텔링몰입 인지공백 프래그난쯔법칙 스토리텔링
몰입 인지공백 프래그난쯔법칙 스토리텔링
 
Unreal summit 2014 다시 보기
Unreal summit 2014 다시 보기Unreal summit 2014 다시 보기
Unreal summit 2014 다시 보기
 
RTS 게임 ui에서 확인 할 수 있는 rts 게임 usability
RTS 게임 ui에서 확인 할 수 있는 rts 게임 usabilityRTS 게임 ui에서 확인 할 수 있는 rts 게임 usability
RTS 게임 ui에서 확인 할 수 있는 rts 게임 usability
 
Proactor/Reactor Server io 성능 분석
Proactor/Reactor Server io 성능 분석Proactor/Reactor Server io 성능 분석
Proactor/Reactor Server io 성능 분석
 
More effective c++ chapter4 이후 항목 29까지
More effective c++ chapter4 이후 항목 29까지More effective c++ chapter4 이후 항목 29까지
More effective c++ chapter4 이후 항목 29까지
 
C++ try catch 어디까지 가봤니
C++ try catch 어디까지 가봤니C++ try catch 어디까지 가봤니
C++ try catch 어디까지 가봤니
 
Dx관련 alignment 정리 by 은자림
Dx관련 alignment 정리 by 은자림Dx관련 alignment 정리 by 은자림
Dx관련 alignment 정리 by 은자림
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshin
 
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬
 

Project anarchy로 3d 게임 만들기 part_5_waste of time shoveling

  • 1. Creating 3D Game Client Program With Project Anarchy - Part 5. waste of time shoveling, our Story - 분 류 NHN NEXT 1기 실전프로젝트 산출물 실습 업체 블루홀 스튜디오 프로젝트 팀명 그랜드부다페스트(문진상/신동찬) 작성자 신동찬 Created Date 2015-01-06
  • 2. 자료를 읽기에 앞서 알아야 할 것 이번 강의에서 당신이 자료에서 참고하거나 배울 수 있는 것 기대했을 수 있지만 자료에 없는 내용 - 앞선 자료들 좀 보고 오세요 - Tool 만들기 : http://www.slideshare.net/ssusere4785c/project-anarchyvision-engine-part1 - part 1 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3-d-part1 - part 2 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3d-part2vforge - part 3 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3-d-part3 - part 4 : http://www.slideshare.net/Dong-chan_Shin/project-anarchy-3-d-part4networkmemory-management - Project Anarchy를 과거 Vision Engine 처럼 사용하는 법 - A* 알고리즘 - 이외 잡다한 삽질기 - 전체 소스 코드 URL(private 입니다…)
  • 4. Game Tool 클라이언트 – Tool 연동 실습이었는데, Game Tool 자체가 삽질?! Game Tool With Vision 엔진이 삽질 삽질기 1편 : http://www.slideshare.net/ssusere4785c/project-anarchyvision-engine-part1 삽질기 2편 : http://www.slideshare.net/ssusere4785c/create-game-tool-with-project-anarchy-part2
  • 5. Game Tool Tool은 C#으로 제작 했고, Vision Engine과의 연동 과정에서 엄청난 삽질 동반 (calling convention 문제로 아예 통으로 때려 넣어 처리 함) 예제코드와 교수님의 가르침이 없었으면 지금도 못하지 않았을까... 제대로 알지 못하고 사용하면 진짜 고생합니다...
  • 8. Game Tool 삽질기 1편 : http://www.slideshare.net/ssusere4785c/project-anarchyvision-engine-part1 삽질기 2편 : http://www.slideshare.net/ssusere4785c/create-game-tool-with-project-anarchy-part2 더 자세한 정보
  • 10. coordinates and axis Vision Engine은 DX 축이냐 OpenGL 축이냐 하는 논쟁과 궤를 완전히 달리한다 (전혀 처음 보는 축 구성) 처음에 회전, 이동 등을 하면 상당히 어색하다
  • 11. coordinates and axis 지형 관련 작업에서 특히 많은 삽질이 있었는데, 그 이유는 2차원 지형 표현할 때 생각하는 x, y 축과 실제 x, y 축이 반대였기 때문이다 (DX에서는 x, z 축으로 했었다) 처음에는 캐릭터 이동에서도 많은 실수가 있었다
  • 13. Callback Ordering Vision Engine이 callback 사용이 빈번하기 때문에 잘 알고 쓰면 정말 잘 되어 있기 때문에 callback 등록도 정말 쉽게 되어 있다
  • 14. Callback Ordering 하지만 등록 순서를 따지기 때문에 직접 만든 클래스인 경우 제어 흐름에 대해 정확히 파악하고 원하는 순서대로 Callback을 등록해 사용해야 한다
  • 15. 마우스 포인터 layer Callback Ordering OnRenderHook에 잘못된 Callback 등록 결과 지형 layer 캐릭터 layer 마우스 포인터는 지형보다 뒤에 있는 반면 캐릭터는 지형보다 앞에 그려지고 마우스는 지형 뒤에 있고, 캐릭터 보다 앞에 렌더링 논리적으로 맞지 않은 상황이 발생
  • 17. A* Algorithm 원래 학습 목표에는 분명 없었는데... 12월 초 시연을 마치고 추가된 목표가 발생 • Height Map • Height Map Tool • 같이 따라오는 길 찾기 알고리즘 그래서 잘 알려진 A* Algorithm을 사용하는 것으로 함
  • 18. A* Algorithm 길찾기 순서 1. mesh buffer에 있는 vertex position 값을 2차원 배열로 만듦 2. 시작 위치와 끝 위치를 확인 3. 시작 위치와 끝 위치를 vertex point화(시작점과 끝점) 4. vertex point를 이용해 길찾기(algorithm 돌리기) 5. 찾은 길을 List로 제작하고 시작점과 끝점을 시작 위치 끝 위치로 되돌리기
  • 19. Position to Vertex 전체 world map을 8000으로 가정 (-4000.0f ~ 4000.0f)
  • 20. A* Algorithm 검증된 pseudo code 를 사용하자 우리나라 블로그 자료를 결코 맹신하지는 말 것 위키피디아도 영어 자료를 보자... 최초 구현 했을 때 n^3 알고리즘 이어서 사용 불가
  • 21. A* Algorithm 위키피디아 영문 pseudo code로 작업 후 개선 현재 동적으로 길찾기 구현
  • 22. A* Algorithm path 재 조합에서 시작과 끝을 출발점과 종료 지점으로 바꿔 어색한 이동을 방지
  • 23. A* Algorithm with MinHeap 기능과 상관없이 시간을 소모한 작업 구간 사실 템플릿으로 만들지 않아도 되었는데 굳이 템플릿으로 구현 compare 구현 실수로 더 많은 시간 허비
  • 25. Project Anarchy 3학기(14년 10월 초 ~ 14년 1월 초) 내내 학습 했지만, 아직도 Vision Engine을 전부 파악할 수 없었다. 게다가 Havok에서 제공하는 physics, Ai 등은 손도 못 대봄 (충돌체 구현 등에서 활용하려 작업했으나 실패) 이 엔진 기능도 좋고 진짜 참 좋은데... vForge 안 거치면 너무 힘듭니다
  • 26. Project Anarchy 커뮤니티 기능의 사망도 문제 한국에서 사용하는 사람이 적어서 토론도 거의 없으며 10월 말에 올린 질문에 대한 답이… 무려 12월 31일 (그래도 답을 달아줘서 정말 고맙습니다. 안달아 주실 줄 알았는데 그것도 한글로! 그런데 답변 주신 것 안 되는 방법이에요. 저희 다 해봤던 겁니다) 하지만 Unity 등 기타 대세 엔진과는 차원이 다른 황량함이 커뮤니티 사이트에서 느껴짐
  • 27. 분명히 성능, 기능, C++ 친화도 등 기존 게임 개발자들에게 장점이 많은 엔진인 것은 확실함 그러나 학습 시간의 과다 예제의 부족(러시아어 주석 달린 코드로도 공부) 커뮤니티의 비활성화 등의 문제로 경쟁 엔진 대비 생산성이나 기타 측면에서 부족한 모습을 보임
  • 28. The END # 이게 끝이 나긴 나는 구나 ㅠㅠ