ゲームメカニクスを通じたプログラミング教育実践 Programming Education Practice through Game Mechanics
藤田 和久 FUJITA, Kazuhisa
東京マルチメディア専門学校
長 慎也 CHO, Shinya
明星大学情報学部
要旨
著者(藤田)はこれまで,コンピュータゲームの作成技法や,ゲームメカニクスを大学・専門学 校などで教えてきた.専門学校では,ゲームクリエイターを育てることを目的とする学科での講義 が多い.一方で,本学を含めた大学の情報学部では,ゲームクリエイターは将来なる職業の選択肢 の1つではあるものの,それを主目的に教えることはしない.そのような違いがあっても,ゲーム 制作で必要とされる技術の中には,情報科学で学ぶべき内容の多くを網羅している.
著者は特に,「ゲームとは何か」という根本を学習者に考えさせ,「ゲームはプログラムで動いて いる」という本質を理解し,そこから独自のアイデアでゲーム制作をしてもらうために「ゲームメ カニクス」という授業も実践している.このような考え方は,ゲームに限らず,システムを構築す る上で重要な概念と考えられる.本稿では,これまでの筆者による授業実践を,本学(情報学部)へ の授業実践に展開する可能性を述べる.
1
ゲームを題材とした授業における課題これまで,本学部(明星大学情報学部)においてもゲーム作りを題材にしたプログラミング学習を展 開してきた.
2018
年度までのカリキュラムにおいて,CS
コース3
年前期の「情報学実験I
」では,「Android
ア プリケーション開発実験」というテーマがあり,4
回のテーマのうち最後の2
回では,Unity
を用いた ゲーム開発を行う.また,同年後期の「情報学実験II
」では,各教員が設定したテーマに応じて実験を 行うが,著者(長)のテーマでは,著者自身が開発したTonyu System[1]
というゲームエンジンを用い たゲーム開発を行う.いずれの実験においても,ゲーム開発に先立って,ゲームのアイデアを計画させるための計画書を作 成する.例えば,情報学実験
I
において,受講者に配布している資料を図1
に示す.この計画書には「『改造のヒント』に追加してほしいこと」という項目がある.『改造のヒント』は,
自分のアイデアを実現するために必要なプログラムのヒントを載せた
Web
ページである.しかし,学習者の提出してくるゲームの計画書を見ると,多くの学生で似たようなゲームの内容を書 いてくることが多い.有名なゲームや,確立されたゲームジャンルそのものの内容が多くて,独自のア イデアを盛り込んだものは少ない.
このように,独自のゲームのアイデアが生まれにくい原因として,オープンワールドゲームの影響が あると考えられる.オープンワールドなゲームとは,ゲームにおける明確な目的が与えられておらず
「ゲームの中で何をしてもよい」という世界で,自由に活動をしてもらう趣旨のゲームである.
しかし,オープンワールドなゲームが「ゲーム」であるという感覚でいると,ゲーム全体のルールや プレイ目的があいまいになってしまい,ゲーム内に組み込まれている個別の活動は,きちんとプログラ ムに作りこみがされてこそ行えるものである,という本質が見えにくくなってしまっている一因になっ
図
1
「情報学実験I
」ゲームの計画書(左)改造のヒント(右)ている.
例えば「木になっているリンゴをとる」という単純な活動を考える時でも,「木」や「リンゴ」などの オブジェクトの存在や,「リンゴ」を「とる」というアクションの定義など,様々なロジックを入れな ければならない.しかしながら,プログラミングの概念をあまり知らない学習者は,漠然と「リンゴは とれるようにすればいい」と思っても、その具体的方法までは考えが及ばない傾向がある.
このように,ゲームは,学習者にとって身近なものであるものの,その本質について学習者が十分に 理解していない可能性がある.そこで,あらためて遊びとしてのゲーム作りとそのシステム化の必要性 に気付かせる必要がある.本稿では,著者(藤田)がこれまで専門学校などで行ってきた「ゲームメカ ニクス」という授業,およびプログラミングの授業を解説し,それを通して,本学におけるゲームを題 材にした授業における課題を解決する可能性について探る.
2
ゲームメカニクス「ゲームメカニクス」は,東京マルチメディア専門学校ゲームクリエイター科において,
1
年生後 期(10
〜2
月)
に開講された全15
回の授業である(以降の節に登場する授業も同科で行われたもので ある).資料の構成を表
1
に示す.まず,コンピュータゲームに限らず「ゲーム」というものに含まれる要素 をモデル化した「MDA
フレームワーク」[2]
について解説している.これは,ゲームの仕組みを構成す る「Mechanics
」ゲームの動きを表す「Dynamics
」そこから得られる感覚・感情「Aesthetics
」という3
つの要素について,実在する(非コンピュータ)ゲームを例にとって解説している.それに続く「ルドロジー」の章では,まず「遊び」を構成する要素
[3]
として図2
のような「不確定」表
1
「ゲームメカニクス」目次単元
MDA
フレームワーク ルドロジー(1
)遊びの分類 ルドロジー(2
)ゲームの分類 ルドロジー(3
)パズルの分類 ルドロジー(4
)ボードゲームの分類 ルドロジー(5
)カードゲームの分類 ルドロジー(6
)球技の分類メカニズム(
1
)ゲームにおけるコンピュータの役割 メカニズム(2
)確率メカニズム(
3
)乱数 メカニズム(4
)物理挙動 メカニズム(5
)ゲーム内経済 メカニズム(6
)ゲーム理論 ゲーミフィケーション図
2
ゲームメカニクス教材:「遊び」の定義「ルール」などの要素を挙げ,続く節においては,パズル,ボードゲームなど,各ジャンルのゲームの 分類を行っており,それぞれのゲームにおける「遊び」の要素を考察している.例えば「球技」の項目 では「未確認性発生要因」「競争課題」などが各球技にどのように取り込まれているかを解説している.
最後に,「メカニズム」の章では,まず図
3
のように,ここまでに紹介したゲームをコンピュータ上 で実現するために,コンピュータはどんな役割をしなければならないか,という視点を加え,具体的な アルゴリズムへの言及も行っている.例えば,図4
のように疑似乱数生成のアルゴリズムや,ゲームに おける代表的な物理運動であるジャンプのアルゴリズムなどを解説している.この授業を受講した後,受講者たちが考案したゲームの提案書の例を図
5
に示す.「ロボハーツ」は,「ゲーム内で進化するパズルアドベンチャー」を謳い,ゲーム開始当初の色も音もない状態から,セン サーとなるパーツを探し入手する事でロボットが機能アップするというゲームシステムを採用し,ゲー ム内でプレイヤーが得られる報酬が,ありきたりなコインやポイントなどではなくプレイヤー自身が
図
3
「ゲームメカニクス」教材:コンピュータの役割図
4
「ゲームメカニクス」教材(左:乱数発生の原理,右:ジャンプ)図
5
受講者のゲーム提案書の一部(左:「ロボハーツ」右:「越後酒コレクション」)ゲームを体感するためのインタフェース
(
視覚、聴覚、触覚)
であるというユニークなアイデアのゲー ムである.また「越後酒コレクション」は、単にゲームに止まらず「ゲームを核として地域復興を図り たい」という壮大なテーマを秘めた作品である.このようなアイデアを生むことができたのは,「ゲー ムが何であるか」という本質をゲームメカニクスを通じて学んだことが一因と考えることができる.3
プログラミング著者
(
藤田)
は,ゲームデザインの授業に加えて,プログラミングの授業も行っている.もともと,こ れらはゲームを作る技術を学ぶために作られたものであるが,情報学部の授業にも応用可能であると考 えられる.3.1
ゲームエンジンを用いたゲーム開発まず,
1
年前期においては,Unity
を用いた簡単なゲームが開発できるようになることを目指す.そ のために必要となる,プログラミングの基本的な考え方を学ぶ授業として「C#
プログラミング」およ び「ゲームプログラミングI
」という授業を並行して行う.教材の一部を図6
に示す.「C#
プログラミ ング」の単元は「変数」「制御構造」「オブジェクト指向」などであり,これらは情報学部の授業でも共 通して学習するものである.一方「ゲームプログラミング
I
」という授業では,Unity
でのゲーム開発を学ぶ.Unity
では大半の作 業をGUI
で行うことができるが,GameObject(
ゲーム中に動作するキャラクタ)の動作については,スクリプトと呼ばれる
C#
プログラムを記述して定義する.これら
2
つの授業を並行して行うことは,特にオブジェクト指向に対しての理解を深める効果が期待 される.先述した通り,ゲーム内に出て来るキャラクタを「GameObject
」として捉えることで,オブ ジェクト指向におけるオブジェクトの概念を学習者が身近なものとして理解できる.また,そのオブ ジェクトにメソッドなどを用いて振る舞いを定義するという点も,キャラクタに何らかの動きを与え る,ということを通じて,プログラミング経験の浅い学習者でも容易に理解できると考えられる.図
6 1
年前期プログラミング教材(左:「C#
プログラミング」,右:「ゲームプログラミングI
」3.2
ゲームエンジン開発Unity
内で記述するスクリプトは,Unity
が用意しているフレームワーク内で動作するものであり,Unity
が最初から用意している各種オブジェクトに対するメソッド呼出を行うだけで,プログラミングの知識があまりなくても,ある程度のゲームを作成することが可能である.しかし,それだけではゲー ムの深いメカニズムを知ることにはならず,独自のルールをもったゲームを考案し,実装する,という ことにはつながりにくいと考えられる.
そこで,
1
年後期の授業「ゲームプログラミングII
」では,ある程度Unity
のプログラミングに慣れ た段階で,ゲームエンジンが処理していた内容を自らプログラミングするとどうなるか,という切り口 でライブラリの制作を見本的に行う.またそのライブラリを使って簡単なゲームを作る実習を行う.授業の内容を表
2
に,使っている教材の一部を図7
に示す.この図では,ゲーム起動時にウィンドウ を開くための処理を示している.ゲームエンジンではウィンドウを開く処理はプログラムとして明示的 に書かなくとも,自動的に開かれた状態になっているため,このような処理を意識することはない.こ の後に続く画像の表示やメインループなどの単元も,ゲームエンジンが処理しているものをあえて自作 させるようにしている.これらの活動を通じて,個々に自分にとって使い勝手の良いライブラリを作らせ,それぞれのゲーム 開発に活かすといった流れにつなげていく狙いがある.
図
7
「ゲームプログラミングII
」教材表
2
「ゲームプログラミングII
」内容単元 内容
I
ウインドウ ウインドウを開く,タイトル・サイズなどの設定II
イメージファイルの描画 画像の表示,サイズ指定,重ね合わせの処理などIII
スプライト 画像の移動・アニメ,クラスの定義,メインループ,当たり判定などIV
イベント キー入力の取得などV
マップとキャプション 背景の表示,スクロール,テキスト表示などVI
シューティングシーン シューティングゲームの製作VII
落ちゲー リアルタイムなパズルゲームの製作4
関連研究コンピュータゲームを通じて情報科学を俯瞰的に捉える取り組みとしては,長瀧による授業実践
[4]
が挙げられる.この実践においては,コンピュータゲームが常に「計算機の仕様や能力の限界との戦 い」をしてきたことから,「コンピュータの仕組みが透けて見えやすい」ことに着目している.例えば,
特に
80
年代頃のゲームにおいては,キャラクタの各種パラメタの上限値が255(2
8− 1)
などの2
進数 に由来する数値になっていたり,その値を超えたときに思わぬ動作が起きたりする(強いはずのキャラ クタが急に弱くなる,予期せずしてゲームオーバーになるなど)理由について,コンピュータ内のデー タ表現を絡めて説明を行っている.また,本稿で取り上げた授業「ゲームメカニクス」の特に「メカニ ズム」の章に関連するアルゴリズムの説明についても同様の解説を行う回を設けており,図4
などで取 り扱っているアルゴリズムも紹介されている.一方,この実践は「一般情報教育」という枠組みの中で行う授業のカリキュラムであり,実際にゲー ム制作に携わることを目指す学生や,ゲームではないがコンピュータ上のシステムを開発・運用する職 業を目指す情報学部の学生においては,実際に(ゲームを含めた)システム設計やプログラミングの実 習を伴うことも必要となってくる.そのため,ゲームの詳細なメカニズムを知り,実際に作成してみる ことが,ゲームだけでなく,コンピュータシステムを知る有用な手がかりであると考えられる.長瀧 は,「ゲーム」の定義を「娯楽を主目的として利用する計算機またはその上で動くプログラムであり,テ レビなど映像や音声を出力する装置を用い,操作するものとの双方向のやりとりで出力される映像や音 声が変化するもの」としている.この中から「娯楽」という部分を他の目的に置き換えるだけで,ほと んどのコンピュータシステムがこれに当てはまると考えられることからも,ゲームを切り口としてコン ピュータや情報科学を学ぶことは,学習者の身近で親しみやすい題材で,効果的な学習ができると期待 される.
5
まとめ本稿では,ゲーム制作を目指す学習者向けに作られた授業の教材とその実践例を紹介した.
ゲームメカニクス,ゲームエンジンを用いたゲームプログラミング,さらにはゲームエンジン自身の 構造の理解という流れの授業を通じて,「ゲームはプログラムで動いている」という原則を学習者に伝 えるとともに,独自のゲームのアイデアを着想させ,それを実現するための素養を身に着けさせること ができると考えられる.
また,ここで扱っている内容はゲーム制作にとどまらず,他のコンピュータシステムにも応用可能な 事項が多く,これらの授業で扱っている内容を(ゲーム制作が主目的ではない)情報学部における授業 に取り込むことで,学習者に興味を喚起させつつ授業が行えると期待できる.
参考文献