編集者の選択
√ この本は業界の最前線での経験事例に基づいています
√ すべてのソリューションは Tencent ゲーム立ち上げプロジェクトから来ています
√ ゲーム業界で選ばれた革新的なテクノロジー
√ Tencentゲームの研究開発独自の技術ソリューションと経験
√ Tencent ゲームチームの集合的な研究結果を表します
√ 複数の重要なコア技術領域をカバー
√ ゲームプログラミングジェムの中国語版
√ 全国のゲーム実務者の全体的な開発レベルを向上させる
簡単な紹介
「テンセント ゲーム開発エッセンス」はテンセント ゲーム R&D チームの技術の結晶であり、テンセント ゲームの 10 人以上の上級技術専門家によって書かれており、チームが独立ゲーム開発の道で蓄積した技術ソリューションをまとめており、高い汎用性を備えています。 . と適時性を備え、内容はゲーム スクリプト システムと開発ツール、数学と物理学、コンピュータ グラフィックス、人工知能とバックエンド アーキテクチャなどをカバーしています。
著者について
Tencent Games には、最前線の技術研究開発と最先端のイノベーションに従事する 10 人以上の主要な開発技術専門家がいます。
目次
目次
パート 1 ゲーム数学
第1章 SDFベースのジョイスティックの動き2
まとめ2
1.1 はじめに 3
1.2 符号付き距離フィールド (SDF 3)
1.3 ラスター データを使用した SDF 4 の事前計算
1.4 SDF の衝突検知と衝突対応 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 整数の 2 進表現に基づく固定小数点数の原理 19
2.2.1 32 ビット固定小数点数表現の原理 19
2.2.2 64 ビット固定小数点数表現の原理 20
2.3 固定小数点数の四則演算 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 端点間の二次スプラインの構築 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
第 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 NavMesh 生成 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 部 コンピュータグラフィックス
第 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
第 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 人工知能とバックエンド アーキテクチャ
第 8 章 ゲーム AI 開発フレームワークのコンポーネントの動作とメタプログラミング 116
まとめ 116
8.1 行動の仕組み 117
8.1.1 型情報 117
8.1.2 ビヘイビアツリーとは 118
8.1.3 例 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
第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 アルゴリズムの 2 つの定義と 3 つのルール 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
第 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 と対話します 189
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 IncrediBuild 210
13.2.4 FASTBuild 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 シェーダー 228 のプログラムに 13.5「秒」
13.5.1 準備 229
13.5.2 大規模シェーダコンパイルテスト 237
13.5.3 マテリアルエディタ240でのシェーダコンパイルテスト
13.6 概要 243
第 14 章 フレーム同期プロセス全体の効率的なログ出力スキーム 244
まとめ 244
序文/序文
編集者の序文
一般のソフトウェア開発者にとって、ゲーム開発は常に謎のベールに包まれているように思えます。これにはいくつかの理由が考えられます。まず、ゲーム開発の技術範囲は比較的広く、コンピュータグラフィックス、物理シミュレーション、リアルタイムネットワーク同期など、一般的なソフトウェア開発ではほとんど使用されない技術もあります。第二に、ゲーム開発はクリエイティブな産業であり、さまざまな種類のゲームのニーズには多くの違いがあり、多くの技術は標準化されておらず、技術ソリューションや作業プロセスには各社の違いが多くあります。最後に、企業間または企業内にも技術的な障壁が存在し、知識や技術の流れに影響を与える可能性があります。こうした状況は、関心のある友人がこの業界に参入するのに有利ではなく、実務者の進歩も限られ、業界の発展に長期的な影響を及ぼし、熾烈な世界的競争に直面することが困難になるだろう。
インターネットが普及する前の 1990 年代の香港では、編集者は「Wolfenstein 3D」の 3 次元屋内シーンのレンダリングやテクスチャ マッピング技術など、海外からの「漂流」ゲーム開発技術資料を BBS を通じて収集することしかできませんでした。非標準モード X の使用方法は、VGA 256 色のダブル バッファ レンダリングなどを行います。情報が不足していた時代、新しい技術に関する解読された文書に出会うたびに、編集者は宝物を見つけたかのような興奮を覚えました。
中国でゲーム開発に携わる「ベテラン」は、おそらくミレニアムに書かれた「Game Programming Gems」シリーズの書籍を読むでしょう。このシリーズの書籍は、全世代の開発者に影響を与えており、世界中のゲーム開発者のさまざまな秘密のテクニックを垣間見ることができ、ゲーム開発で遭遇するさまざまな共通の問題を解決し、同時にインスピレーションを与え、研究や研究を行うことができます。開発は本よりも進んでいます。良い解決策です。
インターネット情報爆発の時代を迎え、私たちはネット上で無数のブログやQ&Aなどの情報にアクセスし、さまざまな新技術をより早く知ることができるようになりました。しかし同時に、従来の出版物と比較して、オンライン情報は通常より分散しており、品質も不均一です。また、実務家は機密保持の理由から、ゲーム開発で使用される一部の新技術を公開していません。
この本は「ゲームプログラミングのエッセンス」シリーズの書籍からインスピレーションを得たもので、テンセントゲームのエンジニアが実際にゲームに応用されている技術の一部を業界の同業者と共有し、業界と共有することを奨励したいと考えている。社内での審査・編集の仕組みを通じて、一般に公開できる質の高い記事を選定するとともに、ある程度の汎用性と適時性を備えた技術を確保するよう努めています。国内業界にとって、この本がよりオープンな未来を促進し、全体的な技術レベルを向上させるための小さな一歩になれば幸いです。
この本は企画から出版まで1年半もかかりましたが、多忙な開発業務の合間を縫って時間を割いて記事を書いてくださった著者の方々に感謝するとともに、テンセントゲームアカデミーの学部長であるシア・リンさんにも感謝しなければなりません。彼女の強力なサポートに感謝するとともに、Tencent Game Academy の Dong Lei に感謝します。Liu Ya と Chen Ruoyi はプロジェクトを順調に進めました。また、本書の編集委員である Guo Zhi、Liu Anjian、Kuancini、An Bolin、Wang Yangjun、Sha Ying (順不同) の方々に心から感謝します。彼らは全員、テンセント ゲームのさまざまな部門の技術専門家であり、慎重に作業を進めていただきました。記事の内容を準備しましたのでご確認ください。また、出版にご協力いただいた電子工業出版局の 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 に AI を効率的に実装し、NPC の動作をより自然で興味深いものにする方法は?ゲーム内の経済システムのバランス、さまざまなキャラクター間の能力のバランス、同時にオンラインに接続する数百万人のユーザーの安定性、ホット アップデート、ホット スイッチングなどは、非常に厳しいものでした。当時の技術背景、挑戦。
また、知識は共有されて初めて価値が高まることもわかっています。巨人の肩の上に立って、あなたはさらに遠くを見ることができ、先人たちの経験とサポートによって、あなたはより速く成長するでしょう。書籍「テンセント ゲーム開発エッセンス」では、テンセント ゲームのゲーム開発におけるエッセンスの一部をまとめており、クライアントからサーバー、物理エンジンからツール チェーン、グラフィックスから AI に至るまで、さまざまな分野で実績のあるソリューションの計画が提示されています。 Tencent は高い社会的責任感を持った企業であり、自らの能力と経験を献身的にすべての人々に捧げ、自らの力を業界の発展に貢献することに意欲を持っています。お互いから学び、共に進歩することが私たちの願いです。
また、ビデオゲームの特徴の一つがインタラクションであることもわかっており、食卓、室内、地下鉄の中でなど、さまざまな場面でゲームをプレイする楽しみが見られ、私たちの日常生活に溶け込んでいます。エンターテイメントは人間の本質ですが、生活をより良くすることは私たちゲーム実践者一人ひとりの使命です。仮想世界から現実世界へ、そして現実世界から仮想世界へ、テクノロジーを使って人生を変えましょう。未来はあなた次第です。
——崔暁春、テンセント インタラクティブ エンターテイメント パブリック R&D オペレーション システム責任者
レビュー{{'('+ commentList.posts_count + ')'}}
商品レビューを書いて、他のユーザーを助ける最初の人になりましょう。
レビューを書く{{i}}星
{{i}} 星
{{ parseInt(commentRatingList[i]) }}%
{{ showTranslate(comment) }}非表示にします
{{ strLimit(comment,800) }}すべて見る
Show Original{{ comment.content }}
{{ formatTime(comment.in_dtm) }} 購入済み {{groupData}}
{{ showTranslate(comment) }}非表示にします
{{ strLimit(comment,800) }}すべて見る
Show Original{{ comment.content }}
{{ formatTime(comment.in_dtm) }} 購入済み {{groupData}}
関連するコメントはありません~
レビュー詳細
{{commentDetails.user_name}}
{{ showTranslate(commentDetails) }}非表示にします
{{ strLimit(commentDetails,800) }}すべて見る
Show Original{{ commentDetails.content }}
{{ formatTime(commentDetails.in_dtm) }} 購入済み {{groupData}}
コメント{{'(' + replyList.length + ')'}}
{{ reply.reply_user_name }}コメント{{ reply.parent_user_name }}
{{ showTranslate(reply) }}非表示にします
{{ strLimit(reply,800) }}すべて見る
Show Original{{ reply.reply_content }}
{{ formatTime(reply.reply_in_dtm) }}
これまでのコメントは以上です!
コメントをお願いします
通報します
本当にレビューを削除してもよろしいですか?
キャンセル