子供の時に遊んでいたLEGOがUnity上で動く!
そんなUnity Hubからインストールできる学習プロジェクトの一つLEGO Microgameを使ったゲームコンテストがLEGO IDEASで開催されるということで応募してみました。応募総数は1,150作品!? 盛り上がってます。
コンテストページはこちら。
応募したゲームは以下から遊べます。
日本だと「ブロック」って言ってますけど、英語表記だと「Brick(ブリック=レンガ)」なんですね。今回初めて気づきました。
目次
制作過程
2/1のUnityさんのツイートでコンテストを知りました。
LEGOのプロジェクトはUnity2019.4で、アップロード先のUnity PlayはWebGLでいい感じかな? https://t.co/pmghQjitOP
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年2月1日
この直後にUnity Learningが日本語化され、LEGOのチュートリアルも日本語化されました。
2/18に青木ととさんが解説してくださいましたUnityステーションのLEGO® を使ったゲーム開発コンテスト「BUILD YOUR OWN GAME!」に参加しよう!のYouTube動画で概要を把握した辺りから実働開始。
おもちゃコーナーでLEGO見て欲しくなるけど置き場が。でもPC内なら好き放題できる!!
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年2月18日
LEGO® を使ったゲーム開発コンテスト「BUILD YOUR OWN GAME!」に参加しよう! - Unityステーション https://t.co/k3EOjAXLFe @YouTubeより
Unity Hubで2019.4.xや今なら2020.3.xで新規プロジェクトを作成する際に、左のテンプレートに注目するとLEGO Microgameがあります。これをチュートリアルでインストールすると、使い方を短い動画などで知ることができるので、それをざくざくやっつけていきました。
この当時は基本的な指示は日本語化されてましたが動画内は英語でした。操作は出ますし今どきはGoogleアプリとかで簡単に和訳できるので大丈夫だと思います。
動画をぼんやり聞いていたため肝心なところを聞き逃していて備忘録的にツイートしたら青木ととさんからお返事いただけました!ありがとうございました!!
LEGOのチュートリアルを気の向くままに虫食いで進める。ブロックで色々機能作れる。時間を見つけてとりあえず全部終わらせようと。あとは規約の確認。カメラの動きを変えたり、ビルドしたの別の場所にアップしていいのかとか。ミニフィグも自作できるのかも調べたいところ。今日はこれまで。寒い
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年2月18日
コンテンツは比較的(LEGOの世界観やパーツを尊重した上で)好きに作ってよいのですが、LEGO Microgameの規約でUnityPlay以外(例えばunityroom等)へのアップはNGになってます🙇
— 青木とと(ˊᗜˋ*) (@lycoris102) 2021年2月18日
LEGO Microgameで作った作品はunityroomにアップできないということで、習作を1週間ゲームジャムに、という野望は潰えました。今回はLEGOを触りたかったのでこちらのコンテストに専念です。
2/19にLEGO Microgameの組み込みチュートリアルとUnity LearnのLEGO® Microgame - Unity Learnは完了。チュートリアルでは分からなかった実行時にブロックをくっつけたり離したりができるかと、プレイヤーやカメラの制御を追加で調査。
LEGO Microgame、プレイヤーのスクリプトに目的地を指定するMoveTo()とか追いかけるFollow()、爆発させるExplode()など用意されてていい感じ。実行時にブロックをくっつけたりはできないっぽいのでマップや仕掛けは既存の機能で組み立てると。おおよそ把握
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年2月20日
一通り把握できたところで、マウスでクリックした場所に歩かせたり、カメラの操作を試作しはじめました。
LEGO Microgameをいじりつつステージ案を検討中。うっかりミニフィグにカメラをドラッグ&ドロップしたらどこかに消えたり、謎のクリアが発生したり、くっつけたら他の階層のブロックと一体化したり結構クセが強い pic.twitter.com/9vygJTmZK9
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年2月22日
この時に作ったカメラのシステムをGet the Ship Back!に採用しています。操作の方は動くブロックに乗り降りする操作などが難しそうだったので、元のLEGO Microgameの操作で進めることにしました。
LEGO Microgameでブロックを選択しても構造が見えない~と思ってたけど、LEGO ToolsメニューのShow Bricks In Hierarchyを有効にすれば見れた。着色ができたりできなかったりや、接続状況の確認がこれでやりやすくなりそう pic.twitter.com/yoxwrsKCBX
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年3月4日
経験を積んでいるうちに良い設定を発見。Hierarchyは荒れますが細かく調整する場合はこの設定は重宝しました。あとブロックの色を変えるパネルが出たり出なかったりしたのはプレハブの解除が必要でした。チュートリアルでプレハブの解除をしていたのはあったのですがその時はピンと来ておらず、試行錯誤しているうちに再発見しました。
LEGO MicrogameのAddOnsのブロックが最新のLEGO Microgameで動かないっぽい。ConnectionField.csのGetConnectionで配列数のチェック漏れがあって、それを直せばエラーはなくなるけど接続が切れる。Knobのスクリプトが剥がれてるようなエラー。バージョンアップで構造を変えたのがAddOnsに未反映っぽい
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年3月4日
こんな問題も発生しました。そのため予定外のものもStudioで組み立てることになりましたが、これがまた楽しくなってしまって時間が溶けました。
LEGO Microgameで作ってるののタイトルでけた。背景に攻撃されてバラバラに散った宇宙船を描くことで、宇宙船のパーツを取り戻していくゲーム感を出したいのだけど、ノリノリで宇宙船を壊すゲームに見えなくもない pic.twitter.com/a5wCjyLGGF
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年3月10日
ストーリーや設定を導入のムービーとかで伝えたいけど時間が・・・ということで、なんとなくそういう感じのタイトル画面を作って解決!したことにしました。
最後の最後にこんな不具合も。
LEGO Studioからインポートする時にstaticをチェックしてるとエラーになった。Lightmapをチェックしていると動くけど表示されないっぽい。addonsのブロックが使えないのと同様にインポーターのバージョン違いとかかな?これでこの件は解決
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年3月15日
1つだけWebGLだとエラーになるステージがあって、その原因がこれでした。staticで軽くできるかと思ったのが仇に・・・。
以下のも最終日に発生したやつ。
LEGO MicrogameのVariable、ゲーム全体でずっと利用する値だったのか。シーン内で完結するパラメーターだと思い込んでて次のシーンで前のシーンの値が出てくるので悩んでた。他に方法があるかもだけどもう時間ないので今回は無理くりコード追加してこれでなんとか!
— たなかゆう@VoxelorerBird開発継続中 (@am1tanaka) 2021年3月15日
「エネルギークリスタルを全て取っていたら、レーザー砲に触れるとクリアできる」という条件を作りたいのだけど、トリガーのネストができないのです。追加の条件はVariableで与えられるのでそちらでやったら、なぜか別のステージに前のステージの条件が表示される。なんでだ!?となったやつでした。
以上で公開しました。LEGO Microgameの事前調査2日+企画&制作3週間ぐらいの楽しいLEGO生活でした^^
間に合わなかった要素
時間がものすごくギリギリになってしまったので、いくつか思いついていた要素を省きました。
- クリアまでのタイムアタックができるようにしたかった
- 目標物のミニレーダーが欲しかった
- カメラは上も見られるように調整した方がよかったかも
- Stage7の4つの黄色スイッチは、押すごとに敵の足場を一つ一つ爆発させたかった
- Stage7の敵を喋らせたかった
- 最終ステージの高速化をしたかった
コンテストが終って手を入れてよくなったら追加するかも知れません。
ステージ紹介
あまり遊ばれないならせめてステージ紹介だけでも・・・。これを見て楽しそうに感じたら遊んでいただければ嬉しいです!!
Stage1
チュートリアルステージ。ほぼ死ぬ要素がない練習ステージ。
奥に見える赤い仕掛けのところの爆発に巻き込まれて死ぬ、という想定外の仕様上の死因以外はほぼ死にどころはありません。スイッチを押しながらずんずん進んでください。
クリアするとこんな感じで宇宙船のパーツが組み立てられていきます。
Stage2
順番がある、と気付くステージ。細いところを渡るスリルなんかもちょこっと入れました。
Stage3
ここからが本番。お気に入りの回る足場から、レーザーを避けたり、仕掛けを組み合わせたり。
Stage4
高台からステージ全体を見渡してから飛び降りて、一番下から登っていく高さを意識したステージです。途中の階段や回転足場がお気に入り。
Stage5
基地にたどり着け!このステージは回収するものがなく、攻撃をかいくぐってゴールを目指します!
Stage6
敵基地に潜入。高さ方向にエレベーター中心に作ったステージです。
Stage7
敵アジトの本部へ!
Stage8
最終ステージ。塔を登りながらクリスタルを集めて、最後のパーツのレーザー砲で巨大砲台を壊そう!
さいごに
開発は3週間程度と思ったよりかかりましたが、ずっと楽しく作れました。実在のレゴブロックのモデルで組み立てられるツールStudio2.0でオブジェクトを作るのは楽しいですし、実在するブロックなので注文すれば実物を作れる可能性があるのも魅力です。
複雑なことをやろうとするとハマりポイントがありますが、シンプルな仕掛けならBehaviourBrickが充実しているので色々できます。カメラはCinemachineなので簡単に調整可能ですし、プレイヤーも調整用のパラメーターが多いですし外部のスクリプトからある程度の制御も可能です。
ちょっと残念だったのは継承が想定されていないクラスが結構あることでした。もとの動作がハードコーディングされていることがあったりして、その部分を変えたい時に難儀しました。もう一つの残念ポイントはUnity Playでしか公開できないことです。これはかなり痛い。ブロックを複雑に組み合わせることができたり、くっつけたブロックが持っている全ての動作を実行するなど手軽に使えるように工夫されていますが、その分、処理が重くWebGLだとパフォーマンス的に結構厳しいです。ネイティブでビルドできれば・・・とか、VRで使ってみたい、とか、可能性が大きそうなだけに発表先の自由度が低いのは残念です。軽量化されるか、発表先の自由度が増すか、今後の展開に期待しています。
テンプレートからプロジェクトを作ればチュートリアルを通して簡単な使い方が分かります。LEGOや積み木が好きな人は楽しめるのではないかと思います。今回は以上です。後日、作り方なども書いていきたいと思います。
おまけ
無事に応募した記念に買ってしまいました。グローグーを組み立ててみましたが、ブロックがぱっちりハマる手応えは楽しいですし、色々なくっつけ方ができることにも驚きました。楽しいですね、LEGO。