誰しもが1度はやったことがあるゲーム。そのゲームは全てプログラミングで動いているわけですが、 そのプログラミングは数学と深く関係しています。そこで、今回はゲームと深く関わっているゲーム内の数学について解説しようと思います。
1.ゲームにおける数字の処理方法
パソコンを構成する装置は大きく分けて2つあります。それはCPUとメモリです。
CPUとはパソコンの頭脳のようなもので、計算をしている部分です。
メモリとはCPUが処理を実行するためのデータを一時的に記憶する場所で、このメモリにプログラムやゲーム情報が蓄えられます。
(参考サイト:https://www.nihonsoft.co.jp/nsklog/detail_89.html)
そして、このメモリの中にバイトやビットといった単位で情報が格納されています。では、バイトやビットとは何なのでしょうか?実は、「1バイト=8ビット」で1ビットは0か1かという情報を表しています。
つまり、1バイトの中に8ビットあり、1ビットは2つの数を表せる。言い換えると、1バイトは2つの数を表すことができるものを8つ持っているとも言えます。
では、1バイトはどのくらいの情報を格納できるのかを計算してみると、「2×2×2×2×2×2×2×2×2=256」(←1ビットが8つある)。よって、1バイトでは「0~255」の数値の情報を格納することができます。
ゲームで例えると、1バイトでHPや攻撃力を256段階表現することができるのです。しかし、少し考えてもらえば分かるように256段階だけだと表現の幅が少なすぎますよね。(例えば、HP256以上を表現できない!)
そのため、バイトを増やします。例えば、2バイトだったら、「256×256=65536」(←1バイトが2つある)で、いきなり65536種類もの数値の表現が可能になりました。
ところで、1バイトだったり、2バイトだったりをどうやってプログラムの中で指定するのでしょうか?それは、「数字を入れる型」をプログラムの中に書き込むのです。
上の文はプログラムの一例です。intというものは、先ほど言った「数字を入れる型」です。その型の中にHPという変数を入れています。そして、そのHPに100を代入する。こんな感じでプログラムを記述していくのですが、このintというものは、「4バイトまで数字を入れられる型」です。
つまり、intによって「256×256×256×256=4294967296」により、4294967296段階もの数値を表現することができるようになるのです。以下、変数を入れる型の種類です。
型名 | サイズ | 表現範囲 |
char | 1バイト | -128~127 |
short | 2バイト | -32768~32767 |
int | 4バイト | -2147483648~2147483647 |
また、ゲーム開発においてはint型が変数を入れる型として良く用いられます。なぜなら、実行速度が速いからです。(なぜ速いかは仕組みが難しいので割愛します。)
まとめると、ゲームはint型の変数によって、HPや攻撃力などのステータス。そして、地形の座標などが決定されていきます。
2.ゲームにおける時間の姿
次は、ゲーム空間における時間の仕組みについて解説していきます。哲学や物理学において「時間とは何か」という議論が盛んに行われていますが、ゲーム空間における時間とは一体どんなものなのでしょうか?
ゲームにおける時間の仕組みを理解する鍵は「フレーム」です。フレームとは何かを簡単に言うなれば、めくる速さが見えないほど高速な紙芝居のようなものです。
皆さんは、映画なんかも高速な紙芝居のように1枚1枚の画像を入れ替えることで実際に画面の中の世界が動いているように見える話は聞いたことがあるかと思います。そして、このフレームを扱う上で大事な考え方がfpsです。
fpsとはframe per secondの略で、意味は「1秒間に何回のフレーム(画像)を入れ替えているか」という事です。例えば、映画のfpsは24です。意外に少ないように見えますがこれには理由があるようで、あえて、fpsを落とすことによって「リアルすぎさ」を無くす働きがあるようです。
(映画に関するfpsの話はこのサイトが詳しいです。https://www.nejimakiblog.com/entry/podcast-frame-rate-fps-movie-game)
そして、ゲームのfpsは30か60の2種類があります。それぞれのfpsは一長一短でその性質をまとめてみます。
fps | 長所 | 短所 |
60 | 動きがなめらか | 処理落ちのリスクが高まる |
30 | 処理落ちのリスクが低い | 動きが粗く見える |
例えば、瞬発力が試される格闘ゲームだったら60fpsを使ってみたり、ゾンビのような敵が沢山出てくるような処理が重めのゲームには30fpsを使ってみる。などが挙げられます。
3.まとめ
今回はゲームにおける、数字の扱い方と時間の仕組みを解説しました。今回のは前編として、次回の後編は「ゲームにおける乱数の扱い方」について解説しようと思います。
ここまで、読んでいただきありがとうございました!
何か、質問や感想などございましたらコメントよろしくお願いします。
4.参考文献など
以下の本は、この記事で紹介した内容よりもさらに深く広くゲームの物理について解説してくれてます。よろしければご一読を。
ゲームを動かす数学・物理R 著者:堂前嘉樹 出版社:株式会社ボーンデジタ
コメント
コンピュータの基礎をいちから説明しているとても分かりやすい記事でした。
続編も期待してます。
ちなみに「映画のfpsは30か60の2種類があります。」の部分は、ゲームのfpsことかなと思いました。
うたいんこさん、はてなブログの時からコメントしていただきありがとうございます。
実は後編の記事は前編の記事に貼ってあるのですが、分かりづらい位置かもしれないので改良しておきます。
また、記事内容についての指摘、ありがとうございます。
きた
コンピュータの基礎をいちから説明しているとても分かりやすい記事でした。
続編も期待してます。
私は360fpsを使っています