편집자의 선택
√ 이 책은 업계 최전선에서 겪은 경험 사례를 집대성한 책입니다.
√ 모든 솔루션은 Tencent 게임 출시 프로젝트에서 나옵니다.
√ 게임산업 혁신기술 선정
√ Tencent 게임 연구 개발 독창적인 기술 솔루션 및 경험
√ Tencent 게임팀의 공동 연구 결과를 나타냅니다.
√ 여러 핵심 핵심 기술 영역을 다룹니다.
√ 중국어 버전의 게임 프로그래밍 보석
√ 전국 게임 실무자의 전반적인 발전 수준 향상
간략한 소개
"Tencent 게임 개발 본질"은 Tencent 게임 R&D 팀의 기술 결정체입니다. Tencent Games의 10명 이상의 고급 기술 전문가가 집필했습니다. 독립적인 게임 개발 과정에서 팀이 축적한 기술 솔루션을 구성하고 강력한 다양성을 갖추고 있습니다. 적시성, 콘텐츠에는 게임 스크립팅 시스템 및 개발 도구, 수학과 물리학, 컴퓨터 그래픽, 인공 지능 및 백엔드 아키텍처 등이 포함됩니다.
저자 소개
Tencent Games에는 최전선 기술 연구 및 개발과 최첨단 혁신에 종사하는 10명 이상의 핵심 개발 기술 전문가가 있습니다.
목차
목차
1부 게임 수학
Chapter 1 SDF 기반 조이스틱 이동 2
요약 2
1.1 소개 3
1.2 부호 있는 거리 필드(SDF 3
1.3 래스터 데이터를 사용하여 SDF 4 사전 계산
1.4 자위대 충돌 감지 및 충돌 대응 5
1.5 왕복 여행을 피하세요8
1.6 폴리곤 데이터를 이용한 SDF 사전계산 9
1.7 기타 요구사항10
1.7.1 장애물 영역에서 캐릭터를 이동시키는 방법10
1.7.2 캐릭터가 장애물을 넘어 장거리를 이동할 수 없습니다. 11
1.8 동적 장애물 12
1.9 AI 길찾기 14
1.10 동적 지도 14
1.11 요약 17
참고문헌 17
2장 고성능 고정 소수점 구현 18
요약 18
2.1 소개 18
2.1.1 부동소수점 숫자 소개 18
2.1.2 32비트 부동 소수점 수(단정밀도) 표현 원리 19
2.2 정수의 이진 표현에 기초한 고정 소수점 수의 원리 19
2.2.1 32비트 고정 소수점 숫자 표현의 원리 19
2.2.2 64비트 고정 소수점 숫자 표현의 원리 20
2.3 고정소수점수의 4가지 산술연산 21
2.3.1 덧셈과 뺄셈 22
2.3.2 곱셈 22
2.3.3 제23부
2.4 고정소수점 수의 제곱근과 초월함수 구현 방법 23
2.4.1 다항식 피팅 24
2.4.2 사인/코사인 함수 25
2.4.3 지수함수 26
2.4.4 로그 함수 27
2.4.5 제곱근 연산 27
2.4.6 제곱근을 취하여 28의 역수 구하기
2.4.7 조회 테이블 방법을 사용하지 않는 이유 30
2.5 고정소수점수의 오차 비교 및 성능 테스트 30
2.5.1 초월함수와 제곱근 30의 오차 검정
2.5.2 성능 테스트 30
2.6 요약 31
참고문헌 31
2부 게임 물리학
3장 효율적인 호 길이 매개변수화된 경로 시스템 34
요약 34
3.1 소개 34
3.2 끝점 사이의 2차 스플라인 구성 35
3.3 경로 구성 38
3.4 곡선 39의 호 길이 매개변수화
3.5 곡선 위의 단순 동작 42
3.5.1 42 실행
3.5.2 점프 43
3.5.3 인접 경로 간 전환 44
3.5.4 곡선의 회전 보간 45
3.6 요약 46
참고문헌 46
제4장 선박의 물리적 시뮬레이션과 동기식 설계 47
요약 47
4.1 부력 시스템 48
4.1.1 부력 48
4.1.2 리프트 52
4.1.3 당기는 힘 52
4.1.4 두드리는 힘 53
4.1.5 저항의 상한 54
4.2 엔진 시스템 55
4.2.1 이동 및 조향 시뮬레이션 55
4.2.2 구심력 계산 56
4.3 엔터티-컴포넌트 및 동기화 개요 56
4.4 부력 시스템의 물리적 업데이트 메커니즘 57
4.5 요약 59
참고문헌 59
Chapter 5 복셀 메모리와 3D 게임 충돌의 효율성 최적화 60
요약 60
5.1 배경 소개 60
5.2 복셀 생성 62
5.3 복셀 메모리 최적화 62
5.3.1 복셀 병합 원리 62
5.3.2 복셀 병합 알고리즘 64
5.3.3 지반처리 65
5.3.4 수처리 66
5.3.5 범위 제어 67
5.3.6 메모리 자체 관리 67
5.3.7 복셀 메모리 최적화 알고리즘의 효과 68
5.3.8 복셀 효율 최적화 69
5.4 내비메시 생성 69
5.4.1 복셀 생성 NavMesh 69
5.4.2 지면 높이 70 구하기
5.4.3 배경 차단 다이어그램 71
5.4.4 전경 우선순위 NavMesh 71
5.4.5 톱니 72
5.5 걷기, 가벼운 작업, 카메라 충돌 73
5.5.1 걷기 73
5.5.2 청공 75
5.5.3 카메라 충돌 75
참고문헌 76
3부 컴퓨터 그래픽
Chapter 6 모바일 스포츠 현실적 모델 최적화 78
요약 78
6.1 소개 79
6.2 계획 설계 아이디어 79
6.2.1 역할 통일성과 차이 요소 분석 79
6.2.2 캐릭터 표현 = 인체 + 의상 80
6.2.3 역할 자원 조직 83
6.2.4 자원 생산 및 구현 84
6.3 구체적인 구현 92
6.3.1 구현 프로세스 92
6.3.2 CPU 로직 93
6.3.3 GPU 렌더링 97
6.4 효과 이점, 성능 분석 및 결론 97
6.4.1 계획의 장점과 단점 98
6.4.2 계획 보충 99
6.4.3 응용 시나리오 99
참고문헌 100
Chapter 7 대규모 3D 모델 데이터의 최적화된 압축 및 미세 점진적 로딩 101
요약 101
7.1 소개 102
7.2 정점 데이터 최적화 102
7.2.1 정점 데이터 병합 및 중복 제거 103
7.2.2 인덱스 데이터 병합 104
7.2.3 정점 데이터 정렬 104
7.2.4 하위 그리드 분할 및 병합 105
7.2.5 정점 데이터 인코딩 및 압축 105
7.3 점진적 로딩에 도움이 되는 데이터 구성 방법 112
7.4 요약 113
참고문헌 114
4부 인공지능과 백엔드 아키텍처
Chapter 8 게임 AI 개발 프레임워크 구성요소 동작 및 메타프로그래밍 116
요약 116
8.1 행동의 원리 117
8.1.1 유형 정보 117
8.1.2 행동 트리란 무엇인가 118
8.1.3 예시 1 119
8.1.4 실행 지침 119
8.1.5 고급 120
8.1.6 예시 2 120
8.1.7 추가 발전 123
8.1.8 요약 123
8.2 행동에 메타프로그래밍 적용 125
8.2.1 템플릿 전문화 126
8.2.2 로딩의 전문화 126
8.2.3 즉석 전문화 129
Chapter 9 점프 탐색 알고리즘의 효율성, 메모리, 경로 최적화 방법 131
요약 131
9.1 소개 132
9.2 JPS 알고리즘 133
9.2.1 알고리즘 소개 133
9.2.2 A* 알고리즘 프로세스 133
9.2.3 JPS 알고리즘 프로세스 135
9.2.4 “JPS 알고리즘의 두 가지 정의와 세 가지 규칙 135
9.2.5 알고리즘 예제 137
9.3 JPS 알고리즘 최적화 138
9.3.1 JPS 효율성 최적화 알고리즘 138
9.3.2 JPS 메모리 최적화 144
9.3.3 경로 최적화 145
9.4 GPPC 대회 해석 146
9.4.1 GPPC 경쟁 및 지도 데이터세트 146
9.4.2 GPPC 평가 시스템 148
9.4.3 GPPC 경쟁 알고리즘과 그 비교 150
참고문헌 151
Chapter 10 MMORPG 개발 효율성과 성능을 최적화하기 위한 제한된 멀티스레딩 모델 152
요약 152
10.1 소개 152
10.1.1 다중 프로세스 단일 스레드 모델 153
10.1.2 단일 프로세스 다중 스레드 모델 153
10.1.3 단일 프로세스 단일 스레드 모델 153
10.2 제한된 멀티스레딩 모델 154
10.3 OpenMP 프레임워크를 사용하여 제한된 멀티스레딩 모델을 빠르게 구현 156
10.4 멀티스레드 논리 코드 제어 158
10.5 비동기화는 데이터 보안 문제를 해결한다 159
10.6 “안전하지 않은” 접근 방지 160
10.7 대형 자물쇠 분해 161
10.8 기타 제안 사항 163
참고문헌 164
5부 게임 스크립트 시스템
11장 Lua 번역 도구 - C#에서 Lua로 166
요약 166
11.1 원래 디자인 의도 166
11.2 구현 원칙 167
11.2.1 업계 유사 솔루션의 참조 및 비교 167
11.2.2 번역 원칙 168
11.2.3 번역 과정 168
11.3 번역 예 170
11.4 구현 세부 사항 174
11.4.1 연속 할당 175
11.4.2 스위치 175
11.4.3 계속 176
11.4.4 부정 매개변수 177
11.4.5 조건식 178
11.5 운영 성과 179
11.6 TKLua 번역 청사진 179
11.6.1 클래스 관계 180
11.6.2 클래스 멤버 180
11.6.3 메소드 본문 181
11.7 개발 방향 182
11.8 요약 184
참고문헌 185
12장 Unreal Engine 4는 Lua 186을 통합합니다.
요약 186
12.1 소개 186
12.2 UE4 메타정보 187
12.2.1 소개 187
12.2.2 Lua는 메타정보를 통해 UE4와 상호작용한다
12.2.3 멤버변수 읽기 및 쓰기 189
12.2.4 함수 호출 190
12.2.5 C++에서는 Lua 191을 호출한다
12.2.6 요약 192
12.3 템플릿 메타프로그래밍을 통해 "접착제" 코드 생성하기 192
12.3.1 인터페이스 디자인 193
12.3.2 구현 195
12.3.3 멤버변수 읽기 및 쓰기 197
12.3.4 참조 유형 198
12.3.5 내보내기 기능 199
12.3.6 기본 실제 매개변수 200
12.3.7 기본 생성 함수 202
12.3.8 C++에서는 Lua 203을 호출한다
12.3.9 요약 203
12.4 최적화 203
12.4.1 UObject 포인터와 표 203
12.4.2 구조 204
12.4.3 런타임 시 핫 로딩 205
6부 개발 도구
13장 FASTBuild를 사용하여 Unreal Engine 4 구동 208
요약 208
13.1 소개 209
13.2 UE4 분산 도구 209
13.2.1 파생 데이터 캐시(DDC 209
13.2.2 스웜 210
13.2.3 인크레디빌드 210
13.2.4 FAST빌드 211
13.3 Windows 시스템에서 FASTBuild 작업 환경 설정 213
13.3.1 네트워크 아키텍처 213
13.3.2 기본 환경 구축 214
13.3.3 가용성 검증 215
13.4 FASTBuild를 사용하여 UE4 코드와 프로젝트 코드를 분산 컴파일 219
13.4.1 준비 219
13.4.2 다중 머신 FASTBuild 환경 배포 220
13.4.3 UE4 코드 컴파일 및 비교 테스트 220
13.4.4 FASTBuild 최적화 224
13.4.5 UE4 코드의 분산 컴파일을 다시 테스트 227
UE4 셰이더 프로그래밍에 13.5 "초" 228
13.5.1 준비 229
13.5.2 대규모 셰이더 컴파일 테스트 237
13.5.3 머티리얼 에디터에서 셰이더 컴파일 테스트 240
13.6 요약 243
Chapter 14 전체 프레임 동기화 과정을 위한 효율적인 로그 출력 방식 244
요약 244
서문/서문
편집자의 서문
일반 소프트웨어 개발자에게 게임 개발은 항상 미스터리의 베일에 가려져 있는 것처럼 보입니다. 이는 여러 가지 이유 때문일 수 있습니다. 우선, 게임 개발의 기술적 범위는 상대적으로 넓으며, 컴퓨터 그래픽, 물리 시뮬레이션, 실시간 네트워크 동기화 등과 같은 일부 기술은 일반적인 소프트웨어 개발에 거의 사용되지 않습니다. 둘째, 게임 개발은 창조적인 산업으로 다양한 게임 유형의 요구 사항에 많은 차이가 있으며, 많은 기술이 표준을 형성하지 못했고 각 회사의 기술 솔루션과 작업 프로세스에도 많은 차이가 있을 것입니다. 마지막으로 기업 간, 심지어 기업 내부에도 기술적 장벽이 있어 지식과 기술의 흐름에 영향을 미칠 수 있습니다. 이러한 상황은 관심 있는 친구가 이 업계에 진입하는 데 도움이 되지 않으며 실무자의 발전이 제한되어 업계 발전에 장기적인 영향을 미치고 치열한 글로벌 경쟁에 직면하기 어렵게 만듭니다.
인터넷이 대중화되기 전인 1990년대 홍콩에서 편집자는 BBS를 통해 해외에서 "Wolfenstein 3D"의 3차원 실내 장면 렌더링 및 텍스처 매핑 기술과 같은 일부 "표류" 게임 개발 기술 문서만 수집할 수 있었습니다. 비표준 모드 X를 사용하는 방법은 VGA 256 색상 이중 버퍼 렌더링 등을 수행합니다. 정보가 부족한 그 시대에, 신기술이 해독된 문서를 만날 때마다 편집자는 마치 보물을 찾은 듯 들떠 있었다.
중국에서 게임 개발에 종사하는 '베테랑'이라면 아마도 밀레니엄 시대에 쓰여진 책인 '게임 프로그래밍 보석' 시리즈를 읽을 것입니다. 이 시리즈의 책은 전 세대의 개발자에게 영향을 미쳤으며, 전 세계 게임 개발자의 다양한 비법을 엿볼 수 있고, 게임 개발에서 직면하는 다양한 공통 문제를 해결하는 동시에 영감을 주고, 연구와 연구에 영감을 줄 수 있습니다. 개발은 책에 나온 것보다 더 발전했습니다. 좋은 솔루션입니다.
인터넷 정보 폭발 시대로 접어들면서 우리는 온라인상에서 수많은 블로그와 Q&A 등의 정보를 접할 수 있게 되었고, 다양한 신기술을 더욱 빠르게 접할 수 있게 되었습니다. 그러나 동시에 전통적인 출판에 비해 온라인 정보는 일반적으로 더 분산되어 있고 품질이 고르지 않습니다. 실무자들은 또한 기밀 유지를 위해 게임 개발에 사용되는 일부 신기술을 공개하지 않습니다.
이 책은 『게임 프로그래밍의 본질』 시리즈 책에서 영감을 받아 텐센트 게임 엔지니어들이 실제로 게임에 적용되는 일부 기술을 업계 동료들과 공유하고 업계와 공유할 수 있기를 바랍니다. 내부 검토 및 편집 메커니즘을 통해 대중에게 공개될 수 있는 고품질 기사를 선택하고 기술이 어느 정도 다양성과 적시성을 갖도록 보장하기 위해 최선을 다합니다. 국내 업계에서는 이 책이 좀 더 열린 미래를 도모하고 전반적인 기술 수준을 향상시키는 작은 발걸음이 되기를 바랍니다.
이 책은 제안부터 출판까지 무려 1년 반이 걸렸습니다. 바쁜 개발 작업 중에도 저자들이 시간을 내어 기사를 쓸 수 있도록 도와주신 것 외에도 Tencent Game Academy 학장인 Ms. Xia Lin에게 감사드립니다. 그녀의 강력한 지원과 Tencent Game Academy의 Dong Lei에게도 감사드립니다. Liu Ya와 Chen Ruoyi는 프로젝트를 성공적으로 진행했습니다. 또한 이 책의 편집위원 Guo Zhi, Liu Anjian, Kuancini, An Bolin, Wang Yangjun, Sha Ying(특별한 순서는 없음)에게도 진심으로 감사드립니다. 그들은 모두 Tencent Games 각 부서의 기술 전문가들이고 세심하게 검토해 주셨습니다. 기사 내용을 준비했습니다. 확인해보세요. 또한 출판에 도움을 주신 전자산업출판사의 장춘위(Zhang Chunyu)와 게나(Ge Na)에게도 깊은 감사를 드립니다.
마지막으로, 이 책이 독자들에게 도움이 되기를 바라며, 의견이 있으시면 이메일(tencentgamesgems@tencent.com)로 보내주시기 바랍니다. 후속편에서 뵙기를 바랍니다.
——Ye Jinfeng, "Tencent Game Development Essence" 편집장 겸 Tencent Interactive Entertainment Rubik's Cube Studio Group 기술 이사
권장 순서
얼마 전 우리 아이의 같은 반 친구의 엄마이기도 한 고등학교 생물 선생님이 최근 몇 년간 새로 개설된 게임 디자인과 e스포츠 전공에 지원하는 것이 가치가 있는지 솔선해서 나에게 물었다. 아이는 게임을 만드는 데 관심이 많습니다. 이 상담을 듣고 저는 안도의 한숨을 쉬었습니다. 게임이 점점 더 많은 사람들에게 인식되고 있기 때문입니다.
우리는 비디오 게임이 다양한 예술적, 기술적 능력의 정점인 "9번째 예술"이라는 것을 알고 있습니다. 10여년 전 텐센트 최초 자체 개발 게임 'QQ 판타지' 개발에 참여했을 때 프로젝트가 진행되면서 고품질 MMORPG 게임을 개발하려면 강력하고 포괄적인 기술이 필요하다는 점을 깊이 깨달았던 기억이 납니다. 능력. 예를 들어, 몇 가지 기술적 세부 사항: 순간 이동 치트를 최대한 제한하면서 약한 네트워크 환경에서 캐릭터의 이동 끌어오기 및 동기화를 처리하는 방법은 무엇입니까? NPC 행동을 보다 자연스럽고 흥미롭게 만들기 위해 의사 결정 트리를 기반으로 다양한 NPC에 대한 AI를 효율적으로 구현하는 방법은 무엇입니까? 게임 내 경제 시스템의 균형, 다양한 캐릭터 간 능력의 균형, 동시에 수백만 명의 온라인 사용자의 안정성, 핫 업데이트, 핫 스위칭... 등은 상당히 가혹했습니다. 당시의 기술적 배경.도전.
우리는 또한 지식은 공유될 때 더욱 가치가 있다는 것을 알고 있습니다. 거인의 어깨 위에 올라서면 더 멀리 볼 수 있고, 선배들의 경험과 지지로 더 빠르게 성장할 수 있습니다. 책 《Tencent Game Development Essence》는 게임 개발에 있어 Tencent Games의 본질 중 일부를 집약하여 클라이언트에서 서버, 물리 엔진에서 툴 체인, 그래픽에서 AI까지 다양한 분야에서 검증된 솔루션을 제시한다는 계획을 제시합니다. Tencent는 사회적 책임감이 높은 기업으로, 자사의 역량과 경험을 모든 사람에게 사심 없이 바치고 산업 발전에 자신의 강점을 기여하고자 합니다. 서로에게서 배우고 함께 발전하는 것이 우리의 희망입니다.
우리도 비디오 게임의 특징 중 하나가 상호작용이라는 것을 알고 있는데, 식탁에서, 방에서, 지하철에서 다양한 상황에서 게임을 하는 즐거움을 볼 수 있으며, 이는 우리의 일상생활에 녹아들었습니다. 엔터테인먼트는 인간의 본성이지만 삶을 더 좋게 만드는 것은 우리 게임 종사자들 각자의 사명입니다. 가상 세계에서 현실 생활로, 그리고 현실에서 가상 세계로, 기술을 사용하여 인생을 바꾸세요. 미래는 당신에게 달려 있습니다!
——Cui Xiaochun, Tencent Interactive Entertainment 공공 R&D 운영 시스템 책임자