WEBVTT 00:00:00.240 --> 00:00:02.383 前回の Developing で― 00:00:02.463 --> 00:00:07.040 僕はゲームエンジンの Unity を選んで その使い方を学び始めた 00:00:07.120 --> 00:00:11.870 だが今度は、自分の作品の アイデアを披露して… 00:00:11.960 --> 00:00:14.206 その制作に取りかかる時が来た 00:00:14.277 --> 00:00:19.231 でも、ゲームを開発するときは どこから手を付けたらいいのだろうか? 00:00:19.319 --> 00:00:22.754 これは死ぬほど重要な問題だと思う 00:00:22.834 --> 00:00:25.566 というのも これからお見せするように― 00:00:25.646 --> 00:00:29.698 開発を始めるときに もし間違った方向へ進んでしまうと 00:00:29.788 --> 00:00:33.817 その企画が悲惨な結果になってしまうかも しれないからだ 00:00:33.897 --> 00:00:35.171 いまから説明しよう 00:00:35.944 --> 00:00:39.425 「Developing - 開発過程」 00:00:44.800 --> 00:00:48.516 Okay ゲームのアイデアの話から始めよう 00:00:48.606 --> 00:00:51.861 僕が作ろうとしているのは… 覚悟して聞いてくれ 00:00:51.941 --> 00:00:55.568 クレイジー 2D 横スクロール ジャンプアクションゲームだ 00:00:55.648 --> 00:01:00.141 そうだ 独立系開発者はみんな 横スクアクションを作るところから出発してる 00:01:00.221 --> 00:01:04.353 だが僕にも相応の理由がある 僕はこの形式が大好きだし 00:01:04.433 --> 00:01:08.547 ジャンプアクションは、総合的に見れば 比較的簡単に作れる 00:01:08.637 --> 00:01:10.571 少なくとも MMO とは違うわけだ 00:01:10.651 --> 00:01:15.879 僕はこの形式のステージ構造や キャラ設計の動画をたくさん作ってきたし 00:01:15.957 --> 00:01:17.590 それが役に立つはずだ 00:01:17.670 --> 00:01:21.297 さて、これもまた… もう一度覚悟して聞いてくれ 00:01:21.387 --> 00:01:24.240 独特なひねりを加えた ゲームにするつもりだ 00:01:24.320 --> 00:01:29.035 僕の作品のアイデアは 磁力をもった主人公だ 00:01:29.125 --> 00:01:35.197 つまり、ある足場から反発したり 別の足場に引き寄せられたりする 00:01:35.275 --> 00:01:38.600 プレイヤーはボタンを押すだけで 極性を変えられる 00:01:38.680 --> 00:01:41.006 実はこのアイデアは ここから着想を得た 00:01:41.086 --> 00:01:43.200 『ゼルダの伝説:ふしぎの木の実 大地の章』だ 00:01:43.280 --> 00:01:46.020 このゲームでは「マグネグローブ」という アイテムを手に入れる 00:01:46.090 --> 00:01:50.602 リンクがある場所から反発したり そこへ向かったりできるようになる 00:01:50.682 --> 00:01:56.087 デカイ鉄球を拾ってパズルを解いたり 戦闘に使ったりもできる 00:01:56.177 --> 00:02:00.770 クールな仕掛けだが 多少の制約があるように感じる 00:02:00.847 --> 00:02:03.832 このジャンルや 俯瞰のカメラ視点や 00:02:03.913 --> 00:02:06.980 もちろん、ゲームボーイの 技術的制限によるものだ 00:02:07.060 --> 00:02:09.286 そこで僕は考えた… 00:02:09.362 --> 00:02:14.435 このアイデアを借りて、別の形式に 当てはめてみたらどうだろうか? 00:02:14.515 --> 00:02:17.727 テンポの速い 2D ジャンプアクションに 付け足すわけだ 00:02:17.797 --> 00:02:19.808 『Celeste』や『Super Meat Boy』に似たやつだ 00:02:19.880 --> 00:02:25.626 速さ、柔軟性、正確さのために 磁力を会得しなければならないゲームだ 00:02:26.080 --> 00:02:29.230 これが僕の構想だ そして今の問題は― 00:02:29.300 --> 00:02:31.415 どこから始めたらいいのか? ってことだ 00:02:31.495 --> 00:02:34.514 すぐに Unity でコードを 書き始めればいいのか? 00:02:34.594 --> 00:02:37.840 急いで Photoshop で 何か絵を作ればいいのか? 00:02:37.930 --> 00:02:41.369 物語の展開やキャラとかを 考えたほうがいいのか? 00:02:41.449 --> 00:02:43.520 どこから始めれば良いんだ? 00:02:43.600 --> 00:02:48.486 ぶっちゃけた話をすると これは僕が初めて作ろうとしたゲームではない 00:02:48.576 --> 00:02:53.724 子供の頃からゲームの構想があって 人生のなかで時々― 00:02:53.804 --> 00:02:57.526 色々なツールとかで そのゲームを作ろうとしてきた 00:02:57.606 --> 00:03:02.854 だが、僕がそういったゲームを完成させることは ほとんど無かった 00:03:02.933 --> 00:03:06.419 その原因は毎回同じだと思う 00:03:06.499 --> 00:03:09.537 間違ったやり方で始めていたからだ 00:03:09.614 --> 00:03:10.715 ご覧いただこう 00:03:10.795 --> 00:03:15.181 このフォルダは僕の実家から 持ってきたやつで 00:03:15.261 --> 00:03:24.010 Game Maker’s Toolkit を始める数年前に 作ろうとしたゲームのメモや下絵や構想がいっぱい入ってる 00:03:24.090 --> 00:03:27.822 こいつは『Starcraft Ghost』の マウスパッドだ 00:03:27.892 --> 00:03:32.720 これ開発中止になったやつだろ? eBay に出品する価値があるかもな 00:03:32.800 --> 00:03:36.804 それでこれは『カーターの呪い』という 題名になる予定だった 00:03:36.874 --> 00:03:41.797 ツタンカーメンの墓を発見した有名な考古学者 ハワード・カーターのゲームだ 00:03:41.877 --> 00:03:46.265 少なくともゲームのなかでは 古代エジプトの呪いを目覚めさせてしまって 00:03:46.345 --> 00:03:50.984 ゾンビやミイラ、古代エジプトの神々と 戦う羽目になる 00:03:51.059 --> 00:03:56.045 何時間もかけてこういう絵とかを 描いていたのを覚えてる 00:03:56.135 --> 00:03:58.400 つまり…なんてオタク野郎だ! 00:03:58.480 --> 00:04:01.430 ともかく じゃあどうやって敵と戦うのか? 00:04:01.510 --> 00:04:04.400 答えは…ピクロスをやることだ 00:04:04.480 --> 00:04:08.819 ピクロスとは、論理とマス目を使った パズルのことで…数独にちょっと似てる 00:04:08.899 --> 00:04:11.077 任天堂はたくさんの ピクロスゲームを作ってる 00:04:11.157 --> 00:04:14.573 僕は『Bookworm Adventures』みたいなゲームに かなり影響を受けた 00:04:14.653 --> 00:04:22.681 画面下にパズルがあって、それを解くと 上画面の小さな戦闘シーンで敵にダメージが入る 00:04:22.681 --> 00:04:26.388 僕のアイデアも同じで 下画面でピクロスをやって 00:04:26.388 --> 00:04:30.000 ハワード・カーターが上画面で 怪物と戦うという内容だ 00:04:30.000 --> 00:04:35.960 それで僕はすぐに開発に取り掛かった Codea という iPad アプリを使った 00:04:36.040 --> 00:04:38.844 iPad 用に iOS ゲームを作れるアプリだ 00:04:38.914 --> 00:04:43.920 僕は以前、これで iOS 用のごく普通の ピクロスアプリを作ったことがあって 00:04:44.010 --> 00:04:48.510 コードは自分で書けるだろうと思ったが グラフィックは最高のやつにしたかったから 00:04:48.590 --> 00:04:52.999 すぐに Photoshop を起動して 素材や動きをたくさん作った 00:04:53.079 --> 00:04:58.384 Dropbox のフォルダにはドット絵の素材や アニメーションがたくさん保存されている 00:04:58.464 --> 00:05:00.441 色んなキャラを大量に作ったし 00:05:00.511 --> 00:05:02.699 ハワード・カーターの 必殺技も作ったし 00:05:02.779 --> 00:05:04.824 冒頭のカットシーンも作ったし 00:05:04.894 --> 00:05:08.201 メニュー用の大きな ワクワクするボタンも作った 00:05:08.271 --> 00:05:10.530 僕は本当に、夢中で作った 00:05:10.610 --> 00:05:16.080 だが僕はあることに気付いた かなり重要なことだ 00:05:16.880 --> 00:05:26.080 この企画にかなり不都合なことだ ゲームは全然良くなかった! とても粗悪で、全然面白くなかった 00:05:26.080 --> 00:05:29.440 コードを書けば書くほど 開発すればするほど 00:05:29.440 --> 00:05:36.967 何が問題なのかが分かってきた ピクロスは、この種のゲームとしては 深さが欠如してる 00:05:36.967 --> 00:05:44.653 戦法も戦略も無いし、戦う敵に応じて 行動を変えることもできない 00:05:44.653 --> 00:05:47.961 突き詰めると、この戦闘には 実体が無かった 00:05:47.961 --> 00:05:52.365 上画面を丸ごと無視しても ゲームはそのまま成立する 00:05:52.365 --> 00:05:54.881 だってピクロスを 解いてるだけだから 00:05:54.881 --> 00:06:01.408 つまり戦う敵に応じてもっと難しくしたり もっと面白くしたりすることはできないし 00:06:01.408 --> 00:06:05.040 プレイヤーは同じことを何度も何度も 繰り返すだけというわけだ 00:06:05.040 --> 00:06:09.750 僕が作ったのは、浅くて作業的で 退屈なゲームだった 00:06:09.750 --> 00:06:18.240 これを修正することも出来たかもしれないが 僕はその時点でボロボロですっかり落ち込んでいたから そこで全てを破棄してしまった 00:06:18.960 --> 00:06:26.640 それで僕は何を間違えたのか? これは何年も経ってからの後知恵で(何年も経った後に分かったことだが)… もう 10年近くになるが… 00:06:26.640 --> 00:06:33.726 事の真相(何でこうなったのか)は、かなり明らかだ ゲームを作るときは、制作しなければならないものが色々ある 00:06:33.726 --> 00:06:40.044 主なものは、音楽、アート、ゲーム設計、物語、そしてコードだ 00:06:40.044 --> 00:06:45.005 これらが平等だと考えるのは簡単だが 実際はそうじゃない 00:06:45.005 --> 00:06:53.190 多くの場合「ゲーム設計」は対等ではなく 他の全ての要素が乗っかる基盤になる 00:06:53.190 --> 00:06:58.000 だから設計を間違えると 全体が崩壊してしまう 00:06:58.000 --> 00:07:02.000 バグの修正や、グラフィックを描き直すことはできるが 00:07:02.000 --> 00:07:07.760 ゲームプレイに根本的な欠陥がある場合 企画そのものが救出不可能になることがある 00:07:07.760 --> 00:07:09.865 僕の失敗は ほぼこれだった 00:07:09.865 --> 00:07:18.416 絵と動きにたくさんの時間を費やしてしまい ようやく「遊び」の部分に手を着けたときに、何もかもが欠陥だらけだと気付いた 00:07:18.416 --> 00:07:21.889 要するに僕はグラグラする地盤に家を建てたくせに 00:07:21.889 --> 00:07:26.560 トイレが床から抜け落ちてビックリ仰天してるわけだ 00:07:26.560 --> 00:07:30.170 恥ずかしいことに、僕はこの手の失敗を 何度もやらかしている 00:07:30.170 --> 00:07:35.840 僕は独自の「手がかり自動生成システム」を搭載した ポイントクリック型の犯罪捜査ゲームを作りたかったが 00:07:35.840 --> 00:07:39.520 あまりに多くの時間を、物語や 時代考証に費やしてしまって 00:07:39.520 --> 00:07:42.341 そのシステムを実際に 設計する余裕がなかった 00:07:42.341 --> 00:07:47.289 また携帯ゲーム『Snake』に、現代的な 速いテンポの工夫を加えたかったが 00:07:47.289 --> 00:07:51.920 バグ修正と動きのコードを 完璧にすることにハマってしまい 00:07:51.920 --> 00:07:56.640 このゲームが面白いのかどうか分からないまま 飽きて燃え尽きてしまった 00:07:57.200 --> 00:08:00.793 だから僕は自作ゲームを 設計しようとするたびに 00:08:00.793 --> 00:08:06.546 物語やグラフィックとかの他の要素を ゲームプレイよりも優先させてきた 00:08:06.624 --> 00:08:07.730 なんでだ? 00:08:07.810 --> 00:08:13.254 結局のところ、かなり間違った 2つの誤解をしてたのが原因だと思う 00:08:13.254 --> 00:08:18.115 誤解 1. は、ゲームは脳内では いつもクールな感じがしたから 00:08:18.115 --> 00:08:22.310 これを作ったら面白いだろうと 思い込んでしまったことだ 00:08:22.310 --> 00:08:31.944 明らかにこれは間違いだった 誤解 2. は、作ってみるまでそのゲームが面白いかどうかは分からないという前提(思い込み)だ 00:08:31.944 --> 00:08:38.082 そのゲームの制作をひたすら続けていけば いつかそれが良いものかどうか分かる…と思うだろ? 00:08:38.082 --> 00:08:40.400 いや、これも間違いだった 00:08:40.400 --> 00:08:48.281 今となっては答えは明白(自明)だから これを言うのはドン引き???なのだが 当時は明白ではなかった(簡単に気付けなかった) 00:08:48.281 --> 00:08:52.560 Game Maker’s Toolkit をやるようになって ゲーム開発の調査をするようになって 00:08:52.560 --> 00:09:00.080 数十人ものゲーム開発者に取材して、その後で 大成功したゲームがどう始まるのか分かるようになった 00:09:00.080 --> 00:09:07.290 ゲーム開発者はいつもたくさんのアイデアを持っている 頭の中では驚くほど楽しそうに見える 00:09:07.290 --> 00:09:12.513 だが最良の開発者は、自分の脳みそが ひどい悪臭の嘘つき野郎だと分かってる 00:09:12.513 --> 00:09:19.040 ゲームのアイデアが良いかどうかを知る唯一の方法は それを作って試すことだ 00:09:19.040 --> 00:09:25.760 だがゲーム全体を作るのではなく 開発者が作るのは…「試作品」だけでいい 00:09:25.760 --> 00:09:30.306 試作品とは、アイデアを具現化した 小さい断片的な実験台で 00:09:30.396 --> 00:09:34.361 そのアイデアが楽しいかどうかを ただ確認するために作られる 00:09:34.451 --> 00:09:37.680 こうした試作品は、通常 信じられないほど不格好で 00:09:37.760 --> 00:09:43.147 未完成のアートや、簡単な図形や 他からパクったドット絵とかで出来ている 00:09:43.227 --> 00:09:46.003 バグだらけで壊れてることが ほとんどで― 00:09:46.081 --> 00:09:51.115 アイデアの構造を試すために 最低限必要な機能だけで出来ている 00:09:51.115 --> 00:09:55.760 ゲームアイデアが十分機能するだけのバージョン??? 00:09:55.760 --> 00:10:00.801 ??? 00:10:00.801 --> 00:10:03.069 それは楽しいか? 興味深いものか? 00:10:03.148 --> 00:10:05.083 それは追求する価値があるのか? 00:10:05.153 --> 00:10:09.895 ゲームの残りの部分を構築できる 強固な基盤になっているのか? 00:10:09.895 --> 00:10:13.660 これが僕のやることだ 今度はちゃんとやるぞ 00:10:13.660 --> 00:10:19.280 僕は試作品を作ることだけに専念して 徹底的に自制心を持って(規律を守って) 00:10:19.280 --> 00:10:23.717 ゲームのアイデアを試すこと以外は 何もしないつもりだ 00:10:23.717 --> 00:10:26.996 絵に関しては、ググった画像で やりくりする 00:10:26.996 --> 00:10:33.840 音楽も物語も用意しないし 題名や主人公の名前も考えない 00:10:33.840 --> 00:10:38.180 まだ作ってもないゲームの アプリアイコンを考えることもしないぞ 00:10:38.180 --> 00:10:39.663 マーク、お前アホだな 00:10:39.663 --> 00:10:44.747 まだ Unity を勉強中だから、コードは 間違いなくバグまみれで壊れてるだろう 00:10:44.747 --> 00:10:48.797 だがアイデアがイケるかどうかは 十分確認できるはずだ 00:10:48.797 --> 00:10:52.960 ゲームの構造を試して、何が楽しいのかを 調べるただの遊び場だ 00:10:52.960 --> 00:10:56.310 それじゃあ、早速 Unity を起動しよう 00:10:56.400 --> 00:11:01.318 まず必要だったのは、左右移動と ジャンプができるキャラクターだ 00:11:01.408 --> 00:11:05.639 そこで右キーを押した時に リジッドボディ(剛体)に力が加わるようにした 00:11:05.639 --> 00:11:10.880 ここで既に不具合があって、幸先の良いスタートではなかったが、最終的には上手く出来た(対処できた) 00:11:10.880 --> 00:11:17.200 次にこのシーンに磁石を置いて キャラが磁石へ引き寄せられるようにする必要があった 00:11:17.200 --> 00:11:21.351 これを実現させるには、自分が 熟練プログラマーになる必要があって 00:11:21.351 --> 00:11:24.405 僕は自分の銀河系脳みそコード技能を駆使しなければならなかった 00:11:24.405 --> 00:11:28.646 それで指の柔軟をしてから 次のような文字列を入力した 00:11:28.646 --> 00:11:31.934 「リジッドボディを他の物体の方へ動かす方法」 00:11:31.934 --> 00:11:35.986 Okay これをググって、コードを見つけて 僕のゲームに貼り付けた 00:11:35.986 --> 00:11:38.807 だが確実にその仕組みを理解しておいた 00:11:38.807 --> 00:11:45.112 要は、キャラと磁石の間の方向を検出して リジッドボディに加える力をその方向にするわけだ 00:11:45.112 --> 00:11:49.967 また磁石に近付くにつれて速度が上がるように コードを微調整した 00:11:50.320 --> 00:11:54.046 次に、ボタンを押して磁力を消せるようにした 00:11:54.046 --> 00:11:59.120 これで思惑通り、キャラの移動速度が維持され 空中へ飛ばせるようになった 00:11:59.120 --> 00:12:03.595 つまり、ここに足場を置いとけば キャラを磁石で引き寄せてから 00:12:03.595 --> 00:12:06.504 磁力を消して ここへ飛び乗れるというわけだ 00:12:06.504 --> 00:12:11.245 これはかなり良い感じだが 制御するのはちょっとむずかしい 00:12:11.245 --> 00:12:15.360 このコードは完璧じゃないから すぐに手に負えなくなる 00:12:15.360 --> 00:12:20.714 だがこれを調べてるうちに Unity で本当に便利なやつを(偶然)発見した 00:12:20.714 --> 00:12:24.348 これはポイントエフェクタと呼ばれる 組み込みコンポーネントで 00:12:24.428 --> 00:12:26.710 簡単に言えば 磁場を作ってくれる 00:12:26.790 --> 00:12:30.874 なんでこれを見落としたのか分からないが こいつのアイコンはただの磁石だ 00:12:30.954 --> 00:12:32.043 その仕組みはこうだ 00:12:32.123 --> 00:12:35.614 GameObject にコライダー(当たり判定)と ポイントエフェクタを付けて― 00:12:35.694 --> 00:12:37.590 引き寄せる強さを設定する 00:12:37.670 --> 00:12:42.925 リジッドボディがコライダーの中に入ると 磁場の中心に引き寄せられるようになる 00:12:43.005 --> 00:12:48.650 Unity のレイヤーマスクを使って 特定の物体だけを引き寄せることもできる 00:12:48.720 --> 00:12:52.560 これでゲームが格段に作りやすくなるのは 間違いないから 00:12:52.560 --> 00:12:54.485 試作品を作り直すことにした 00:12:54.485 --> 00:12:59.840 00:12:59.840 --> 00:13:04.880 00:13:04.880 --> 00:13:09.760 00:13:09.760 --> 00:13:16.400 00:13:16.400 --> 00:13:23.120 00:13:23.120 --> 00:13:29.760 00:13:29.760 --> 00:13:34.960 00:13:34.960 --> 00:13:39.520 00:13:39.520 --> 00:13:44.960 00:13:44.960 --> 00:13:49.920 00:13:49.920 --> 00:13:53.040 00:13:53.040 --> 00:13:57.680 00:13:57.680 --> 00:14:01.680 00:14:01.680 --> 00:14:04.560 00:14:04.560 --> 00:14:07.600 00:14:07.600 --> 00:14:13.120 00:14:13.680 --> 00:14:20.240 00:14:20.240 --> 00:14:25.680 00:14:25.680 --> 00:14:30.720 00:14:30.720 --> 00:14:36.160 00:14:36.160 --> 00:14:41.200 00:14:41.200 --> 00:14:46.080 00:14:46.080 --> 00:14:52.320 00:14:52.320 --> 00:14:57.760 00:14:57.760 --> 00:15:03.200 00:15:03.200 --> 00:15:09.760 00:15:09.760 --> 00:15:14.960 00:15:14.960 --> 00:15:20.720 00:15:20.720 --> 00:15:26.880 00:15:26.880 --> 00:15:31.760 00:15:31.760 --> 00:15:37.440 00:15:37.440 --> 00:15:42.560 00:15:42.560 --> 00:15:46.400 00:15:46.960 --> 00:15:51.600 00:15:51.600 --> 00:15:55.920 00:15:55.920 --> 00:16:00.160 00:16:00.160 --> 00:16:04.800 00:16:04.800 --> 00:16:08.080 00:16:08.080 --> 00:16:13.600 00:16:13.600 --> 00:16:18.400 00:16:18.400 --> 00:16:22.960 00:16:22.960 --> 00:16:28.240 00:16:28.240 --> 00:16:33.920 00:16:33.920 --> 00:16:39.040 00:16:39.040 --> 00:16:45.520 00:16:45.520 --> 00:16:50.160 00:16:50.160 --> 00:16:54.800 00:16:54.800 --> 00:16:59.760 00:16:59.760 --> 00:17:04.800 00:17:04.800 --> 00:17:09.520 00:17:09.520 --> 00:17:14.160 00:17:14.160 --> 00:17:18.480 00:17:18.480 --> 00:17:24.400 00:17:24.400 --> 00:17:30.160 00:17:30.160 --> 00:17:35.120 00:17:35.120 --> 00:17:41.120 00:17:41.120 --> 00:17:46.160 00:17:46.160 --> 00:17:52.080 00:17:52.080 --> 00:17:56.960 00:17:56.960 --> 00:18:02.320 00:18:02.320 --> 00:18:06.720 00:18:06.720 --> 00:18:13.120 00:18:13.120 --> 00:18:16.320 00:18:16.320 --> 00:18:20.720 00:18:20.720 --> 00:18:26.880 00:18:26.880 --> 00:18:32.000 00:18:32.000 --> 00:18:37.520 00:18:37.520 --> 00:18:43.280 00:18:43.280 --> 00:18:49.520 00:18:49.520 --> 00:18:54.400 00:18:54.400 --> 00:18:59.600 00:18:59.600 --> 00:19:06.000 00:19:06.000 --> 00:19:11.600 00:19:11.600 --> 00:19:16.640 00:19:16.640 --> 00:19:22.000 00:19:22.000 --> 00:19:29.200 00:19:29.200 --> 00:19:34.400 00:19:34.400 --> 00:19:39.840 00:19:40.720 --> 00:19:45.120 00:19:45.120 --> 00:19:51.840 00:20:14.320 --> 00:20:18.320 00:20:19.600 --> 00:20:22.240 00:20:25.120 --> 00:20:31.760 00:20:31.760 --> 00:20:38.080 00:20:39.920 --> 00:20:41.120