ゲーム専門学校の新人講師がUnityを勉強しながら、「ゲームのおもしろさとは何か」について授業を行う泥縄式レポートの第14弾。水先案内人になるのがユニティ・テクノロジーズ・ジャパン(以後、ユニティ)から提供中の無料教材「あそびのデザイン講座」だ。今回はScratch→Unity PlayGround→Unityと開発環境を変えながら進める、メカニクスデザインに関する授業の模様をレポートする。

TEXT_小野憲史 / Kenji Ono
EDIT_尾形美幸 / Miyuki Ogata(CGWORLD)

MDAフレームワークを軸にゲームを改良する

皆さんこんにちは。ゲームジャーナリスト兼、専門学校東京クールジャパン(旧東京ネットウエイブ)非常勤講師の小野憲史です。気がついたら前回の更新から4ヶ月もたってしまい、専門学校での年内の授業も終了してしまいました。余計な枕は省いて、さっそくこれまでの授業内容をレポートしていきましょう。

08月30日 第11回 対戦玉転がしワークショップの改造案を考える
09月10日 第12回(筆記試験)

▲授業風景


改めての説明となりますが、本授業「ゲームレビュー概論」の目的は、学生が制作中のゲームを、よりおもしろくするための実践的なノウハウや考え方を身につけるようにすることです。

そのためには制作途中のゲームを適切に「レビュー」できるようにすることが欠かせません。そこで重要なのが、ゲームを遊んでいるときのプレイヤーの感情曲線の観察です。ゲームを遊んでいて、どんなときにおもしろいか、どんなときにつまらなくなるかについて、ゲーム制作者は客観的な視点をもつことが求められます。

実はこの点でいえば、前期の第3回、第4回で導入した対戦玉転がしワークショップには問題がありました。それが「対戦ゲームにもかかわらず、逆転要素がない」点です。ゲームの目的は、ボールを転がしてステージ上に配置されたアイテムを相手より多く入手すること。アイテムは全12個あり、すべてのアイテムが入手されたところで勝敗が決まります。

▲対戦玉転がしゲームのサンプル


ということは、先に7個のアイテムを取った側が絶対に勝ってしまうのですね。そうなると残り5個のアイテムの意味がありません。では、どのようにメカニクスを改良すれば良いのでしょうか? 学生に改めてゲームを遊んでもらいながら、自由に考えてもらいました。

ここで考えるための道具になるのが、第13回で紹介したMDAフレームワークです。ゲームの構造を「M:メカニクス(ルール)」「D:ダイナミクス(行動・展開)」「A:エステティクス(感情)」の関連性で捉えるというもので、ゲームの改造や批評に役立ちます。


今回の例で言えば、ゲームの途中でエステティクスが低下してしまうことが問題でした。逆に理想のエステティクスは、「最後の最後まで気が抜けず、お互いの緊張状態が持続されること」だと考えられます。そのために必要なダイナミクスは「逆転」で、そうした展開を生むためのメカニクスは......と、逆算して考えられるようになるというわけです。

当然ながら答えはひとつではありません。逆転の要素を強調しすぎると、なかなか勝負がつかず、むやみにゲームの所要時間が長くなるリスクも考えられます。先に7個のアイテムを入手した時点でゲームセット、という考え方もあるでしょう。学生から出てきた答えも千差万別でした。

その上で、こちら側の答えとして用意しておいたのが、「お互いのボールが衝突すると、入手済みのアイテムがステージ上にばらまかれ、ゼロからやり直しになる」というアイデアです。このメカニクスが新たに加わることで、ダイナミクスとエステティクスが次のように変化することが予想されます。

  • メカニクス
  • お互いのボールが衝突すると、入手済みのアイテムがステージ上にばらまかれる
  • ダイナミクス
  • 勝っている側は、残りのアイテムをいち早く入手して、逃げ切りを図るようになる。負けている側は、アイテムを入手するのではなく、相手のボールにぶつかるように動いて、アイテムの入手数をリセットしようとする
  • エステティクス
  • ゲームの最後まで、お互いの緊張状態が持続される

それでは、このアイデアは本当に正しいのでしょうか? 一番簡単な検証方法は、実際にメカニクスを追加してテストプレイしてみることです。しかし、そのためにはスクリプトの追加が不可欠で、レベルデザイン演習の範疇を超えてしまいます。そこで後期の授業では、本格的にメカニクスデザインを行うと通達して、前期の授業を終了しました。

GlobalGameJam NextでGoogle Gamebuilderをテスト

さて、ゲームデザイナー志望の学生がメカニクスの勉強をする上で、適した開発環境は何でしょうか? 以前から目をつけていたのがGoogle Gamebuilderです。ゲーム『Minecraft』のようにボクセル風のゲームワールドで簡単に3Dゲームが作成できるというもので、「移動する」「攻撃する」「ジャンプする」「もし~なら~する」「*回繰り返す」など、基本的な命令がカードになっています。複数のカードを組み合わせることで、複雑な命令をつくることも可能で、これがプログラミング言語に相当します。

これによって「もしキャラクターが*m以内に接近したら、そちらの方向に砲台を向けて、レーザーを発射する」など、既存のカードを組み合わせて、新しいメカニクスが手軽につくれるのです。最大4人までのオンラインプレイにも対応しており、同じワールドでゲームをつくったり、つくったゲームで遊んだりすることもできます。もっと複雑なカードをつくりたければ、JavaScriptでカードを改造したり、オリジナルのカードをつくったりすることもできます。

そこで2019年8月に開催されたGlobalGameJam Nextで、ヒューマンアカデミー秋葉原校の教室をお借りして特設会場を設営し、Google Gamebuilderを使ったゲーム開発を高校生に体験してもらいました。GlobalGameJam Nextはギネスブックにも認定された世界最大のゲームハッカソン、GlobalGameJamの主催団体が18歳以下の参加者に限定して行うもので、今年で2回目となります。

当日参加した高校生は2人で、1人はJavaScriptのプログラム経験はありましたが、本格的なゲーム制作は初めてでした。もう1人はプログラミングもゲーム制作も、まったく体験したことがありませんでした。にもかかわらず両名とも、わずか数時間ですばらしいゲームを完成させました。

▲GlobalGameJam Nextにて、高校生がGoogle Gamebuilderを用いて開発したゲーム


ただし、課題も見えてきました。Google Gamebuilderは当時、PCゲームのデジタル配信プラットフォームSteamのコンテンツだったため、開発環境は無料ながら、インストールにSteamのアカウントが必要でした。その一方で、PCごとに異なるアカウントを短期間で一気に作成しようとすると、エラーが出てしまったのです(不正対策なのかもしれません)。そのため後期の授業でGoogle Gamebuilderを東京クールジャパンの教室にある演習用PC群にインストールすることが、困難なように感じられました。

もっとも、Google Gamebuilderは2019年11月にオープンソースとなり、Steamのアカウントを必要とせずに、Gitからダウンロードして自由にインストールが可能になりました。Google GamebuilderはUnityベースで制作されており、起動にUnityを必要とする点でも、授業とスムーズに連結できそうです。次年度以降の楽しみにとっておくことにしました。

次ページ:
ScratchとUnity PlayGroundを授業で活用

[[SplitPage]]

ScratchとUnity PlayGroundを授業で活用

そこで今回考えたのが、以下のながれです。このながれに従って、後期13回分のカリキュラムを立てました。

1 : Scratchでプログラミングの概念を学ぶ
2 : Unity PlayGroundで既存のスクリプトを組み合わせて、ゲームをつくるやり方を学ぶ
3 : Unityで新しくスクリプトを組むやり方を学ぶ
4 : Unity PlayGroundとスクリプトを組み合わせて、より複雑なゲーム体験をつくるやり方を学ぶ

実は当初は「あそびのデザイン講座」を最初からひとつずつやっていくことも考えていました。前期ではレベルデザインに特化して活用した「あそびのデザイン講座」の内容を、自分たちの手でコーディングすることで、より理解が深まると考えたからです。ただ、途中で考えを変更しました。昨年度の経験から、スクリプトの習熟度は個人差が大きいことがわかりました。そのため途中でつまずいた学生のモチベーション管理が難しいだろうな......と感じたのです。そこで授業内容をガラッと変えることにしました。

10月11日 第01回 Scratch 1『猫とネズミ』ゲーム制作
10月18日 第02回 Scratch 2『猫とネズミ』ゲーム制作
10月25日 第03回 Unity PlayGround 1 公式チュートリアル
11月01日 第04回 Unity PlayGround 2 『GalaxyWars』チュートリアル
11月08日 第05回 Unity PlayGround 3 オリジナルのシューティングゲーム制作
11月15日 第06回 Unity 1 迷路ゲーム 1 制作
11月22日 第07回 Unity 2 迷路ゲーム 1 制作
11月29日 第08回 Unity 3 迷路ゲーム 2 制作
12月06日 第09回 Unity 4 迷路ゲーム 3 制作
12月13日 第10回 Unity 5 『バルーントリップ』風ゲーム制作
01月17日 第11回 総合演習 1
01月24日 第12回 総合演習 2
01月31日 第13回 総合演習 3

第01回と第02回で使用したScratchは、MITメディアラボが開発し、2006年から無償公開されているプログラミング言語の学習環境です。命令が書かれたブロックを組み合わせることで、プログラミングを行うことができます。ブロックは色や形が工夫されていて、視覚的にもわかりやすく、日本語対応もなされています。

ScratchはWebアプリケーションとして無償提供されており、つくったゲームをネット上で公開するなど、コミュニティプラットフォームとしての機能が存在する点も特徴です。2020年の小学校でのプログラミング教育必修化をきっかけに、国内でも関心度が急上昇しており、多くのプログラミング教室で採用されています。

最初の授業で使用したのは、文部科学省が全国の学校向けに提供しており、Webでも公開されている「小学校プログラミング教育に関する研修教材」です。この中でScratchのチュートリアルとして有名な『猫とネズミ(cat and rat)』ゲームのつくり方が説明されています。

本作はランダムに動く猫を避けつつ、マウスでネズミを操作して画面上のチーズを全部取るというゲームで、プログラミングの初心者にも無理なくこなせる内容です。実際、大半の学生がScratchに触れるのは初めてでしたが、楽しんで制作してくれました。第2回目の授業では『猫とネズミ』ゲームの制作を終えて、自分なりに考えたオリジナルゲームの制作に進んだ学生もいました。

以下の2作は、学生の原案をもとに筆者が作成したゲームです。
scratch.mit.edu/projects/335956418/
scratch.mit.edu/projects/337645996/

▲授業風景

Quittaで自作チュートリアルを作成

第03回から使用したUnity PlayGroundは、2019年1月にUnityから公開された初心者向けのゲーム開発フレームワークです。通常のUnityがベースとなっており、2Dのアセットや主要なスクリプト、6種類のゲームサンプルが用意されています。公式マニュアルやチュートリアルが手厚いのも特徴で、そのうちのいくつかは日本語訳もされています。同社の安原広和氏によって「Unity道場幕張スペシャル3」で紹介されており、安原氏が授業で使用した教材もWeb上で公開されています。

▲Unity PlayGroundのゲームサンプルのひとつ


ただ、これまでの経験から、初心者はひとつずつ、段階をおって、噛んで含めるように説明していかなければ簡単に脱落してしまうことがわかってきました。そこで、まずはUnity Playgroundのマニュアルで紹介されている、隕石にぶつからないように宇宙船を操作して、スターを集めるゲームのチュートリアルを制作しました。当初はWordやPDFでの配布も検討しましたが、いくつか無償サービスを試したところ、プログラマのための技術情報共有サービスQiitaが使いやすいことがわかりました。こちらが自作のチュートリアルとなります。

▲隕石にぶつからないように宇宙船を操作して、スターを集めるゲームのサンプル


続いて制作したのが、立命館大学 映像学部 09ゼミ(Asobi Lab)の奥出成希教授が制作した『ギャラクシーウォーズ』風ゲームのチュートリアルです。YouTubeで動画も公開されていますが、細かい部分がわかりにくいので(Qiitaではスクリーンショットをワンクリックで拡大できるので便利です)、自分で手順を確認しながらチュートリアルを作成しました。ただ、授業で公開した際はいくつかまちがいがあり、学生に無用な混乱をさせてしまいました。授業で実際に投入する前に、第三者に試してもらって、バグチェックをしてもらうことが大事ですね......。自作チュートリアルはこちらです。

▲『ギャラクシーウォーズ』風ゲームのサンプル


また、第06回では過去2回の経験をもとに、オリジナルのシューティングゲームをUnity PlayGroundでつくってもらうことを考えていました。しかし、残念ながらそこまで到達できた学生はいませんでした。原因のひとつとなったのが、前述した課題のバグです。初心者は教科書通りにつくってきちんと動かないと、つい自分が悪かったと思いがちですよね......。そうじゃないんです。教科書の方がまちがっていることもあるんです......平身低頭です。用意しておいた課題はこちらになります。

▲授業風景

以上の準備期間を終えた後で、第06回から本格的にUnityを用いた演習をスタートさせました。題材としたのが、2017年に制作した迷路ゲームです(このゲームは、連載の第2回で紹介しています)。カーソルキーで床を傾けながら、ボールをゴールまで誘導するというもので、「ボールを動かす」ことと「床を傾けて、間接的にボールを操作する」ことのちがいについて理解してもらうことが目的でした(ちなみに、ここでも教材にまちがいが散見されました。ColliderのIs Trigerのチェック漏れです。おかげで、ボールがゴールに到着したり、障害物に当たっても、ゴールやミスの表示が行われず、迷惑をかけました......)。自作チュートリアルはこちらです。

▲迷路ゲームのサンプル


続いて迷路ゲームが完成した学生には、その内容をベースにリプレイボタンと、タイム&ベストタイムの各UIを追加してもらうことにしました。中でも大きいのがタイムの追加で、これによってゲームの目的が「障害物を避けてゴールにたどり着く」から、「いち早くゴールにたどり着く」に上書きされます。その結果、求められるレベルデザインが変化することになります。前者の場合、ともすればレベルデザインが複雑になりがちですが、後者ではゴールにたどり着くことが前提で、その上で細かいテクニックを競う遊びになるため、レベルデザインがシンプルになることが期待されます。自作チュートリアルはこちらです。

▲リプレイボタンと、タイム&ベストタイムの各UIを追加した迷路ゲームのサンプル


その上で年内最後の授業として行なったのが、Unity PlayGroundでゲームをつくり、スクリプトで機能を拡張する演習です。題材にあげたのはファミコン向けゲーム『バルーンファイト』に収録されている『バルーントリップ』。この基本的なゲームメカニクスをUnity PlayGroundで再現し、新たにリプレイボタンをつけてもらうことにしました(なお、Unity PlayGroundに収録されているLoadLevelでは上手く動かなかったため、自作の簡単なスクリプトをつけています)。こんな風にUnity PlayGroundをベースに、スクリプトで少しずつ機能を拡張していくことで、学生がちょっとしたアイデアをすぐに実装して確かめられるようになればいいなあと感じています。自作チュートリアルはこちらです。

▲『バルーントリップ』風ゲームのサンプル


もっとも、授業時間の関係で『バルーントリップ』風ゲームの制作を開始したのは、全学生の一部にすぎませんでした。そこで年明けからの3回分の授業を自由演習時間として、好きなゲームをつくってもらうことにしました。前記の授業結果から、メカニクスが確定すれば、レベルデザインについてはそこそこできることがわかっています。どういった発想のゲームが出てくるか楽しみです。

次回の更新は2月以降を予定しています。お楽しみに。



プロフィール


  • PHOTO_弘田 充 / Mitsuru Hirota
  • 小野憲史
    ゲームジャーナリスト

    1971年生まれ。関西大学社会学部を卒業後、「ゲーム批評」編集長などを経て2000年よりフリーのゲームジャーナリストとして活動。CGWORLD、毎日新聞、Alienware zoneなどWeb媒体を中心に記事を寄稿し、海外取材や講演などもこなす。ほかにNPO法人IGDA日本名誉理事・事務局長、ゲームライターコミュニティ世話人など、コミュニティ活動にも精力的に取り組んでいる。2017年5月より東京クールジャパン、2019年4月よりヒューマンアカデミー秋葉原校で、それぞれ非常勤講師に就任。

本連載のバックナンバー

No.01:「あそびのデザイン講座」活用レポート
No.02:Unityスクリプトに初挑戦
No.03:Unityアセットストアに初挑戦
No.04:新年度がスタートし、ゼロから仕切り直して授業設計
No.05:到達度のちがいをどのように捉えるか?
No.06:あそびのデザインとMDAフレームワーク
No.07:「あそびのデザイン講座」の根底に流れるデザイン思想とは?
No.08:遊んで楽しい、つくって楽しい、そして......
No.09:レベルデザインで変わるゲーム体験
No.10:サンプルを魔改造してランゲームをつくる
No.11:日本のゲーム教育で学校に求められることとは何か?
No.12:現実を抽象化・誇張化するとゲームになる
No.13:メカニクスとレベルデザインの接続