こちらでは、2020/12/26発売、ゲーム開発向け参考書「ゲームを動かす数学・物理 R」について紹介。
タイトル通り、数学・物理についてゲームに応用する部分に絞って解説した書籍。
具体的な内容や、どういった方におすすめの書籍かなどを紹介していきます。
「ゲームを動かす数学・物理R」概要
中学校や高等学校で学ぶ数学・物理が、どのようにゲーム開発で活躍するかをイラストや図と共に丁寧に解説しています。
キャラクターやオブジェクトの移動や加速などの運動、時間の計測ほか、キャラクターのステータスの定義といった、ゲームづくりを下支えする基礎知識を網羅しています。
難しく感じてしまう数学・物理とゲーム開発の密接な関係を知ることで、ゲームへの理解がより深まります。
本書はボーンデジタル書籍紹介ページから試し読みが可能で、Chapter1,2,9のサンプルが試読可能です。
以降でもサンプルページを引用して紹介していきます。
目次
- Chapter1 整数
- Chapter2 小数
- Chapter3 演算
- Chapter4 2次元
- Chapter5 角度
- Chapter6 時間
- Chapter7 運動
- Chapter8 3次元
- Chapter9 マトリクス
- Chapter10 衝突
- Chapter11 乱数
目次ページ
本書の特徴
よりゲームを面白くする、数学・物理のノウハウをまとめた一冊!
中学校や高等学校で学ぶ数学・物理が、どのようにゲーム開発で活躍するかをイラストや図と共に丁寧に解説しています。
キャラクターやオブジェクトの移動や加速などの運動、時間の計測ほか、キャラクターのステータスの定義といった、ゲームづくりを下支えする基礎知識を網羅しています。
難しく感じてしまう数学・物理とゲーム開発の密接な関係を知ることで、ゲームへの理解がより深まります。
冒頭紹介ページ
注目の項目・内容
以降では個人的に注目の項目・内容を簡単にピックアップしていきます。
「浮動小数」の解説(Chapter2)
注目はChapter2にある「浮動小数」の解説です。
浮動小数はゲーム開発はもちろん、コンピュータ上で数値を扱う上で欠かせない数値表現。しかしながら、誤差や例外も発生しやすく、正しい認識が必要となる要素。そのため、浮動小数について、無限ともいえる小数表現をどうやって成立させているかの原理を理解しておきたいですが、その原理を理解せずとも以下のようなポイントは理解しておきたいところ。
- 誤差が発生する理由とどういった計算で誤差が発生するのか
- どういった処理をすると例外が発生する危険があるか
- 非数・無限大といった値はなんなのか
- なぜ浮動小数にはサフィックス(f)をつけるのか
- 単精度浮動小数以外の小数表現方法(固定小数、倍精度浮動小数など)
本書ではこういった点が、平易に解説されているので、非常に理解しやすいでしょう。
また、関連してChapter1,2,3では浮動小数以外にもコンピュータで数値を扱うということ、その際の注意なども同様に平易に書かれているので、サクッと読んで理解を深めておくと良いです。
「ベクトル・行列・クォータニオンの基本演算・用途」の解説(Chapter5,9)
ベクトル・行列・クォータニオン演算について平易な文章でポイントを絞って解説しています。
こういった数学の話は、難しい数式や意味の解説などが前提に入り、実利用までの前提知識が長いことになりやすいですが、本書はゲームで使うための都合を前提としてあまり学問的なところに深堀りしすぎずに解説しています。根本からの理解や高度な応用には少し物足りない内容になりますが、逆にゲームを作るための道具として理解するなら最短で学べるような内容といえます。
ゲームエンジンが普及した現代でも、ベクトル・行列・クォータニオン演算は頻出して利用するので、知識としては必須。よく利用していても、各計算の本質的な意味などは次第に忘れてしまうもの。例えば以下のようなもの。
- ベクトル演算で正規化する意味、正規化しない場合の演算結果の意味
- 逆三角関数の値域制限等の意味(特にatan2など)
- 外積の計算式、方向・長さの意味
- 行列・逆行列・転置行列の意味とその簡易的な求め方
- クォータニオン計算・逆クォータニオンの意味とその簡易的な求め方
これらの知識を根本から常に理解する必要はないですが「簡単に計算する方法があったな」「これはたしかこんな意味だから応用すれば別の判定を簡単にも行えるな」といった応用につながるので、たまに根本知識を復習しておくのは重要です。
本書では、あまり学問的に深堀りはされていない分、これらをさくっと見直すことが可能で「ゲームに使う」という用途には最適です。
「3次元での平面との判定・各種衝突判定」の解説(Chapter8,10)
現代は3Dゲームが主流、3D処理・判定の知識は必須ですが、2Dの知識と比べると格段に難易度があがります。
特に3Dでは、面(ポリゴン)との各種判定・位置関係なども重要になり、それらの知識を備えておくのは重要です。例えば以下のような内容です。
- 平面を表す式・平面の表裏の位置関係判定・平面との距離判定
- 各種プリミティブの簡単な衝突判定方法
- 平面(ポリゴン)との衝突判定
本書ではそういった3D上の各種判定を行うために必要な、平面やプリミティブ同士の判定などを、簡潔平易に紹介しており、ざっと各判定の知識を得やすい内容となっています。
衝突判定に関しては、最近は物理エンジン頼みになることが多かったり、他の参考書での取り扱いも少ない、といったこともあり、なかなか知識を仕入れられないかと思います。しかしながら、ちょっとした判定にも常に物理エンジンに頼るようでは、ゲームに特化した高速な判定や特殊な判定、などが行うのが難しい、となってしまいます。ゲームであるがゆえに、物理を無視した自由な世界を作れるのも醍醐味、そのためにやはりこういった前提知識はもっておくべきといえるでしょう。そのために本書の衝突判定はまとまった貴重な情報源となります。
まとめ:ゲームのための数学・物理の活用法をサクッと見直せる書籍
以上、「ゲームを動かす数学・物理 R」の簡単な紹介でした。
総評すると、数学の難しい部分はあえて深堀りせず平易に語った、ゲームで数学利用することにフォーカスした本、です。中学・高校数学のかなり基礎的な部分からの解説も含まれるので、学生時代に数学が苦手でなかった方は少し冗長に感じる解説部分もあるでしょう。
逆に、大学数学のような学問としての数学の深堀りはせずに、どういった式でどういった判定ができる、といった結果とその活用にフォーカスしている部分も多く、あまり身構えずとも学習が可能です。
実際ゲーム開発においては、ツールとして数学や物理の知識で「何ができるか」を知識としてもっておくことが重要であって、学問としての深い知識はなくても問題ありません(最先端の実装方法や論文等の研究開発をする場合は別ですが)。
ということで、本書でゲームへの活用に特化した数学を学んで見る、ざっと復習してみるというのがおすすめの読み方です。
上述もしてきましたが、本書はかなり基礎的・平易な解説とした書籍です。より高度で学問的な数学知識や、さらなるゲームへの応用知識を得たい場合以下のページの数学系書籍も参考にしてみてください。例えば、本書では微分積分などのトピックはないですが、スプライン補間といったなめらかにキャラクターを動かすために微分等の応用が必要、といった他の数学応用もまだあります。ぜひのぞいて見てください。
いじょうでっす。
コメント