ゲーム専門学校の新人講師がUnityを勉強しながら、「ゲームのおもしろさとは何か」について授業を行う泥縄式レポートの第五弾。水先案内人になるのがユニティ・テクノロジーズ・ジャパン(以後、ユニティ)から提供中の無料教材「あそびのデザイン講座」だ。今回はスクリプトを作成し、自機の操作を可能にしたり、操作ミス後のリプレイ機能を実装したりするまでの模様をレポートする。
TEXT&PHOTO_小野憲史 / Kenji Ono
EDIT_尾形美幸 / Miyuki Ogata(CGWORLD)
夏休みまでの11回が終了
猛暑が続く中、皆様いかがお過ごしでしょうか? ゲームジャーナリスト兼、専門学校東京ネットウエイブ非常勤講師の小野憲史です。ほとんどの大学・専門学校で夏休みが始まり、こと非常勤講師の皆様におかれましては、ほっと一息というところでしょうか? 自分も11回の授業が無事終了したところです。夏休み明けに3回の授業を残しているものの、気分はもう前期終了といったところです。いや、まだ終わってないんですけどね。
自分の担当する「ゲームメディア概論」では、「ゲームのおもしろさを構造的に分析して文章で表現する」ことを目標に、対話式授業やグループ演習などを絡めつつ、授業を進めています(※1)。それと対になるのが、本連載で紹介しているUnity演習です。本当は両者の内容が、より密接に絡むように授業計画を立てられればいいんですが、まだまだ試行錯誤中といったところです。逆に言うと、こんな風に実験的な授業をしやすいのが、専門学校のよさではないでしょうか? もちろん、学校にもよると思いますが......。
※1 興味のある方は こちらのWebサイト(ゲームライターコミュニティ)にブログ形式で授業スライドを公開していますので、ご覧ください。
ただ、本当は早くこうした授業の内容を整理し、体系化して、ドキュメント(=教科書)を作成し、誰もが使えるようにしていく必要があります。特に日本では「ゲーム開発経験者でなければ、ゲーム開発は教えられない」とする風潮が支配的です。幸か不幸か自分はゲーム開発経験がありませんので、「ゲーム開発者教育(特にゲームデザイン分野)を普遍化していく」うえで、ユニークな存在になり得るのかな......などと考えながら授業を進めている今日この頃です。
さて、前回までで「あそびのデザイン講座」の内容が一区切りつき、今回から新しい章に突入しました。前回までは「坂をつくってボールを転がす」ことが主目的で、ゲーム内世界にプレイヤーが介入できませんでした。これに対して今回からは「プレイヤーが操作可能な自機をつくる」という、より能動的な要素が加わります。また、「操作できる」ことは「ミスが発生する」可能性を生みます。そこで「ミスをした後のリプレイ機能を加える」という要素も加わりました。
演習プログラム
第5回:プレイヤーをつくろう(6月22日・29日)
ステージ上にバー(=自機)をつくり、カーソルキーで左右に操作可能にする
▲筆者が自作した第5回の動画チュートリアルの一部。全体で約30分におよぶため、終了直前部分のみご紹介します
第6回:リプレイ(7月6日・13日)
ボールをバーで受け損なったとき、ミスと判定して、再度ボールが発生する仕組みをつくる。また、ステージ上にギミックを追加し、これまでの演習で登場したスクリプトを活用して、ピンボール風のゲーム体験が可能なように、内容をつくり込んでいく
▲筆者が自作した第6回の動画チュートリアルの一部。こちらも全体で約30分におよぶため、終了直前部分のみご紹介します
発表(7月20日)
これまでに作成した内容を皆の前で発表する
このように、今回から一気に演習内容がゲームっぽくなっていきました。ただ、ここで簡単に「ゲームっぽく」という表現を使いましたが、「ゲームっぽさ」とは具体的に何でしょうか? これは「ゲームとゲームでないものの境界線」という命題にもつながります。この命題を、実際にUnityでコンテンツをつくりつつ、体験的に学ぶことが「あそびのデザイン講座」の狙いです。そのためには、「ただつくる」だけではなく、「考えてつくる」姿勢が学生にとっても重要になります。
▲授業中の様子
Unityの操作は手段であって目的ではない
ところが、いざ授業でやってみると、これがなかなか難しいんですね。実は「あそびのデザイン講座」では毎回、指導者向けに授業のポイントがまとめられています。第5回「プレイヤーをつくろう」なら、「自機の形状を様々に変えて、そこで起きるゲーム体験の変化について自分なりに考える」などが相当します。しかし、学生の理解度や到達度は一人ひとりちがいがあります。実際に教えていると、演習が遅れている学生のフォローアップに忙しく、なかなか考察まで時間が取れないのが現状です。
このように、本演習で「Unityを操作してコンテンツをつくる」ことは、手段であって目的ではありません。しかし、現実問題として手段だけで時間が取られてしまい、なかなか目的にまでいたることができない......という悩ましさが感じられるようになってきました。ただし、実際にUnityを操作し、スクリプトを自分で書くことで、自然と理解できるようになることもあります。特にまちがったコードに対する勘(「こう書くとエラーになりそうだ」と察知できる力など)を養うには、俗に「写経」と呼ばれる、スクリプトの丸写し作業を繰り返すことが有効です。
まあ、本来であれば、この考察部分を座学パートで行うべきかもしれません(※2)。しかし、そうなると文字通り「Unity演習」になってしまい、授業が「ゲームメディア概論」ではなくなってしまう......。バランスどりが難しいところです。
※2 本授業は3時間目と4時間目の2コマ、180分で行なっています。3時間目は座学中心で「ゲームのおもしろさを構造的に分析して文章で表現する」授業、4時間目はUnity演習を充てています。
特に学生間で差が出やすいのが、これまでに何回も出てきたC#スクリプトの作成です。実際、前回のレポート記事までは、学生に作成させていました。しかし、学生間での進捗の差が無視できなくなってきたため、7月6日の第6回授業から、「あそびのデザイン講座」の各回ごとに完成したスクリプトを配布し、自由に使ってもらうことにしました。スクリプトの作成でエラーが出たら、修正作業に時間を費やさずに、完成品のスクリプトをそのまま使用し、作業を進めてくださいというわけです。
その上で、スクリプトだけでなく、プロジェクトフォルダも配布するようにしました。つまり第6回の演習に取り組む学生に対して、最初から完成したプロジェクトフォルダを渡して、自由に使っていいとしたのです。そうすると学生がやることは、ステージのエディットだけになります。いわば、いきなり考察に進めてしまうというわけです。かなりのチート技ではありますが、これによってモチベーションを取り戻したように感じられる学生もいました。
[[SplitPage]]授業自体にもレベルデザインが必要
こんな風に第5回と第6回の演習は、それぞれ2日ずつを費やしましたが、それでも時間が不足した学生が多かったようです。一方でサクサクと進めてしまい、時間が余ってしまった学生も......。このように、次第に「決まった演習課題」を元に、どのように「個々の進捗度の差を解消していくか」が課題になってきました。「できる子」には追加課題を与え、「できない子」を定期的に引っ張り上げてやりながら、双方のモチベーションを保つ......。いわば、授業のレベルデザインを行う必要が、本格的に出てきたというわけです。
このうち「できる子」については、(今後の演習資料の公開予定にもよりますが)どんどん先に進んでもらうのがよさそうです(個人的には周りの学生のフォローに回ってほしいところですが......)。これに対して「できない子」向けには、これまでと同様に2週間でひとつの回を行い、1周目はそのまま、2周目はスクリプトやプロジェクトフォルダを配布して参考にさせる、といったやり方が考えられるかもしれません。
学生の指導をしながら、総じてつまずきやすいポイントがあるようにも感じられました。前述したように第5回と第6回では、ピンボールのようなステージをつくって、中にギミックを配置していきます。はじめに行うのがステージとバー(=自機)の配置です。床をつくり、壁をつくり、バーをつくり、ボールをつくっていきます。そして、その過程で作業を進めやすくするために、エディタ画面上でステージ全体の見え方を調整していきます。
▲【左】「あそびのデザイン講座」第5回の該当部分(同PDFの8枚目)/【右】筆者が自作した第5回の動画チュートリアルの該当部分
ところが、ここで気をつけないと、UnityのSean上の向きとシーンギズモがずれてしまいがちです。こうなるとバーが左右ではなく上下や斜めに動いたり、バーに当たったボールが明後日の方向に飛んでいく、という怪現象に襲われます。本演習のスクリプトでは、バーの動きをSean上の水平方向(=X軸)、バーに対するボールの反射を垂直方向(=Y軸)に対する速度ベクトルの変化で指定します。そのためステージの向きがSean上の座標に対して狂っていると、こうした問題が発生するのです。
実際、自分も自宅で予習した時、同様の事態に陥りました。そして解決するまでに、結構悩みました。わかってしまえば、なんということはないんですけどね。ただ、わからなければ、ここで詰みますので、学生に対するフォローが必要になります。
また、中にはステージ上に、ひたすら大量のブロックを配置することに情熱を傾ける学生もいました(これは前回までの「坂をつくってボールを転がす」演習でも見られた光景です)。この時、ブロックをプレハブ化しておき、インスタンスをコピーして配置すると、同じ設定のブロックを量産できるため、便利です。これに限らず、プレハブはUnityでコンテンツをつくる上で基本となる概念のひとつですが、資料では第1回目で軽く触れられているのみです。そのため、この前後でエディタ上での手順を解説しておくといいでしょう。
▲筆者が自作したプレハブの動画チュートリアル
ほかに、第6回目の演習では過去に作成したスクリプトを再利用するシーンが出てきます。ただし、中には「過去の演習内容のプロジェクトフォルダを削除してしまった」「保存したUSBメモリを忘れた」なんて学生も出てきます。今後、全15回の資料公開が終了した時点で、使用する全スクリプトのコード一覧が別ファイルで配布されると、授業で使いやすくなりそうです。
一方で、これくらいの時期になると、学校側に対応いただいたこともあり、これまで頻発していたUnityの環境やライセンスに関するトラブルが、ほとんど見られなくなってきました。しかし、それでも「作業中のプロジェクトフォルダを誤って削除する」「提出時にプロジェクトフォルダではなく、Unityのシーンファイルのみを提出する」「ファイルやフォルダ名に2バイト文字を使用する」などのヒューマンエラーが見られました。これについては、繰り返し指導していくしか方法がなさそうです。
[[SplitPage]]完成度が低く、独創性が高い学生をどう導くか?
7月20日には全11回のまとめとして、簡単な発表会を行いました。前回(6月15日)は6名の学生が制作過程の内容をデモしてくれましたが、今回は発表時間が30分しか取れなかったこともあり、3名に留まりました。いずれも効果音としてフリーの音声素材を使用し、ブロックが消えるたびに萌えボイスが再生されたり、ステージの上方に天井をつくり、ボールが立体的に反射するようにブロックの配置を工夫したりといった、ユニークな作品に仕上がっていました。
▲発表会の様子
ただ、授業終了後に各自のプロジェクトフォルダを提出してもらったところ、未完成ながらも個性的な作品が数多く見られました。「一度に複数のボールが登場する」「手前と奧とで複数のバーが表示され、同時に動かせる」「本物のピンボールのように、射出ルートを設ける」「ステージ上に回転する細長いブロックを配置し、ボールの動きを妨害する」などです。「まだ作成途中だから」などと言い訳せずに、どんどん制作途中の内容を公開してほしかったところです。また教室内に、そうした雰囲気をつくり上げることが、今後の課題になりそうです。
これに限らず、クリエイターは一般的に制作過程を公開したがらない傾向にあります。一方でゲーム制作は集団作業であり、グラフィックデータを仮モデルで実装しておき、後から差し替えるなどの工程を踏むことが一般的です。また、制作途中のバージョンを他人に遊んでもらい、そこからフィードバックを得ることも、完成度を高める上で重要です。「個々の学生の進捗度の問題」にも関係しますが、試作と評価と改善のループ、いわゆるPDCAサイクルを意識させる工夫が、より求められそうです。
その上で提出された作品群の内容をチェックしたところ、おもしろい傾向がわかってきました。提出作品数が23件、うち提出ミス3件(シーンファイルのみ2件、過去の作品との混同1件)、有効作品数20件。これを「完成度の高さ」「独創性の高さ」の二軸で分類すると、次のような分布になりました。なお、完成度が高いとは各種スクリプトを使いこなしていること。独創性が高いとは特定の意図が感じられるステージ構成であることを意味しています。
A:完成度が低く、独創性が低い 7件
B:完成度が高く、独創性が低い 3件
C:完成度が低く、独創性が高い 7件
D:完成度が高く、独創性が高い 3件
このうちAはいわゆる「作業中」の段階に留まっていることを意味しています。Bは資料で示されたサンプルの改良に留まっているもの。Cは独創性が高いものの、スクリプトの使用度が乏しかったり、効果音が設定されていないもの。Dは独創性、完成度が共に高いものです。
ここで講師側が学生に求める一般的な到達コースは「A→B→C→D」となります。ゼロから演習を始めて、ある程度資料の内容がつくれるようになったら、それをもとに改造を始めて、最終的に完成させるという流れです。残念ながらAに留まった学生には、いかにBに到達させるか。そしてBで留まった学生には、いかにCへと進ませるかが、指導のポイントになりそうです。
ただ、これまでの授業内容をチェックしていると、少なからずAからCに、いきなり進んでしまう学生がいるように感じられました。こうした学生の特徴として「講義を聞くより、手を動かす方が好き」「とにかく思い通りにつくりたい」「無意味とも思われるつくり込みをして、ひとりで楽しんでいる」といった傾向が見られます。その結果、早い段階から勝手に改造を始めてしまい、時間内にまとめきれなくなる、というわけです。中には「こんなことをやりたいんですが?」と質問してきた内容が、そのまま資料に記されている、なんてこともありました。
もっとも、こうした学生は「つくる楽しさ」「表現する楽しさ」を知っているともいえます。その結果、決められた型にはめられることを、無意識のうちに避けてしまうというわけです。こうした資質はクリエイティブな仕事をする上で必須です。決められたことを決められたようにつくるだけでは、ただの作業員でしかないからです。それでは、仮にプロになったとしても、将来的に人件費が安い国に仕事をとられたり、AIに仕事がとって代わられたりすることになるのは、明らかでしょう。
とはいうものの、時間内にきっちりと一定のレベルまで到達することも、プロにとって重要なスキルです。このバランスの取り方を、演習を通して学ぶことが重要です。逆に一番まずいのは、時間内に終わらせようとするあまり、無難な表現に留まってしまうようになること。CからBに逆流してしまうことです。一方でクリエイティブな作業には完成がなく、締切を設けなければ、いつまでもCのままで留まってしまいがちなのも確か。ここでもポイントは、個々の学生の進捗度にどう向き合うか。今後の課題になりそうです。
今回は以上です。次回もぜひお付き合いください。
(第6回の公開は、2018年9月以降を予定しております)
プロフィール
-
小野憲史
ゲームジャーナリスト
1971年生まれ。関西大学社会学部を卒業後、「ゲーム批評」編集長などを経て2000年よりフリーのゲームジャーナリストとして活動。CGWORLD、まんたんウェブ、Alienware zoneなどWeb媒体を中心に記事を寄稿し、海外取材や講演などもこなす。他にNPO法人IGDA日本名誉理事・事務局長、ゲームライターコミュニティ世話人など、コミュニティ活動にも精力的に取り組んでいる。2017年5月より東京ネットウエイブ非常勤講師に就任。
本連載のバックナンバー
No.01:「あそびのデザイン講座」活用レポート
No.02:Unityスクリプトに初挑戦
No.03:Unityアセットストアに初挑戦
No.04:新年度がスタートし、ゼロから仕切り直して授業設計