28
Creating 3D Game Client Program With Project Anarchy - Part 5. waste of time shoveling, our Story - NHN NEXT 1기 실전프로젝트 산출물 실습 업체 블루홀 스튜디오 프로젝트 팀명 그랜드부다페스트(문진상/신동찬) 작성자 신동찬 Created Date 2015-01-06

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

Embed Size (px)

Citation preview

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

Creating 3D Game Client Program

With Project Anarchy

- Part 5. waste of time shoveling, our Story -

분 류 NHN NEXT 1기 실전프로젝트 산출물

실습 업체 블루홀 스튜디오

프로젝트 팀명 그랜드부다페스트(문진상/신동찬)

작성자 신동찬

Created Date 2015-01-06

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

자료를 읽기에 앞서 알아야 할 것

이번 강의에서 당신이 자료에서 참고하거나 배울 수 있는 것

기대했을 수 있지만 자료에 없는 내용

- 앞선 자료들 좀 보고 오세요- 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 입니다…)

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

Game Tool

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

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

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

Game Tool

Tool은 C#으로 제작 했고,Vision Engine과의 연동 과정에서 엄청난 삽질 동반(calling convention 문제로 아예 통으로 때려 넣어 처리 함)

예제코드와 교수님의 가르침이 없었으면지금도 못하지 않았을까...

제대로 알지 못하고 사용하면 진짜 고생합니다...

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

Game Tool

주요 삽질기 #1

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

Game Tool

주요 삽질기 #2

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

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

더 자세한 정보

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

Axis

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

coordinates and axis

Vision Engine은 DX 축이냐 OpenGL 축이냐 하는 논쟁과 궤를 완전히 달리한다(전혀 처음 보는 축 구성)

처음에 회전, 이동 등을 하면 상당히 어색하다

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

coordinates and axis

지형 관련 작업에서 특히 많은 삽질이 있었는데,그 이유는 2차원 지형 표현할 때 생각하는 x, y 축과 실제 x, y 축이 반대였기 때문이다(DX에서는 x, z 축으로 했었다)

처음에는 캐릭터 이동에서도 많은 실수가 있었다

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

Callback Function

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

Callback Ordering

Vision Engine이 callback 사용이 빈번하기 때문에잘 알고 쓰면 정말 잘 되어 있기 때문에callback 등록도 정말 쉽게 되어 있다

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

Callback Ordering

하지만 등록 순서를 따지기 때문에직접 만든 클래스인 경우 제어 흐름에 대해 정확히 파악하고

원하는 순서대로 Callback을 등록해 사용해야 한다

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

마우스 포인터layer

Callback Ordering

OnRenderHook에 잘못된 Callback 등록 결과

지형 layer

캐릭터 layer

마우스 포인터는 지형보다 뒤에 있는 반면캐릭터는 지형보다 앞에 그려지고마우스는 지형 뒤에 있고, 캐릭터 보다 앞에 렌더링

논리적으로 맞지 않은 상황이 발생

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

A* Algorithm

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

A* Algorithm

원래 학습 목표에는 분명 없었는데...12월 초 시연을 마치고 추가된 목표가 발생

• Height Map• Height Map Tool• 같이 따라오는 길 찾기 알고리즘

그래서 잘 알려진A* Algorithm을 사용하는 것으로 함

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

A* Algorithm

길찾기 순서

1. mesh buffer에 있는 vertex position 값을 2차원 배열로 만듦2. 시작 위치와 끝 위치를 확인3. 시작 위치와 끝 위치를 vertex point화(시작점과 끝점)4. vertex point를 이용해 길찾기(algorithm 돌리기)5. 찾은 길을 List로 제작하고 시작점과 끝점을 시작 위치 끝 위치로 되돌리기

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

Position to Vertex

전체 world map을 8000으로 가정(-4000.0f ~ 4000.0f)

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

A* Algorithm

검증된 pseudo code 를 사용하자

우리나라 블로그 자료를 결코 맹신하지는 말 것위키피디아도 영어 자료를 보자...

최초 구현 했을 때 n^3 알고리즘 이어서 사용 불가

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

A* Algorithm

위키피디아 영문 pseudo code로 작업 후 개선현재 동적으로 길찾기 구현

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

A* Algorithm

path 재 조합에서 시작과 끝을 출발점과 종료 지점으로 바꿔어색한 이동을 방지

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

A* Algorithm with MinHeap

기능과 상관없이 시간을 소모한 작업 구간사실 템플릿으로 만들지 않아도 되었는데굳이 템플릿으로 구현

compare 구현 실수로 더 많은 시간 허비

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

Project Anarchy

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

Project Anarchy

3학기(14년 10월 초 ~ 14년 1월 초) 내내 학습 했지만,아직도 Vision Engine을 전부 파악할 수 없었다.

게다가 Havok에서 제공하는 physics, Ai 등은 손도 못 대봄(충돌체 구현 등에서 활용하려 작업했으나 실패)

이 엔진 기능도 좋고 진짜 참 좋은데...

vForge 안 거치면 너무 힘듭니다

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

Project Anarchy

커뮤니티 기능의 사망도 문제한국에서 사용하는 사람이 적어서 토론도 거의 없으며

10월 말에 올린 질문에 대한 답이… 무려 12월 31일

(그래도 답을 달아줘서 정말 고맙습니다. 안달아 주실 줄 알았는데 그것도 한글로!그런데 답변 주신 것 안 되는 방법이에요. 저희 다 해봤던 겁니다)

하지만 Unity 등 기타 대세 엔진과는차원이 다른 황량함이 커뮤니티 사이트에서 느껴짐

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

분명히 성능, 기능, C++ 친화도 등기존 게임 개발자들에게 장점이 많은 엔진인 것은 확실함

그러나학습 시간의 과다예제의 부족(러시아어 주석 달린 코드로도 공부)커뮤니티의 비활성화

등의 문제로 경쟁 엔진 대비 생산성이나 기타 측면에서 부족한 모습을 보임

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

The END# 이게 끝이 나긴 나는 구나 ㅠㅠ