WEBVTT 00:00:00.035 --> 00:00:05.403 やあ、僕はマーク 磁石のビデオゲームを作ってる 00:00:05.443 --> 00:00:08.828 このシリーズの目標の1つは—— 00:00:08.868 --> 00:00:15.020 ゲーム制作に必要なものについて 本当の、透明な、ありのままの姿を見せることだ 00:00:15.060 --> 00:00:21.635 つまり楽しくてワクワクする 良い動画素材になるものだけを見せるわけにはいかない 00:00:21.675 --> 00:00:27.461 例えば、メカニクスの試作、ステージの設計 突然のデモ版公開とかだ 00:00:27.501 --> 00:00:33.489 そして分かったのは、ゲーム開発には 華やかじゃない作業がたくさんあるってことだ 00:00:33.529 --> 00:00:40.040 例えば、メニュー、HUD、データのセーブ・ロード 各種コントローラーの対応 00:00:40.080 --> 00:00:45.018 設定の同期、進行状況の記録 ステージの切り替えなどなど 00:00:45.058 --> 00:00:49.728 こういうのは開発日誌や記録番組では あまり語られない 00:00:49.768 --> 00:00:52.449 実際、とても退屈だからだ 00:00:52.489 --> 00:00:57.166 でも誰かがこれを作らないといけない このゲームでは…その誰かは… 00:00:58.196 --> 00:00:59.665 僕のことだよな? 00:01:10.102 --> 00:01:14.931 さて、前回の動画で 僕はキャラの操作性を完全に作り直した 00:01:14.971 --> 00:01:20.395 その中でキャラ操作に関する設定を いくつか実装した 00:01:20.435 --> 00:01:25.666 例えばボタン押しっぱなしの照準を オンオフの切り替え式に変えたり 00:01:25.706 --> 00:01:29.632 全てのキーやボタンの配置を 再設定したり 00:01:29.672 --> 00:01:32.949 磁石の色を変えたりできる 00:01:32.989 --> 00:01:39.932 これは使い捨てのテストステージでは問題ないが これらの設定をゲーム全体で機能させるには 00:01:39.972 --> 00:01:44.349 何らかの方法でこうした設定を ステージ間でも同期させ 00:01:44.389 --> 00:01:48.029 設定を HDD に セーブ・ロードできるようにして 00:01:48.069 --> 00:01:52.938 プレイヤーがこれらの設定を 設定する UI も用意する必要がある 00:01:52.978 --> 00:01:56.936 で、あちこちいじった後 これを思いついた 00:01:56.976 --> 00:02:02.743 初めてゲームを起動してタイトル画面に入ったとき 「設定管理器」を生成する 00:02:02.783 --> 00:02:08.216 これは大量のコードがある非表示の GameObject で 設定を記録したり 00:02:08.256 --> 00:02:12.029 その設定を HDD に セーブ・ロードしたりする 00:02:12.069 --> 00:02:15.521 この Object の名前は 「ロード時に削除しない」 00:02:15.561 --> 00:02:22.091 プレイヤーがゲームを始めると、タイトル画面が メモリーから削除されてステージに置き換わるが 00:02:22.131 --> 00:02:26.628 設定管理器は 臭い屁のように残り続ける 00:02:26.668 --> 00:02:31.540 まだメモリー上にあるので 新しいステージは設定管理器を見つけて 00:02:31.580 --> 00:02:33.939 本質的には質問できる 00:02:33.979 --> 00:02:38.015 例えばキャラは 「今すぐ低感度の照準になるべき?」と聞き 00:02:38.055 --> 00:02:41.179 磁石は「何色になればいい?」と聞き 00:02:41.219 --> 00:02:44.957 パネルは「今すぐアクセシビリティ記号を 表示したほうがいい?」と聞ける 00:02:44.997 --> 00:02:48.022 僕がここで本質的にやったことは—— 00:02:48.062 --> 00:02:53.032 メタなゲームロジックと その時々のステージ設計の分離だ 00:02:53.072 --> 00:02:59.261 今にしてみれば当然に思えるだろうが MVP の頃は絶対になかった 00:02:59.301 --> 00:03:03.193 当時は、セーブ・ロードや ステージ遷移をやるコードを 00:03:03.233 --> 00:03:06.489 各ステージに複製して使っていた 00:03:06.529 --> 00:03:12.017 ゲームの一時停止メニューですら 全ステージに複製していた 00:03:12.057 --> 00:03:16.387 これはとても非効率で テストステージが重くなるし 00:03:16.427 --> 00:03:22.270 階層に余計なものが増えるし これらの設定を変えるのが難しくなり 00:03:22.310 --> 00:03:25.389 ステージ間で要素を管理するのが 大変だった 00:03:25.429 --> 00:03:29.200 この新システムのほうが ずっと賢い 00:03:29.240 --> 00:03:34.647 だからこういう見えない管理器を もっと作ることにした 00:03:34.687 --> 00:03:38.357 で、ステージ名を「遷移管理器」に送ると 00:03:38.397 --> 00:03:42.381 そいつが現在のステージを消して 新しいステージに置き換える 00:03:42.421 --> 00:03:48.102 これは「音楽管理器」と上手く連携する まだ存在しない楽曲を取り出して 00:03:48.142 --> 00:03:51.745 ステージの読み込みに合わせて フェードイン・アウトしてくれる 00:03:51.785 --> 00:03:55.376 また「HUD 管理器」は画面の前面に描画する 00:03:55.416 --> 00:04:00.182 チュートリアルの指示や 状況に応じたボタンアイコンなどだ 00:04:00.222 --> 00:04:03.025 もちろんコントローラーごとに 表示が変わる 00:04:03.065 --> 00:04:09.641 そして一時停止メニューと設定メニューを 維持する「UI 管理器」を作った 00:04:09.681 --> 00:04:14.926 確かにゾッとするほど醜いが 今は機能だけに集中してる 00:04:14.966 --> 00:04:16.938 将来キレイにするつもりだ 00:04:16.978 --> 00:04:22.783 音響設計と同じく UI 設計は「未来のマークの問題」だ 00:04:22.823 --> 00:04:27.465 未来のマークの問題が 少し増えつつある 00:04:27.505 --> 00:04:30.415 だがもう1つ作りたい管理器があった 00:04:30.455 --> 00:04:36.953 MVP の場合、ゲームはステージ1から ステージ2、3というふうに進んでいく 00:04:36.993 --> 00:04:42.932 そういう直線的なステージ進行が パズルゲームに最適なのかどうかは分からない 00:04:42.972 --> 00:04:46.943 確かに『Portal』や『Inside』などは こういう形式だが 00:04:46.983 --> 00:04:51.943 『Braid』『Stephen's Sausage Roll』 『Baba Is You』などは 00:04:51.983 --> 00:04:54.346 もっと自由な構造になっている 00:04:54.386 --> 00:04:57.942 ステージを飛ばしたり パズルを好きな順番でやったり 00:04:57.982 --> 00:05:03.393 過去に省略したパズルにあとで戻ったりできる 僕はこれが好きだ 00:05:03.433 --> 00:05:08.984 パズルの1つにお手上げになっただけで 進行不能になるのは良くないと思う 00:05:09.024 --> 00:05:14.667 それで非直線的なステージ構造を作りたいので こういう風にした 00:05:14.707 --> 00:05:18.080 各ステージの目標は鍵の発見、収集だ 00:05:18.120 --> 00:05:22.677 新しい「進行管理器」には ゲーム内の全ての鍵のリストがあり 00:05:22.717 --> 00:05:26.918 鍵を1つ得るとそれを記録して そのデータを HDD にセーブする 00:05:26.958 --> 00:05:32.384 とても単純なハブステージを作って 色々なパズルに行けるドアを用意した 00:05:32.424 --> 00:05:38.305 最後にある特別なドアは 鍵を一定数集めた後に解除される 00:05:38.345 --> 00:05:43.130 この数はゲームのバランスを調整するとき 簡単に変更できる 00:05:43.170 --> 00:05:46.144 あと調整とバランスと言えば 00:05:46.184 --> 00:05:51.370 パズルの相対的な難しさに関する プレイヤーの意見に基づいて—— 00:05:51.410 --> 00:05:56.090 ステージの順番を 簡単に変更できるようにしたかった 00:05:56.130 --> 00:06:01.534 それでシステム全体は基本的に ステージのファイル名を経由している 00:06:01.574 --> 00:06:06.350 ステージには「01 Lift 02」みたいな 名前が付いていて 00:06:06.390 --> 00:06:10.034 最初の2文字は ステージが属するハブを表し 00:06:10.074 --> 00:06:14.612 最後の2文字は そのステージにある鍵の数を表す 00:06:14.652 --> 00:06:18.207 そして関連する全てのシステムは ステージ名を読み取って 00:06:18.247 --> 00:06:22.349 必要な文字列を取り出し そのステージがどこに属しているか調べる 00:06:22.389 --> 00:06:27.458 つまりファイル名を変えるだけで ステージの順番を変更できる 00:06:27.498 --> 00:06:29.589 これは超効率的だ 00:06:29.629 --> 00:06:33.363 効率化に凝ったついでに ツールの話もしよう 00:06:33.403 --> 00:06:37.010 僕が MVP で感じたもう1つのことは 00:06:37.050 --> 00:06:43.383 ビルドと、特にステージ設計の試行錯誤には 本当にイライラすることだ 00:06:43.423 --> 00:06:44.928 例を挙げよう 00:06:44.968 --> 00:06:50.490 この電磁石を少し短くして 赤色に変えたい場合 00:06:50.530 --> 00:06:55.270 僕は Area Effector の大きさを変えて ビームの見た目の大きさを変えて 00:06:55.310 --> 00:06:59.783 粒子システムを移動させて持続時間を減らし 粒子の色も変えて 00:06:59.823 --> 00:07:02.224 ビームの色を変えて ドット絵の色を変えて 00:07:02.264 --> 00:07:05.019 磁石のレイヤーを変えて バッファーゾーンのタグを変えて 00:07:05.059 --> 00:07:07.216 Area Effector のコライダーマスクを 変える必要がある 00:07:07.256 --> 00:07:11.026 これをゲームのほぼ全てに やることを想像してくれ 00:07:11.066 --> 00:07:17.943 何かを1タイル上に動かしたいとか ステージ開始時に閉じていたドアを開けたいだけなのに 00:07:17.983 --> 00:07:23.156 そして僕が気づいたのは Unity はゲーム制作のツールではあるが 00:07:23.196 --> 00:07:28.414 僕のゲームを作るためのツールではないってことだ だってそれは僕の責任だから 00:07:28.454 --> 00:07:31.575 僕はツールとシステムを整備して 00:07:31.615 --> 00:07:35.559 僕のゲームのコンテンツを 量産できるようにする必要がある 00:07:35.599 --> 00:07:40.351 それを念頭に置いて 新しい電磁石パネルを作った 00:07:40.391 --> 00:07:43.479 高さを調整する 単純なスライダーがあり 00:07:43.519 --> 00:07:50.375 このスライダーを上下に動かすと さっき話した全ての変数も自動的に変わる 00:07:50.415 --> 00:07:54.944 このボタンも同様で 赤と青、オンとオフを変更できる 00:07:54.984 --> 00:07:58.660 要はゲーム内に変えたい要素が たくさんあるのに—— 00:07:58.700 --> 00:08:02.184 そのやり方が同じ手順の 繰り返しだったら 00:08:02.224 --> 00:08:06.487 1ボタンで全てを処理できる 単純なコードを書いたほうがいい 00:08:06.527 --> 00:08:13.478 そこで MVP の要素をさらに改善して より使いやすく効率的にした 00:08:13.518 --> 00:08:17.126 例えばこの移動ボックスだ Unity の新しいなんかを使って 00:08:17.166 --> 00:08:21.794 ボックスの始点と終点 あと移動経路を表示させた 00:08:21.834 --> 00:08:26.103 さらに定型の仕掛け専用の 画面を整備したので 00:08:26.143 --> 00:08:30.299 ドラッグ&ドロップでシーンに追加できる まるで『Super Magnet Maker』だ 00:08:30.339 --> 00:08:34.564 あと MVP でもう1つ困ったのは Unity Event だ 00:08:34.604 --> 00:08:39.030 Event そのものではない 素晴らしい機能で、基本的にはこんな感じだ 00:08:39.070 --> 00:08:42.228 例えばこの緑色ボタンのコードでは 00:08:42.268 --> 00:08:46.699 ボタンが押されたとき 「Unity Event を呼び出す」と書ける 00:08:46.739 --> 00:08:51.625 その後、エディターに戻ると 画面に単純な入力欄が表示され 00:08:51.665 --> 00:08:57.564 シーンから好きな Object をドラッグするだけで 基本的にはどんな機能も実行できる 00:08:57.604 --> 00:09:02.250 それで緑色ボタンを押したら 電磁石パネルが消えるようになった 00:09:02.290 --> 00:09:05.477 パズルゲームにとっては とても強力な機能だ 00:09:05.517 --> 00:09:10.943 だが階層の中から目的のものを 探すのは少しイライラする 00:09:10.983 --> 00:09:17.947 Photoshop 的なピペットでシーン内の Object をクリックできたら超最高だと思う 00:09:17.987 --> 00:09:23.765 それで僕はネットでの自分の知名度を悪用して 自分よりずっと賢い人に 00:09:23.805 --> 00:09:29.215 僕が説明した通りのものを作ってもらったのだが 素晴らしくていつも使ってる 00:09:29.255 --> 00:09:34.124 この Unity アセットの GitHub リンクは 動画の概要欄にある 00:09:34.164 --> 00:09:40.441 パズルを簡単かつ効率的に設計できそうな ツールをたくさん用意したので 00:09:40.481 --> 00:09:43.937 試しにパズルを作ってみようと思った 00:09:43.977 --> 00:09:50.576 もちろんずっと効率的になったが この工程には厄介な部分や障害がまだあったので 00:09:50.616 --> 00:09:54.936 それを修正して また試しに別のステージを作ってみた 00:09:54.976 --> 00:09:58.583 それから別のステージ また別のステージを作ったら… 00:09:59.287 --> 00:10:00.720 あることに気づいた 00:10:00.760 --> 00:10:05.955 僕は裏で動いている システム管理器の艦隊を作った 00:10:05.995 --> 00:10:11.742 僕はこのハブ構造全体を作ったし 新しいパズルを4つか5つ作った 00:10:12.095 --> 00:10:15.576 僕はうっかりビデオゲームを 作ってしまったのか? 00:10:15.616 --> 00:10:16.507 あらま! 00:10:16.547 --> 00:10:21.160 面白いことに僕は新しいデモ版を作るつもりは 本当になかったのだが 00:10:21.200 --> 00:10:25.294 いま僕の HDD には 90% のデモ版がある 00:10:25.334 --> 00:10:30.448 これは効率的なツールが いかに強力かを示していると思う 00:10:30.488 --> 00:10:36.623 これがゲーム制作を速く簡単にしてくれるから 気づかないうちに何かを作ってしまう 00:10:36.663 --> 00:10:43.612 だから開発工程の序盤で 少し余分な努力や苦労をする価値はあると思う 00:10:43.652 --> 00:10:48.458 ゲーム開発の主要部分でかかる 多くの時間、労力、苦悩を 00:10:48.498 --> 00:10:51.220 省いてくれるからだ 00:10:51.260 --> 00:10:55.706 だがいずれにしてもこれは最高だ というのも、また MVP の話に戻ると 00:10:55.746 --> 00:11:00.949 僕が対応すべき課題が大量にあった 皆が好きじゃなかった点を挙げると—— 00:11:00.989 --> 00:11:03.922 キャラの操作感は 信じられないほど悪いし 00:11:03.962 --> 00:11:07.797 視覚言語にはイライラする矛盾が たくさんあったし 00:11:07.837 --> 00:11:12.575 アクションと謎解きが混在していて 遊び方に混乱する人もいたし 00:11:12.615 --> 00:11:16.738 ほとんどのパズルは「アハ」という 閃き体験に達していなかったし 00:11:16.778 --> 00:11:22.781 多くのステージは乱雑でバグだらけで 周期がリセットされるのを待たないといけない 00:11:22.821 --> 00:11:27.550 そしてこのゲームは 磁石が中心になっている感じがしなかった 00:11:27.590 --> 00:11:32.001 そこでこの新しいデモ版 『Untitled Magnet Game version 2.0』で 00:11:32.041 --> 00:11:37.421 これらの問題を全て解決して 皆がどう思うか確認するいい機会だ 00:11:37.461 --> 00:11:41.661 だから君が itch.io に立ち寄って 00:11:41.701 --> 00:11:46.350 このできたてのデモ版をプレイしてくれたら嬉しい そう、我慢できずに公開した 00:11:46.390 --> 00:11:50.586 支援者だけじゃなく誰でもプレイできる PC と Mac 対応で 00:11:50.626 --> 00:11:54.222 キーボードとマウスや 色々なコントローラーでプレイできる 00:11:54.262 --> 00:12:01.155 ぜひ一丁やってみて、この動画か itch.io の コメント欄に感想を書いてほしい 00:12:01.195 --> 00:12:05.638 そしてまた戻ってきて 新たな意見について一通り議論して 00:12:05.678 --> 00:12:09.014 ゲームの次の方向性を考えようと思う 00:12:09.054 --> 00:12:13.385 ご視聴ありがとう ゲームを楽しんでくれ またすぐに話そう 00:12:13.425 --> 00:12:18.023 おっと、最後に GMTK Game Jam が 2022 年も開催だ 00:12:18.063 --> 00:12:22.380 7月15日に始まるから itch.io にアクセスしている間に 00:12:22.420 --> 00:12:26.539 ゲームジャムにも登録しといてくれ また次回会おう 00:12:28.162 --> 00:12:28.842 (字幕翻訳:Nekofloor)