ゲームと数学の関係を知ろう
本連載では、2023年9月5日発売の書籍「Pythonではじめるゲーム制作 超入門 知識ゼロからのプログラミング&アルゴリズムと数学」について、第1章を無料公開していきます。本書はプログラミング初学者向けの書籍で、これからプログラミングを学んでみたい方、ゲームづくりに興味がある方、Pythonを勉強してみたい方などにオススメです。
数学に苦手意識のある方や、中学・高校生の方でも無理なく学べるよう、プロのゲームクリエイターがやさしく解説しています。本連載では書籍の第1章のみを掲載しますが、興味を持っていただけたら、ぜひお買いお求めください。
※本記事はWeb掲載用に実際の誌面を一部改変しています。書籍とは一部異なる部分があることをご了承ください。
ゲームと数学の関係を知ろう
この節では、ゲームのプログラムと数学の関係について見ていきます。プログラミングと数学は密接な関係にあり、それを知っておくことは、この先の学習で役立ちます。数学といっても難しい話ではありませんので、気楽に読み進めてください。
(1)体力を減らしたり、増やしたりするー変数
キャラクターに体力(HPやLIFEなど)が設定されているゲームがあります。主人公や仲間たちの体力は、大切な値です。ゲームによっては、敵のキャラクターにも体力があります。
体力などの値はプログラムでは、変数と呼ばれるものに入っています。変数は数値などのデータを入れておく箱のようなもので、ゲーム制作に限らず、ソフトウェアを作るときに必ず使います。変数をイメージで表すと、図1のようになります。
変数は第2章で学びますので、ここでは、体力やスコアの値を保持しておく箱をプログラムで使うと考えておきましょう。
プログラムの変数は、数学で使う変数と似たようなものです。プログラムでは、主人公がダメージを受けたら体力を減らす、回復アイテムを使ったら体力を増やすなどの計算を、変数の値を増やしたり減らしたりして行います。
プログラムの変数は数学と似た使い方をする他に、様々な処理を行うためにも使います。たとえば、プレイヤーがゲームをどこまで進めたかを管理する変数を用意し、値が1のときは「出発地点の町にいる」、値が2のときは「1つ目のダンジョンにいる」というように、ゲーム進行を管理するためにも使います。
(2)敵が追いかけてくるー物体がどこにあるか(座標)
コンピューター画面の座標について、ゲームと数学の関係を交えて説明します。座標とは、直線上、平面上、空間内などで、物体がどこにあるかを示す値のことです。
たとえば、敵キャラが、プレイヤーが操作する主人公を追いかけてくるゲームを思い浮かべてください。主人公の体力が落ちているときに敵の群れが現れました。戦うには不利なので逃げても、敵キャラたちは執念深くあなたを追いかけてきます。このままではやられてしまいます!
そのような状況に出くわすと、敵キャラに意思があると感じることがあるかもしれません。実際には意思があるのではなく、キャラクターがそのような動きをするようにプログラミングされています。
では、敵キャラが主人公を追いかける仕組みは、どうなっているのでしょう?
その処理は、実は難しいものではありません。敵と主人公の座標の値を比べることで、敵をどちらに動かせばよいかを判断し、敵の座標を変化させます。この仕組みを、x軸上に敵と主人公がいると仮定して説明します(図2)。
敵はmx、主人公はpxという変数にx座標の値が入っているとします。mxはモンスター(monster)のxの値、pxはプレイヤー(player)のxの値と考えましょう。x軸の値は、プログラムでも数学でも、右に行くほど大きくなります。
敵が左、主人公が右にいるなら、mxの値はpxより小さく、大なり小なりの不等号で表すとmx
主人公が左、敵が右にいるなら、変数の大小関係はpx px)です。このとき、mxの値を減らせば、敵が主人公に近づきます。
(3)近くにいる? 遠くにいる?
ーゲームの中に広がる世界(2次元平面)
座標について、もう少し考えてみましょう。図3のように、平面上に3種類のキャラクターがいるとします。緑のスライムは(mx1, my1)、紫のゴーストは(mx2, my2)、主人公は(px, py)の位置にいます。
コンピューター画面における座標は、一般的に左上角が原点(0, 0)です。x軸は数学と同じ向きですが、y軸は数学と逆で、下に行くほど値が大きくなります。
敵は一定距離に近づくと主人公を追いかけ始めるとしましょう。それをプログラムで実現するには、主人公と敵がどれくらい離れているかを、2 点間の距離を求める数学の公式で計算します。そしてたとえば、その値が200以内なら追跡をはじめ、400以上なら追跡をあきらめるなどの行動パターンをプログラミングします。距離を求める公式とその使い方は、ゲーム制作の技術を学ぶ中で説明します。
敵の行動をプログラムで複数パターン用意することで、そのキャラクターが意思を持って動いているように見せることができます。そのような仕組みのベースとなるものも数学なのです。
(4)数学の様々な知識を活用する
ここでは、変数と座標についてゲームと数学の関係を説明しました。他にも図形、絶対値、n進法、三角関数など、数学的知識を使うことで、より凝った内容のゲームを作ることができます。本書では実際にゲームのプログラムを入力しながら、それらの知識を学んでいきます。
廣瀬 豪 著 |
Pythonではじめるゲーム制作 超入門 知識ゼロからのプログラミング&アルゴリズムと数学知識ゼロからのゲーム制作&プログラミング本書は、プロのゲームクリエイターがやさしく解説する、ゲーム制作&プログラミングの入門書です。ゲームを自作するには、プログラミングやゲーム制作の知識に加えて、ゲームのアルゴリズムを組むための数学の知識も必要不可欠です。そこで、ゲーム作りやプログラミングが初めてという方に向けて本書を執筆しました。Pythonという学びやすいプログラミング言語を使って、ゲームを作りながらプログラミングの基礎知識、ゲームの制作方法、そしてゲーム作りに必要な数学やアルゴリズムを無理なく学べる内容になっています。 |