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