1 00:00:00,035 --> 00:00:05,403 やあ、僕はマーク 磁石のビデオゲームを作ってる 2 00:00:05,443 --> 00:00:08,828 このシリーズの目標の1つは—— 3 00:00:08,868 --> 00:00:15,020 ゲーム制作に必要なものについて 本当の、透明な、ありのままの姿を見せることだ 4 00:00:15,060 --> 00:00:21,635 つまり楽しくてワクワクする 良い動画素材になるものだけを見せるわけにはいかない 5 00:00:21,675 --> 00:00:27,461 例えば、メカニクスの試作、ステージの設計 突然のデモ版公開とかだ 6 00:00:27,501 --> 00:00:33,489 そして分かったのは、ゲーム開発には 華やかじゃない作業がたくさんあるってことだ 7 00:00:33,529 --> 00:00:40,040 例えば、メニュー、HUD、データのセーブ・ロード 各種コントローラーの対応 8 00:00:40,080 --> 00:00:45,018 設定の同期、進行状況の記録 ステージの切り替えなどなど 9 00:00:45,058 --> 00:00:49,728 こういうのは開発日誌や記録番組では あまり語られない 10 00:00:49,768 --> 00:00:52,449 実際、とても退屈だからだ 11 00:00:52,489 --> 00:00:57,166 でも誰かがこれを作らないといけない このゲームでは…その誰かは… 12 00:00:58,196 --> 00:00:59,665 僕のことだよな? 13 00:01:10,102 --> 00:01:14,931 さて、前回の動画で 僕はキャラの操作性を完全に作り直した 14 00:01:14,971 --> 00:01:20,395 その中でキャラ操作に関する設定を いくつか実装した 15 00:01:20,435 --> 00:01:25,666 例えばボタン押しっぱなしの照準を オンオフの切り替え式に変えたり 16 00:01:25,706 --> 00:01:29,632 全てのキーやボタンの配置を 再設定したり 17 00:01:29,672 --> 00:01:32,949 磁石の色を変えたりできる 18 00:01:32,989 --> 00:01:39,932 これは使い捨てのテストステージでは問題ないが これらの設定をゲーム全体で機能させるには 19 00:01:39,972 --> 00:01:44,349 何らかの方法でこうした設定を ステージ間でも同期させ 20 00:01:44,389 --> 00:01:48,029 設定を HDD に セーブ・ロードできるようにして 21 00:01:48,069 --> 00:01:52,938 プレイヤーがこれらの設定を 設定する UI も用意する必要がある 22 00:01:52,978 --> 00:01:56,936 で、あちこちいじった後 これを思いついた 23 00:01:56,976 --> 00:02:02,743 初めてゲームを起動してタイトル画面に入ったとき 「設定管理器」を生成する 24 00:02:02,783 --> 00:02:08,216 これは大量のコードがある非表示の GameObject で 設定を記録したり 25 00:02:08,256 --> 00:02:12,029 その設定を HDD に セーブ・ロードしたりする 26 00:02:12,069 --> 00:02:15,521 この Object の名前は 「ロード時に削除しない」 27 00:02:15,561 --> 00:02:22,091 プレイヤーがゲームを始めると、タイトル画面が メモリーから削除されてステージに置き換わるが 28 00:02:22,131 --> 00:02:26,628 設定管理器は 臭い屁のように残り続ける 29 00:02:26,668 --> 00:02:31,540 まだメモリー上にあるので 新しいステージは設定管理器を見つけて 30 00:02:31,580 --> 00:02:33,939 本質的には質問できる 31 00:02:33,979 --> 00:02:38,015 例えばキャラは 「今すぐ低感度の照準になるべき?」と聞き 32 00:02:38,055 --> 00:02:41,179 磁石は「何色になればいい?」と聞き 33 00:02:41,219 --> 00:02:44,957 パネルは「今すぐアクセシビリティ記号を 表示したほうがいい?」と聞ける 34 00:02:44,997 --> 00:02:48,022 僕がここで本質的にやったことは—— 35 00:02:48,062 --> 00:02:53,032 メタなゲームロジックと その時々のステージ設計の分離だ 36 00:02:53,072 --> 00:02:59,261 今にしてみれば当然に思えるだろうが MVP の頃は絶対になかった 37 00:02:59,301 --> 00:03:03,193 当時は、セーブ・ロードや ステージ遷移をやるコードを 38 00:03:03,233 --> 00:03:06,489 各ステージに複製して使っていた 39 00:03:06,529 --> 00:03:12,017 ゲームの一時停止メニューですら 全ステージに複製していた 40 00:03:12,057 --> 00:03:16,387 これはとても非効率で テストステージが重くなるし 41 00:03:16,427 --> 00:03:22,270 階層に余計なものが増えるし これらの設定を変えるのが難しくなり 42 00:03:22,310 --> 00:03:25,389 ステージ間で要素を管理するのが 大変だった 43 00:03:25,429 --> 00:03:29,200 この新システムのほうが ずっと賢い 44 00:03:29,240 --> 00:03:34,647 だからこういう見えない管理器を もっと作ることにした 45 00:03:34,687 --> 00:03:38,357 で、ステージ名を「遷移管理器」に送ると 46 00:03:38,397 --> 00:03:42,381 そいつが現在のステージを消して 新しいステージに置き換える 47 00:03:42,421 --> 00:03:48,102 これは「音楽管理器」と上手く連携する まだ存在しない楽曲を取り出して 48 00:03:48,142 --> 00:03:51,745 ステージの読み込みに合わせて フェードイン・アウトしてくれる 49 00:03:51,785 --> 00:03:55,376 また「HUD 管理器」は画面の前面に描画する 50 00:03:55,416 --> 00:04:00,182 チュートリアルの指示や 状況に応じたボタンアイコンなどだ 51 00:04:00,222 --> 00:04:03,025 もちろんコントローラーごとに 表示が変わる 52 00:04:03,065 --> 00:04:09,641 そして一時停止メニューと設定メニューを 維持する「UI 管理器」を作った 53 00:04:09,681 --> 00:04:14,926 確かにゾッとするほど醜いが 今は機能だけに集中してる 54 00:04:14,966 --> 00:04:16,938 将来キレイにするつもりだ 55 00:04:16,978 --> 00:04:22,783 音響設計と同じく UI 設計は「未来のマークの問題」だ 56 00:04:22,823 --> 00:04:27,465 未来のマークの問題が 少し増えつつある 57 00:04:27,505 --> 00:04:30,415 だがもう1つ作りたい管理器があった 58 00:04:30,455 --> 00:04:36,953 MVP の場合、ゲームはステージ1から ステージ2、3というふうに進んでいく 59 00:04:36,993 --> 00:04:42,932 そういう直線的なステージ進行が パズルゲームに最適なのかどうかは分からない 60 00:04:42,972 --> 00:04:46,943 確かに『Portal』や『Inside』などは こういう形式だが 61 00:04:46,983 --> 00:04:51,943 『Braid』『Stephen's Sausage Roll』 『Baba Is You』などは 62 00:04:51,983 --> 00:04:54,346 もっと自由な構造になっている 63 00:04:54,386 --> 00:04:57,942 ステージを飛ばしたり パズルを好きな順番でやったり 64 00:04:57,982 --> 00:05:03,393 過去に省略したパズルにあとで戻ったりできる 僕はこれが好きだ 65 00:05:03,433 --> 00:05:08,984 パズルの1つにお手上げになっただけで 進行不能になるのは良くないと思う 66 00:05:09,024 --> 00:05:14,667 それで非直線的なステージ構造を作りたいので こういう風にした 67 00:05:14,707 --> 00:05:18,080 各ステージの目標は鍵の発見、収集だ 68 00:05:18,120 --> 00:05:22,677 新しい「進行管理器」には ゲーム内の全ての鍵のリストがあり 69 00:05:22,717 --> 00:05:26,918 鍵を1つ得るとそれを記録して そのデータを HDD にセーブする 70 00:05:26,958 --> 00:05:32,384 とても単純なハブステージを作って 色々なパズルに行けるドアを用意した 71 00:05:32,424 --> 00:05:38,305 最後にある特別なドアは 鍵を一定数集めた後に解除される 72 00:05:38,345 --> 00:05:43,130 この数はゲームのバランスを調整するとき 簡単に変更できる 73 00:05:43,170 --> 00:05:46,144 あと調整とバランスと言えば 74 00:05:46,184 --> 00:05:51,370 パズルの相対的な難しさに関する プレイヤーの意見に基づいて—— 75 00:05:51,410 --> 00:05:56,090 ステージの順番を 簡単に変更できるようにしたかった 76 00:05:56,130 --> 00:06:01,534 それでシステム全体は基本的に ステージのファイル名を経由している 77 00:06:01,574 --> 00:06:06,350 ステージには「01 Lift 02」みたいな 名前が付いていて 78 00:06:06,390 --> 00:06:10,034 最初の2文字は ステージが属するハブを表し 79 00:06:10,074 --> 00:06:14,612 最後の2文字は そのステージにある鍵の数を表す 80 00:06:14,652 --> 00:06:18,207 そして関連する全てのシステムは ステージ名を読み取って 81 00:06:18,247 --> 00:06:22,349 必要な文字列を取り出し そのステージがどこに属しているか調べる 82 00:06:22,389 --> 00:06:27,458 つまりファイル名を変えるだけで ステージの順番を変更できる 83 00:06:27,498 --> 00:06:29,589 これは超効率的だ 84 00:06:29,629 --> 00:06:33,363 効率化に凝ったついでに ツールの話もしよう 85 00:06:33,403 --> 00:06:37,010 僕が MVP で感じたもう1つのことは 86 00:06:37,050 --> 00:06:43,383 ビルドと、特にステージ設計の試行錯誤には 本当にイライラすることだ 87 00:06:43,423 --> 00:06:44,928 例を挙げよう 88 00:06:44,968 --> 00:06:50,490 この電磁石を少し短くして 赤色に変えたい場合 89 00:06:50,530 --> 00:06:55,270 僕は Area Effector の大きさを変えて ビームの見た目の大きさを変えて 90 00:06:55,310 --> 00:06:59,783 粒子システムを移動させて持続時間を減らし 粒子の色も変えて 91 00:06:59,823 --> 00:07:02,224 ビームの色を変えて ドット絵の色を変えて 92 00:07:02,264 --> 00:07:05,019 磁石のレイヤーを変えて バッファーゾーンのタグを変えて 93 00:07:05,059 --> 00:07:07,216 Area Effector のコライダーマスクを 変える必要がある 94 00:07:07,256 --> 00:07:11,026 これをゲームのほぼ全てに やることを想像してくれ 95 00:07:11,066 --> 00:07:17,943 何かを1タイル上に動かしたいとか ステージ開始時に閉じていたドアを開けたいだけなのに 96 00:07:17,983 --> 00:07:23,156 そして僕が気づいたのは Unity はゲーム制作のツールではあるが 97 00:07:23,196 --> 00:07:28,414 僕のゲームを作るためのツールではないってことだ だってそれは僕の責任だから 98 00:07:28,454 --> 00:07:31,575 僕はツールとシステムを整備して 99 00:07:31,615 --> 00:07:35,559 僕のゲームのコンテンツを 量産できるようにする必要がある 100 00:07:35,599 --> 00:07:40,351 それを念頭に置いて 新しい電磁石パネルを作った 101 00:07:40,391 --> 00:07:43,479 高さを調整する 単純なスライダーがあり 102 00:07:43,519 --> 00:07:50,375 このスライダーを上下に動かすと さっき話した全ての変数も自動的に変わる 103 00:07:50,415 --> 00:07:54,944 このボタンも同様で 赤と青、オンとオフを変更できる 104 00:07:54,984 --> 00:07:58,660 要はゲーム内に変えたい要素が たくさんあるのに—— 105 00:07:58,700 --> 00:08:02,184 そのやり方が同じ手順の 繰り返しだったら 106 00:08:02,224 --> 00:08:06,487 1ボタンで全てを処理できる 単純なコードを書いたほうがいい 107 00:08:06,527 --> 00:08:13,478 そこで MVP の要素をさらに改善して より使いやすく効率的にした 108 00:08:13,518 --> 00:08:17,126 例えばこの移動ボックスだ Unity の新しいなんかを使って 109 00:08:17,166 --> 00:08:21,794 ボックスの始点と終点 あと移動経路を表示させた 110 00:08:21,834 --> 00:08:26,103 さらに定型の仕掛け専用の 画面を整備したので 111 00:08:26,143 --> 00:08:30,299 ドラッグ&ドロップでシーンに追加できる まるで『Super Magnet Maker』だ 112 00:08:30,339 --> 00:08:34,564 あと MVP でもう1つ困ったのは Unity Event だ 113 00:08:34,604 --> 00:08:39,030 Event そのものではない 素晴らしい機能で、基本的にはこんな感じだ 114 00:08:39,070 --> 00:08:42,228 例えばこの緑色ボタンのコードでは 115 00:08:42,268 --> 00:08:46,699 ボタンが押されたとき 「Unity Event を呼び出す」と書ける 116 00:08:46,739 --> 00:08:51,625 その後、エディターに戻ると 画面に単純な入力欄が表示され 117 00:08:51,665 --> 00:08:57,564 シーンから好きな Object をドラッグするだけで 基本的にはどんな機能も実行できる 118 00:08:57,604 --> 00:09:02,250 それで緑色ボタンを押したら 電磁石パネルが消えるようになった 119 00:09:02,290 --> 00:09:05,477 パズルゲームにとっては とても強力な機能だ 120 00:09:05,517 --> 00:09:10,943 だが階層の中から目的のものを 探すのは少しイライラする 121 00:09:10,983 --> 00:09:17,947 Photoshop 的なピペットでシーン内の Object をクリックできたら超最高だと思う 122 00:09:17,987 --> 00:09:23,765 それで僕はネットでの自分の知名度を悪用して 自分よりずっと賢い人に 123 00:09:23,805 --> 00:09:29,215 僕が説明した通りのものを作ってもらったのだが 素晴らしくていつも使ってる 124 00:09:29,255 --> 00:09:34,124 この Unity アセットの GitHub リンクは 動画の概要欄にある 125 00:09:34,164 --> 00:09:40,441 パズルを簡単かつ効率的に設計できそうな ツールをたくさん用意したので 126 00:09:40,481 --> 00:09:43,937 試しにパズルを作ってみようと思った 127 00:09:43,977 --> 00:09:50,576 もちろんずっと効率的になったが この工程には厄介な部分や障害がまだあったので 128 00:09:50,616 --> 00:09:54,936 それを修正して また試しに別のステージを作ってみた 129 00:09:54,976 --> 00:09:58,583 それから別のステージ また別のステージを作ったら… 130 00:09:59,287 --> 00:10:00,720 あることに気づいた 131 00:10:00,760 --> 00:10:05,955 僕は裏で動いている システム管理器の艦隊を作った 132 00:10:05,995 --> 00:10:11,742 僕はこのハブ構造全体を作ったし 新しいパズルを4つか5つ作った 133 00:10:12,095 --> 00:10:15,576 僕はうっかりビデオゲームを 作ってしまったのか? 134 00:10:15,616 --> 00:10:16,507 あらま! 135 00:10:16,547 --> 00:10:21,160 面白いことに僕は新しいデモ版を作るつもりは 本当になかったのだが 136 00:10:21,200 --> 00:10:25,294 いま僕の HDD には 90% のデモ版がある 137 00:10:25,334 --> 00:10:30,448 これは効率的なツールが いかに強力かを示していると思う 138 00:10:30,488 --> 00:10:36,623 これがゲーム制作を速く簡単にしてくれるから 気づかないうちに何かを作ってしまう 139 00:10:36,663 --> 00:10:43,612 だから開発工程の序盤で 少し余分な努力や苦労をする価値はあると思う 140 00:10:43,652 --> 00:10:48,458 ゲーム開発の主要部分でかかる 多くの時間、労力、苦悩を 141 00:10:48,498 --> 00:10:51,220 省いてくれるからだ 142 00:10:51,260 --> 00:10:55,706 だがいずれにしてもこれは最高だ というのも、また MVP の話に戻ると 143 00:10:55,746 --> 00:11:00,949 僕が対応すべき課題が大量にあった 皆が好きじゃなかった点を挙げると—— 144 00:11:00,989 --> 00:11:03,922 キャラの操作感は 信じられないほど悪いし 145 00:11:03,962 --> 00:11:07,797 視覚言語にはイライラする矛盾が たくさんあったし 146 00:11:07,837 --> 00:11:12,575 アクションと謎解きが混在していて 遊び方に混乱する人もいたし 147 00:11:12,615 --> 00:11:16,738 ほとんどのパズルは「アハ」という 閃き体験に達していなかったし 148 00:11:16,778 --> 00:11:22,781 多くのステージは乱雑でバグだらけで 周期がリセットされるのを待たないといけない 149 00:11:22,821 --> 00:11:27,550 そしてこのゲームは 磁石が中心になっている感じがしなかった 150 00:11:27,590 --> 00:11:32,001 そこでこの新しいデモ版 『Untitled Magnet Game version 2.0』で 151 00:11:32,041 --> 00:11:37,421 これらの問題を全て解決して 皆がどう思うか確認するいい機会だ 152 00:11:37,461 --> 00:11:41,661 だから君が itch.io に立ち寄って 153 00:11:41,701 --> 00:11:46,350 このできたてのデモ版をプレイしてくれたら嬉しい そう、我慢できずに公開した 154 00:11:46,390 --> 00:11:50,586 支援者だけじゃなく誰でもプレイできる PC と Mac 対応で 155 00:11:50,626 --> 00:11:54,222 キーボードとマウスや 色々なコントローラーでプレイできる 156 00:11:54,262 --> 00:12:01,155 ぜひ一丁やってみて、この動画か itch.io の コメント欄に感想を書いてほしい 157 00:12:01,195 --> 00:12:05,638 そしてまた戻ってきて 新たな意見について一通り議論して 158 00:12:05,678 --> 00:12:09,014 ゲームの次の方向性を考えようと思う 159 00:12:09,054 --> 00:12:13,385 ご視聴ありがとう ゲームを楽しんでくれ またすぐに話そう 160 00:12:13,425 --> 00:12:18,023 おっと、最後に GMTK Game Jam が 2022 年も開催だ 161 00:12:18,063 --> 00:12:22,380 7月15日に始まるから itch.io にアクセスしている間に 162 00:12:22,420 --> 00:12:26,539 ゲームジャムにも登録しといてくれ また次回会おう 163 00:12:28,162 --> 00:12:28,842 (字幕翻訳:Nekofloor)