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