-
やぁ
-
僕はマーク・ブラウン
僕は自分のゲームを制作中だ
-
そのためには、まずゲームの
作り方を学ぶ必要がある
-
これはかなり真剣な取り組みで
かなり大きな挑戦だ
-
で、これはホントの話なんだが
このゲーム制作の挑戦は…
-
本格的に始まる前は
ほとんど挫折しかけていた
-
何が起きたか
説明しよう
-
「Developing - 開発中」
-
とはいえ、まずは
一歩前の話をしよう
-
何故かというと、僕はまず初めに
ゲームエンジンを選ぶ必要があったわけだ
-
ゲームエンジンっていうのは
少なくともこの場合では―
-
ゲーム制作を助けてくれる
ソフトウェアのことで
-
基本的には、ゲーム開発の難しいところや
退屈な作業を処理してくれる
-
例えば、グラフィックスを
画面に描画したり
-
コントローラと連動させたり
物理演算などをやってくれる
-
さらに、専用設計された
便利ツールがたくさんあって
-
アニメーションや UI など
ゲームでやりたいことを実現できる
-
今ゲームエンジンは
山ほどある
-
一番人気があるのは Unity や Unreal Engine
Godot、Pico-8、Game Maker、Construct で
-
さらにゲームの型に特化した
ゲームエンジンもある
-
例えば Twine や RPG Maker
Adventure Game Studio とかだ
-
特定のエコシステム用の
ゲームエンジンだってある
-
例えば Switch の
『ナビつき!ゲームプログラミング』や
-
PS4 の『Dreams』
あと『Roblox』は…
-
Roblox 界で遊べる
-
それぞれに長所と短所
愛用者と嫌ってる人がいるが
-
結局、僕は 1つに
絞らないといけなかった
-
それで、最終的に僕は…
-
Unity に決めた
-
Unity を選んだ理由は
たくさんある
-
強力でありながら比較的簡単に習得できて
かなりバランスが良い
-
2D と 3D の両方に適してるのも良い
僕は最初に 2D ゲームを作る予定だけど
-
将来は 3D をやるかもしれないし
つまり別のエンジンを学び直す必要がないわけだ
-
さらに Unity は世の中にある
大体の環境で動作できるから―
-
僕のバカゲーを PS5 に出したくなった場合
金銭的には無理でも、技術的には可能だ
-
だが Unity を採用する一番説得力のある理由は
その絶大な人気だ
-
Unity 製のゲームには『Hollow Knight』や
『Cuphead』『Fall Guys』
-
『Overcooked』『Cities: Skyline』
『Hearthstone』がある
-
現在 Steam で一番人気のゲームエンジンだし
僕が開催した直近の GMTK Game Jam では
-
Unity を使っていた人の数は
他のゲームエンジンの合計よりも多かった
-
この人気は、僕にとって本当に大切だ
というのも―
-
僕の学習を助けてくれる人が
それだけ多くなるし
-
チュートリアルや、リソース、アセット
プラグインがたくさんあって
-
僕が行き詰まったとき
たくさんの人に頼ることができる
-
例えば、GMTK Discord には
Unity の使い方を知ってる人が大勢いる
-
それに非常に経験豊富な Unity ユーザーの存在もある
BlackthornProd の Noa もいるし
-
Mix and Jam の Andre は
Jam(苦境)から助けてくれる
-
今のは酷かった
-
Okay
以上が僕の決断だ
-
すまんね、Godot 兄弟
全部 Unity の話になる
-
第一段階は終了
「ゲームエンジンを選ぶ」はヨシ!
-
じゃあ、第二段階
「使い方を覚える」だ
-
こいつが難しい
-
さっき言ったように、Unity の
チュートリアルはたくさんあって
-
僕が学び始めたときも
まさにそれを利用した
-
YouTube で「Unity Tutorials」と検索すると
たくさん出てきて―
-
スウェーデン人の男が
ソフトの使い方を教えてくれる
-
動画内でゲームの作り方を説明してくれるから
僕は熱心にそれを真似していった
-
箱がクリックされるたびに
僕も自分の画面で同じ箱をクリック
-
動画でコードが 1行入力されるたびに
僕も同じコードを入力する
-
すると、僕の PC でゲームが
動くようになって…これは超興奮した
-
だがその後
何週間も経ってから
-
白紙の Unity 画面を開いて、学んだことを
確認してみようと思った
-
その結果は…「無」だった
-
文字通り
何も覚えてなかった
-
動画の内容は、聞いた途端に
全部忘れてしまった
-
例えばキャラを画面に表示して
それを動かすことさえできなかった
-
全部ダメだった!
-
結局、これは自業自得だ
僕のチュートリアル動画を覚えてるか?
-
戦略ゲームで矢印が出てきて
「ここをクリック」とか
-
「そこをクリック」と説明しても
効果は無いって話だった
-
僕は Unity で全く同じことを
やっちまった!
-
I had played myself.
ドジ、ヘマをやっちまった
-
メンツ丸つぶれだ!
うわーッ!
-
でも正直言うと
これには本当に幻滅した
-
本当に自分が
バカ丸出しになった感じだった
-
人生を何週間も
無駄にした感じがして
-
自分がゲーム開発に向いてるのかどうかすら
全然分からなくなった
-
チュートリアルを見ても
何も身につかないなら―
-
僕はゲーム開発に
向いてないのかもしれない
-
動画作りに
専念するべきかもしれない
-
これは何ヶ月も前のことで、僕は
この開発過程の動画をやろうと思っていたんだが
-
その時は… 中止したほうが
良いんじゃないかと思った
-
一切発表せずに
何も無かったふりをするべきかも…とか
-
最悪だった
-
酷い状況だった
-
だがその後
Adobe Premiere について考えた
-
このチャンネルの動画は全て
このソフトウェアで制作していて
-
かなり複雑なソフトだが
僕は操作方法を知っているし、使い方もよく分かっている
-
だったら、どうやって僕は
Premiere を学んだんだ?
-
僕が Pocket Gamer 紙で働いていたとき
簡単な動画レビューをやる必要があった
-
そこで、同僚に Adobe Premiere の
基本を教えてもらった
-
動画を作るために必要になる
基礎的な知識だ
-
素材を読み込み
タイムラインに並べて
-
基本的なトランジションを適用して
YouTube へ書き出す方法だ
-
それから、何十本もの動画を
自分で制作しなければならなかった
-
だからその基本的な工程を
何度も繰り返すうちに―
-
ゆっくりと、僕の頭に
叩き込まれていった
-
その後、僕は
Game Maker's Toolkit を作った
-
その時、動画でもっと
面白いことをしたいと思っていた
-
マスク、カラー
テキスト、トランジションや
-
モーショングラフィックスとかの
楽しいやつだ
-
それを覚えるのは
かなり難しいはずだったが
-
僕には 2つの味方があった
第一に、全部を一気に覚える必要はないということ
-
動画を作るたび、少なくとも 1つは
新しいことに挑戦している限り―
-
エフェクトと知識のレパートリーを
ゆっくりと積み上げることができる
-
第二に、動画レビューをやっていたから
Premiere にすっかり慣れていたことだ
-
僕はこのソフトに安心していたから
何か新しいことを試したいと思ったときは
-
いつでも色々と実験したり
遊んだりできると思った
-
少なくとも、必要な答えを得るために
Google で何を検索すればいいか分かっていた
-
だから究極的に言えば、僕は Premiere を学ぶために
効果的な 3ステップの公式に従うことになった
-
Step 1. 絶対的な基礎だけを学ぶ
それ以上は無しだ
-
Step 2. 反復と簡単な制作を通じて
これらの基礎に慣れていく
-
Step 3. ゆっくりと時間をかけて
ソフトウェアの基礎知識を増やしながら
-
Premiere で使える機能の
レパートリーを築いていく
-
この方法は僕にとって
効果抜群だった
-
今では Premiere の使い方も
分かっている
-
このソフトを使えば
ほぼ何でも作れるようになった
-
これが上手くいった理由が
分かると思う
-
つまり動画制作ってのは、大抵の場合
アイデアを思いつくことだ
-
例えば「いま VHS 風の一時停止エフェクトを
表示したらクールじゃないか?」
-
それから実現する方法を
考える必要がある
-
例えば、フレームを一時停止するには
どうすればいいのか?
-
それっぽく見せるために
どのエフェクトを使うべきか?
-
どうすればこの揺らいだ線を
画面下へ動かせるのか?
-
考えてみると、僕が思いつけるアイデアは
無尽蔵にあるから
-
最初から全ての機能を覚えるのは
物理的に不可能だ
-
でも僕は「エンジンに慣れること」を
学ぶことができる
-
そうすれば、何かアイデアが浮かんだときに
ソフトに自信と安心があるから
-
自分で実験して
解決できるわけだ
-
ソフトがどう動くのかという
文脈を理解しているから
-
どこに問題があるのか分かるし
ググるときの用語も分かる
-
それに誰かに助けを
求める方法も分かる
-
こいつは… ゲーム開発と
結構似てるように聞こえないか?
-
アイデアは無限に湧いてくるし
その全てを学ぶのは不可能だ
-
だから問題が起きたときに、自分で
解決策を見つけられるようにするために―
-
ソフトウェアに
慣れておくしかない
-
だから、基本、習熟、実験という
3 段階の構造を
-
Unity にも
適用できるかもしれない
-
いい考えだ
-
やってみよう
-
幸いなことに、僕はゲーム開発に関して
完全にゼロから始めたわけではない
-
プログラミングの基本には慣れている
少なくとも出会系アプリにはそう書かれていた
-
だから if 文や for ループや
関数などのことは知ってる
-
僕は Game Maker にも手を出したから
ゲームエンジンの仕組みは…なんとなく分かった
-
だが Unity 自体の構造を
理解する必要がある
-
基本的なところから始める
この UI は何か
-
何をクリックするべきか
キーボードショートカットなどの事柄だ
-
また Unity の概念的な構造も
理解する必要もある
-
例えば、Unity は
要は GameObject が全てだ
-
Unity では何もかもが
GameObject だ
-
これが何なのかを根本的に理解しないと
先に進むことはできない
-
説明しておくと、GameObject は
基本的には透明(非表示)なコンテナで―
-
位置や回転、大きさの概念を持っていて
コンポーネントを付けて何かを行うことができる
-
画像を表示するスプライトレンダラー
物理特性を加えるリジッドボディ
-
衝突を行うコライダー、そして最も重要な
プログラミングコードを書くためのスクリプトが含まれる
-
-
これを頭に入れてから、ゲームを作るために本当に
知っておく必要のあることのリストを作った
-
-
例えば、ある GameObject を別の GameObject に
通信させるためには、どうすればいいのか?
-
新しい GameObject を生成してから
削除するにはどうすればいいのか?
-
2つの GameObject が衝突したときに
何かが起きるようにするには?
-
UI、効果音、アニメーションを
実行するためにはどうすれば?
-
ステージやゲームオーバーなどは
どうすればいいのか?
-
そこで僕はチュートリアルや Google を使ったり
人に聞いたりして
-
これらの疑問に答えたり
Unity の基本を理解したりした
-
確かに今この動画を見ている
Unity 人間の中には
-
「あまり包括的なリストではない」と
考える人も大勢いるだろう
-
これだと上手くいくことは
ほとんど無さそうだ
-
そして恐らく…
いや、間違いなく
-
これまで学んできたことを
全て実行するいいやり方がある
-
事実そうだ??
-
でも僕が始めるには十分だ
-
画面に何かを表示したり
それを動かしたり、衝突させたり
-
生成したり削除したりできる
これらはゲーム構造の基礎となるもので
-
ジャンルを問わず、今後何を制作したとしても
覚える必要のある事柄だ
-
これは僕が制作を始めるための
基準値、根幹となるものだ
-
それで、僕はステップ 2 へ進む
自分の理解度を本当に証明し
-
ソフトに本当に慣れ親しむために
何度も自分で繰り返して簡単なゲームを作る
-
ゲーム開発でこれをやる一番いい方法は
古代美術を盗作することだと気付いた
-
つまり、本当に単純なゲームを
模倣することだ
-
例えばアーケードゲーム、モバイルゲーム、ウェブゲーム
ミニゲームなど…基本的な遊びとルールがあるものなら何でも
-
それらを模倣することで、Unity の
理解度を証明することができる
-
これは本当に良い練習になると思う
-
美術や構造、ルールなどについて
何も心配しなくていいからだ
-
仕様はすでに決まってる(確定済みだ)
-
気にする必要があるのは
コードだけだ
-
そして明確な目標が生まれる
-
「このゲームを Unity を使って
自力で再現できるか?」
-
それで僕が最初に真似たのは
『Flappy Bird』だった
-
iPhone の単純な時間泥棒ゲームで
デブ鳥が重力と戦うという内容だ
-
もちろん、Unity で『Flappy Bird』を制作するための
チュートリアルは存在している
-
10,000件くらいある
-
でも僕は使いたくなかった
-
僕は自分 1人だけで
やりたかった
-
まずゲームを遊んで
その構造を把握することから始めて
-
次にそれを再現するための
計画を立てた
-
ステップを人間にとってできる限り
小さくすることがとても重要だった
-
例えば
1. 鳥を画面に表示する
-
2. 落下させる
-
3. 羽ばたかせる
-
Just one thing after another, nothing too crazy.
-
次に、僕は制作に
取りかかった
-
GameObject を作成して
スプライトレンダラーで鳥を表示して
-
アニメーターコントローラーで翼を動かし
リジッドボディで落下させ、土管にぶつかるためのボックスコライダーを用意して
-
そしてスペースキーを叩くたびに
リジッドボディの基部に速度を持たせて
-
空中を上下に羽ばたくような
スクリプトを書いた
-
いいね!
-
次に土管を作ってそれを
プレハブ(定型)の GameObject にした
-
これで土管を様々な高さで
無限に生成できる
-
そしてここで僕は
ゲーム開発の「裏技」を発見した!
-
直感的には土管を置いた場所を
鳥が飛んでいくように見えるが
-
でも実装するのは
なかなか難しい
-
もっと簡単なのは、鳥を静止させ
-
画面を横切るように土管を移動させ
画面外に出たら削除することだ
-
信じてくれ これを見つけたときは
自分が天才だと思った
-
また当たり判定を区別する必要もあった
土管に当たるとゲームオーバーだが
-
2本の土管の間を通過してトリガーに当たると
UI の得点が増える
-
そのためには、ある GameObject から
別の GameObject へ情報を送る必要があった
-
僕が学んだ基礎的な知識が
ここで役立った
-
それから仕上げに
いくつかの効果音と―
-
多重スクロールで雲が飛ぶみたいな
基本的なやつを加えた
-
それで…これは…
すごいと思った!
-
見栄えが酷いのは分かってる
-
例えば「よくやったなアホ 史上最も単純なゲームを盗んだのだから、自分を誇りに思えよ」
-
でも僕は!
-
僕は、僕は、僕は
自分を誇りに思う!
-
実在するゲームを自分で分解して
Unity で自分だけで作り直した
-
Unity の仕組みが分かることを証明した
自分だけでゲームを動作させた
-
最初に Unity を学ぼうとしたときの
意気消沈する感じよりも―
-
ずっと良い気分だった
-
実際、とても良い気分だったから
もう一度挑戦した
-
次のゲームは『Pop the Lock』だ
円周上を回る線で丸を集めるという内容で
-
これもかなり単純だが
とても中毒性がある
-
手順はほぼ同じで、ゲームを遊んで
解析調査みたいなやつをやって
-
一種の「疑似仕様書」を
手に入れる
-
可能な限り小さなステップに分解する
-
画面上で何かを回転させるとかして
段階的に作っていく
-
これはかなり大きな問題を引き起こした
要は回転させるわけだが
-
Unity の回転は「クォータニオン」と
呼ばれるものを使う
-
こいつは四次元の…
回転軸みたいなやつで
-
これを読もうとしたら
脳みそが耳から漏れ出してきて
-
かなり難しかった
-
でも Unity には「.RotateAround」という
クールな組み込み関数があることを発見した
-
ある点を中心に 1つの GameObject を回転できるので
たくさんの問題が解決した
-
今、将来のために
僕の記憶に保存しといた
-
また親子関係 GameObject の
クールな仕組みを理解したので
-
これもたくさんの問題を
解決した
-
そして再び、このゲームを
自分の PC で動かしてみたが
-
そのときは本当に
クールな気分だった!
-
上手く説明できないが
「やった!」って感じだった
-
「このゲームを作る」という
目標があって―
-
僕はそれを成し遂げた
-
そして一番重要だったのは
Unity の使い方を知っていることを証明できたことと
-
このエンジンに慣れ親しむことが
できたことだった
-
制作中に解決すべきことが
当初はできなかったが、今はできる
-
クリックすべき場所や
見るべきところ―
-
ググり方が
分かるからだ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-