プログラミング教室で Unity ミニコンテストをやった振り返り

どうしてミニコンテストを開くに至ったか

私がお手伝いしているプログラミング教室にも Unity クラスがあります。
そこの生徒達は、教室側が指定する Unity 2D, 3D の本を一冊ずつ購入してもらい、それを文字通り最初から最後まで読み・実際に動かし終えてから自分たちのゲームの制作に入ります。小学生でタイピングが苦手だとその2冊を終えるだけで1年近くかかる子供もいます。

ここでのポイントは、あくまで読んで・動かすだけなので、その内容を理解しているかどうかは生徒に大きく依存しています。とにかく右から左へ書き写して動かすだけの生徒もいれば、色々と実験をする生徒もいます。教室としてはそこの理解度に関しては積極的には関与しないという方針のようです。

制作に入ってからは、任意ですが中学生以降は Unity ユースクリエイターカップを年間の目標として作品作りをします。(小学生は別の小学生用のコンテストに出していました)
ただ、昨年はユースクリエイターカップが中止になってしまい、その後 Unity ニュージェネレーションズフェスが発表され無事実施されたようです。

クラスとしては、ちょうど高校生の Unity の生徒が受験前で、後は中学一年生になったばかりの生徒が一人という状況でしたので、ニュージェネレーションズフェスへの提出はできませんでした。
今年はもう一人小学生から中学生に上がる生徒がいるので、開催されれば参加できるように進めていこうとしています。

私はお手伝いを初めてからまだ1年2ヶ月程ですが、一つ思うことがありました。

なかなか作品にバリエーションが出ない

現在担当している小中学生の生徒は私より前からスクールに在籍しているのですが、彼らは私が見ている間はずっと 2D の横スクロールのアクションゲームを作っています。

すごく大きく分類すれば、マリオのようにスタートとゴールがあり敵は障害物でありプレイヤーはそれを避けながら進むというのが基本となるゲームです。

たまにトップダウンビューの視点に変わることもあるのですが、そこに重力が働くかどうかの違いがあるだけで、基本的には障害物を避けながらゴールを目指すものを作っていました。

最初は「これが作りたくて作っているのかな 🤔」とも思っていましたし、私が入る前まで見てくれていた講師も特にそれに対して疑問を持っていなかったのですが、1年近く見ていると、「これは惰性なのでは・・・🫣」という感じに見えてきました。

一方で、彼らは自宅に PC もなく、週に一度1時間だけという限られた中での制作なので、どうしても新しいことをすることに腰が重くなるのかもとも思いました。
加えて、その教室の PC が Unity を動かすには多少スペック不足で、新しいプロジェクトを作ろうと思うと 30 分ぐらいかかってしまうのも問題の一つだろうと思います。ただ、こちらに関しては教室の備品に関することなので、それに対するアプローチは考えないことにしました。
誤解の無いように記載すると、Visual Studio と Unity を起動した状態でビルド・実行の作業ループを行う分には十分な性能です。

そこで、ちょっとした報酬をネタにいつもと違ったことにチャレンジしてもらうことを思いつきました 💡
正直生徒は面倒くさがるかと思ったのですが、すぐに「どんなお題??」と食いついてきたので「よし、ちょっと待て、まだ考えてない」と待ってもらいました。この時点で報酬については話していなかったので、正直嬉しい誤算でした。

ニコンテストを開く

真っ先に頭に浮かんだのはヒストリア社が主催する 「UE5ぷちコン」でした。軽いテイストで数時間で仕上げるというフォーマットでありながら、毎回違うお題が提示されるため、いろいろとチャレンジもしたくなるあのコンテストが私は大好きです。

よって、少ない人数ではありますが、ニコンテストという形式にして現在中学生の生徒にいつもと違うゲームを作ってもらうことにしました。

第一回ミニコンテスト: お題「2Dランゲーム」

お題に関しては、いずれは「UE5ぷちコン」のように想像力が広がるものにしたいですが、今回は目的として「いろんなジャンルのゲームを作って欲しい」なので、生徒さん達がいつも作っている 2D 横スクロールアクションの延長にある 2Dランゲームにすることにしました。

正直いつもとの違いは「キャラクターが自動で進んでいく」ぐらいではありますが、いつもは「ゲームを完成させる」ということをやっていないので、そこも含めて第一回目で「コンテストに出す」ことにチャレンジしてもらおうということにしました。

今回作ったポスター的なものが以下ですが、とても緩い縛りではあるのですが、生徒さん達にはいくつか乗り越えるべき壁があり、それを提示した形です。 「初めてでもすぐに楽しめる」というのは結構ゲームを作っているとそうはならないことが多いですよね😅

期間は大体1ヶ月としましたが、実際には講義の数としては 6 回なので 1ヶ月半ぐらいになりました。

追加の要素は、やってみて欲しいことのやり方を提供する

ポスターに提示した内容の中に「追加の要素」を入れました。彼らは正直 Unity の知識はまだまだこれからですが、手持ちの知識でいろんな実験をするのが得意です。
なので、そこでの工夫も期待しつつ、せっかくなのでいつもと違うことにもチャレンジして欲しい、特にC# のコードを書いてスクリプトを作る」ことにチャレンジして欲しいというのがありました。

少なくとも最初は書籍を書き写しているので、コードを書いてきたはずなのですが、制作に入ってからはそこで作り終えたスクリプトを使うことに終始してしまい、その使い方すらも曖昧になってしまっていることが多いです。なので、少しでもコードに返ってきて欲しいという思いです。
ちなみに、彼らはまだまだ Web で検索して方法を探すと言うことが苦手です。こればかりは大人でも苦手な人も多いので慣れですね 🙋

ただ、「コードで何かやってみようよ」と言うだけでは嫌になるだけなので、こちらから「こういうコードを書けばこんなことができる」を Wiki に書いて提示することにしました。

以下のような感じで Scrapbox に記載し、教室の PC のブラウザにはいつも一覧を表示しておくようにしました。

スクリプトは書籍のものを多少応用したものにする

彼らは 2 冊の初心者向けの書籍しか読んでいないので、あまりにレベルが上がると意味がわからず拒絶反応が出てしまいかねません。

なので、彼らが読んだ書籍のスクリプトをベースにしつつ、「そこから何を変えたか」「どういう応用を入れたか」を解説しつつ、動きがすぐわかるようにアニメGIFも差し込み仕上げました。

もちろん、コードも import 文含め全文載せているので、基本はコピペすればコードは完成するようになっています。そしてわからなければ「書籍を読み返してみてね」という流れにしています。

ただ、正直、それでも彼らはほぼ読まずに使っているなと言う印象です😅 それでも分からない時にコードに質問してくれて、そこで解説を聞いてくれるだけでも大事なことです。

使いたくなるようにサンプルのゲームも作る

「講師参考作品」と言う体裁で、上記の応用したスクリプトを使ったゲームも作り、それを遊ばせて「こんなことしたくない?」とわかりやすいサンプルを見せた上で「それ、ここにやり方書いてあるよ」と誘導するという汚い大人の手法を使いました。

ちなみに講師参考作品は最終的に以下にアップロードしています。一応、私も期間中に作るという約束を守ったので、正直バグは全然取れて無いです🙈

BARREL RUN | フリーゲーム投稿サイト unityroom

ゲームは unityroom に公開

これは昨年、その教室主催のイベントに参加した時に生徒の保護者と偶然お話できた時に知ったのですが、保護者の方が生徒さんの作品を一度も見たことがないということでした👨‍👩‍👦‍👦

ただ、自宅に Unity を動作させられるスペックの PC がないのであれば、何らかデータを持って帰っても動作をさせられないですし、生徒さんはそもそもビルドして実行ファイルだけ持って帰るようなこともしていないので保護者の方が見る機会はありません。

また、生徒さんも「スマホで遊べるようにできる?」と聞いてくることもあったので「誰かに見てほしい」という欲求はあるのだろうと考え、まず最初のステップとして PC 限定にはなるものの、保護者には見てもらえるように unityroom にアップロードすることにしました。

加えて、いつものデバッグ環境ではなく、unityroom のようなプラットフォームにアップロードした状態で自分たちのゲームがどういう風に遊べるかを見ることで、ゲームオーバーやリトライに関する感覚も捉えやすいのでは無いかと考えました。

彼らの作品は以下です。

刺客 | フリーゲーム投稿サイト unityroom 帰りたい人 | フリーゲーム投稿サイト unityroom

実際、保護者の方に遊んでもらえたかは分かりませんが、少しでも何をやっているかが分かるといいなと思います。

フィードバックを手厚く

正直、教室にいるだけだと時間帯が同じ Unity クラスのメンバーや私を含めた少ないスタッフからの感想ぐらいしか得られません。
スタッフの意見はどうしてもある程度の配慮や日頃の活動も込みの意見になってしまい、彼らにとって有意義にはならないだろうと考え、今回は外部から3名にレビューを頼みました。

それぞれ現役のゲーム開発者というわけでは無いですが、自分たちでもゲームを作っている方達なので、レビューの内容としてもとても充実したものになりました😂. 正直、自分では出せないような視点・観点の意見がたくさんだったのでとてもありがたかったです。

以下は実際に生徒に渡したコンテスト結果ページのうちレビューの一部のスクリーンショットです。
具体的な改善点もたくさん書いてくださったので、私は講師という立場で褒め成分多めにできました。

外部のレビューの一部

このレビューを生徒さんがどんな気持ちで読んだかは分かりませんし、小学生・中学生であれば自分へのフィードバックを正面から読むのも恥ずかしいかもしれないので、斜め読みでもしてくれていたら御の字と思っています。
一方で、今後も少しずつ積み重ねることで何か彼らの糧になればいいですし、実際のコンテストに出した時のフィードバックへの向き合い方が整ったりすればいいなと思います。

やってみて

実は、今回はコンテストにも関わらず両者引き分けという形にして二人ともに賞品を渡しました😅

二人は嬉しそうでしたが、正直次回からも毎回引き分けというわけにもいかないので、納得感のある順位づけをできるようにしたいと考えているところです😖. 流石にそうしないと、今小学生の生徒さんが上がってくると破綻してしまいそうです。

とはいえ、まずは途切れ途切れでも年間通して継続し、本番のコンテストでいつもの延長だけではないゲーム作りをしてもらえるように少しでも後押しできればと思います。

ゲームを完成させることの難しさ

今回、「ゲームを完成させる」に関しては二人は対照的でした。
「刺客」を作った生徒さんは、正直いつも彼が作っているいつものゲームに結果的に近くなってしまったものの、ゲームのリトライ方法もシンプルにし、少なくとも unityroom で遊ぶゲームとしてはきちんとゲームのループが成立しています。

一方で、「帰りたい人」を作った生徒さんは、直近で小学生向けのコンテストで完成まで持っていっているのですが、彼はゲームUIを入れたり、ステージを複数ステージ作ったりとたくさんの頑張りを見せてくれたためか、ゲームを完成させるという点では時間内に終わりませんでしたし、ゲームの説明不足感もあり多少遊びにくい内容になってしまったように思います。

一方で、今回はそういう意味でもいつも机を並べて似たようなゲームを作っていた二人が、だいぶ色の違うゲームを作ってくれたことがとても嬉しいです。なので、両者引き分けは個人的にも甲乙つけ難かったという思いからというのもあります。

第二回に向けて

とりあえず今回は両者賞品ゲットで気をよくしたのか次もやる気なので、次回は「敵を倒す」ことに対してチャレンジしてもらうため「2Dシューティングゲーム」を考えています。

今回のお題からは多少ジャンプアップがあるので、うまくサンプルを作成しながら進めていきたいと思います。