-
やあ
-
僕はマーク・ブラウン
自分1人でビデオゲームを作ってる
-
それでまずはゲームの作り方を
学ばないといけない
-
これはかなり真剣な取り組みで
かなり大きな挑戦だ
-
で、これはホントの話なんだが
このゲーム制作の挑戦は…
-
本格的に始まる前は
ほとんど挫折しかけていた
-
何が起きたか説明しよう
-
Developing - Episode 1
-
まずは話を少し戻そう
-
最初にやらないといけないのは
ゲームエンジンの選択だった
-
ゲームエンジンっていうのは
少なくともこの場合では
-
ゲーム制作を助けてくれる
ソフトウェアのことで
-
基本的には、ゲーム開発の難しいところや
退屈な作業を処理してくれる
-
例えば、グラフィックスを
画面に描画したり
-
コントローラと連動させたり
物理演算などをやってくれる
-
しかも専用設計された便利ツールが
たくさんあって
-
アニメーションや UI など
ゲームでやりたいことを実現できる
-
現在、ゲームエンジンは山ほどある
-
一番人気があるのは
Unity や Unreal Engine
-
Godot、Pico-8
-
Game Maker や Construct で
-
さらにジャンルに特化した
ゲームエンジンもある
-
例えば Twine や RPG Maker
-
Adventure Game Studio とかだ
-
特定のエコシステム用の
ゲームエンジンだってある
-
例えば Switch の
『ナビつき!ゲームプログラミング』や
-
PS4 の『Dreams』
-
あと『Roblox』は…
-
Roblox 界のやつだ
-
それぞれに長所と短所、愛用者とアンチがいるが
結局は1つに絞る必要があった
-
それで最終的に僕は…
-
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(苦境)から
-
今のは寒かった
-
以上が僕の決断だ
-
すまんね、Godot 兄弟
全部 Unity の話になる
-
これで第1段階は完了
「ゲームエンジンを選ぶ」はヨシ!
-
じゃあ第2段階
「使い方を覚える」だ
-
こいつが難しい
-
さっき言ったように
Unity のチュートリアルはたくさんあって
-
僕が学び始めたときも
まさにそれを利用した
-
YouTube で「Unity Tutorials」と検索すると
たくさん出てきて
-
スウェーデン人の男が
ソフトの使い方を教えてくれる
-
動画でゲームの作り方を説明してくれるから
僕は熱心にそれを真似していった
-
箱がクリックされるたびに
僕も自分の画面で同じ箱をクリック
-
動画でコードが1行入力されるたびに
僕も同じコードを入力する
-
すると僕の PC でゲームが動いて
超興奮した
-
だがその後
何週間も経ってから
-
白紙の Unity 画面を開いて
学んだことを確認してみようと思った
-
その結果は…
-
「無」だった
-
文字通り何も覚えてなかった
-
動画の内容は、聞いた途端に
全部忘れてしまった
-
例えばキャラを画面に表示して
動かすことさえできなかった
-
全然ダメだった!
-
結局は自業自得だ
-
僕のチュートリアル動画を覚えてるか?
-
戦略ゲームで矢印が出てきて
「ここをクリック」とか
-
「そこをクリック」と説明しても
効果ナシって話だ
-
僕は Unity で全く同じことを
やってしまった!
-
ヘマをやらかした!
これじゃメンツ丸つぶれだ!
-
でも正直言うと
これには本当に幻滅した
-
本当に自分が
バカ丸出しになった感じだった
-
人生を何週間も
無駄にした気がして
-
自分がゲーム開発に向いてるのかどうかすら
全然分からなくなった
-
チュートリアルを見ても
何も身につかないなら
-
僕はこっちに向いてないから
動画に専念するべきかも
-
これは何ヶ月も前のことで
僕はこの動画シリーズをやろうと思ってたんだが
-
その時は…
-
中止した方が
良いんじゃないかと思った
-
一切発表せずに
何も無かったふりをするべきかも…とか
-
最悪の状況だった
-
だがその後
Adobe Premiere について考えた
-
このチャンネルの動画は全て
このソフトウェアで作っていて
-
かなり複雑なソフトだが
僕は使い方もよく分かっている
-
じゃあ僕はどうやって Premiere を覚えたんだ?
-
僕が Pocket Gamer 紙で働いていたとき
簡単な動画レビューをやる必要があった
-
そこで同僚に Adobe Premiere の
基本を教えてもらった
-
動画制作に絶対に必要な
基礎知識だ
-
素材を読み込んで
タイムラインに並べて
-
基本的なトランジションを適用して
YouTube へ書き出す方法だ
-
それから何十本もの動画を
自分で作らないといけなかった
-
だからその基本的な工程を
何度も繰り返すうちに
-
ゆっくりと
僕の頭に叩き込まれていった
-
その後、僕は Game Maker's Toolkit を作った
-
そのとき動画でもっと面白いことを
やりたいと思っていた
-
マスク、カラー
テキスト、トランジションや
-
モーショングラフィックスとかの
楽しいやつだ
-
それを覚えるのは
かなり難しいはずだったが
-
僕には2つの味方があった
-
1つ目は、全部を一気に
覚える必要はないということ
-
動画を作るたび、少なくとも1つは
新しいことに挑戦している限り
-
エフェクトと知識のレパートリーを
ゆっくりと積み上げることができる
-
2つ目は、動画レビューをやっていたから
Premiere にすっかり慣れていたことだ
-
僕はこのソフトに安心していたから
何か新しいことを試したいときは
-
いつでも実験したり
いじって遊んだりできた
-
少なくとも、必要な答えを得るために
Google で何を検索すればいいか分かっていた
-
だから究極的に言えば、僕は Premiere を学ぶために
効果的な3段階の方式に従うことになった
-
段階1、絶対的な基礎だけを学ぶ
それ以上は無しだ
-
段階2、反復と簡単な制作を通じて
これらの基礎に慣れていく
-
段階3、ゆっくりと時間をかけて
ソフトウェアの基礎知識を増やしながら
-
Premiere で使える機能の
レパートリーを築いていく
-
この方法は僕には効果抜群だった
-
今は Premiere の使い方も分かるし
このソフトでほぼ何でも作れるようになった
-
これが上手くいった理由が
分かると思う
-
つまり動画制作ってのは、大抵の場合
アイデアを思いつくことだ
-
例えば「いま VHS 風の一時停止エフェクトを
表示したらクールじゃないか?」
-
それから実現する方法を考える
-
例えば、フレームを一時停止するには
どうすればいいのか?
-
それっぽく見せるために
どのエフェクトを使うべきか?
-
どうすればこの揺らいだ線を
画面下へ動かせるのか?
-
考えてみると、僕が思いつけるアイデアは
無尽蔵にあるから
-
初めから全ての機能を覚えるのは
物理的に不可能だ
-
でも僕は「ツールに慣れること」を
学ぶことができる
-
そうすれば、何かアイデアが浮かんだときに
ソフトウェアに自信と安心があるから
-
自分で実験して解決できるわけだ
-
ソフトの処理の流れを知ってるから
-
どこに問題があるのか分かるし
ググるときの用語も分かるし
-
誰かに助けを求めてもいい
-
こいつは…ゲーム開発と
結構似てるように聞こえないか?
-
アイデアは無限に湧いてくるし
その全てを学ぶのは不可能だ
-
だから問題が起きたときに
自分で解決できるようにするために
-
ソフトに慣れるしかない
-
だから基本、習熟、実験という
3段階の構造を
-
Unity にも適用できるかもしれない
-
いい考えだ やってみよう
-
さて、幸運にも僕はゲーム開発に関して
完全にゼロから始めたわけじゃない
-
プログラミングの基礎は知っている
-
少なくとも出会系アプリの自己紹介には
そう書かれていた
-
だから if 文や for ループや
関数などは知ってる
-
僕は Game Maker にも手を出したから
ゲームエンジンの仕組みは…なんとなく分かった
-
だが Unity 自体の構造を
理解する必要がある
-
だから基本的なところから
始めていく
-
この UI は何だ
-
どれをクリックすべきなんだ
-
キーボードショートカットは何だ
とかのことだ
-
Unity の概念的な構造も
理解する必要もある
-
例えば、Unity は
要は GameObject が全てだ
-
Unity では何もかもが
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、羽ばたかせる
-
ただ次々と分解していく
何もおかしいことはない
-
次に僕は制作に取りかかった
-
GameObject を作成して
スプライトレンダラーで鳥を表示して
-
アニメーターコントローラーで翼を動かし
リジッドボディで落下させ
-
土管に当たるための
ボックスコライダーを用意して
-
そしてスペースキーを叩くたびに
リジッドボディの基部に速度を持たせて
-
空中を上下に羽ばたくような
スクリプトを書いた
-
いいぞ!
-
次に土管を作って
それをプレハブ(定型)の GameObject にした
-
これで土管を色々な高さで
無限に生成できる
-
ここで僕はゲーム開発の
「裏技」を発見した!
-
直感的には、土管が置かれた場所を
鳥が飛んでいくようにさせたいが実装は難しい
-
もっと簡単なのは
鳥を静止させて
-
土管の方を画面を横切るように移動させて
画面から出たら消すことだ
-
本当に思いついたとき
自分が天才だと思った
-
当たり判定を区別する必要もあった
土管に当たるとゲームオーバーだが
-
2本の土管の間を通過してトリガーに当たると
UI の得点が増える
-
そのためには GameObject から
情報を送る必要があった
-
僕が学んだ基礎的な知識が
ここで役立った
-
それから仕上げに
いくつかの効果音と
-
多重スクロールで雲が飛ぶみたいな
基本的なやつを加えた
-
それで…これは…
-
すごいと思った!
-
見栄えが酷いのは分かってる
-
つまり「よくやったなマヌケ野郎」
-
「史上最も単純なゲームをパクった自分を誇りに思えよ」
みたいな感じだ
-
でも僕は!
-
僕は、僕は、僕は
-
自分を誇りに思う!
-
実在するゲームを自分で分解して
Unity で自分だけで作り直した
-
Unity の仕組みが分かることを証明した
自分だけでゲームを動作させた
-
最初に Unity を学ぼうとしたときの
意気消沈する感じよりも
-
ずっと良い気分だった
-
実際、とても良い気分だったから
もう一度挑戦した
-
次のゲームは『Pop the Lock』だ
-
円周上をぐるぐる回る線で
丸を集めるという内容で
-
これもかなり単純だが
とても中毒性がある
-
手順はほぼ同じで、ゲームを遊んで
解析調査みたいなことをやって
-
ある種の「疑似仕様書」を作る
-
できるだけ小さな手順に分解する
-
画面上で何かを回転させるとかやって
段階的に作っていく
-
ここでかなり大きな問題が起きた
要は回転させるわけだが
-
Unity の回転は
「四元数」とかいうやつを使う
-
こいつは四次元の…
回転軸みたいなやつで
-
これを読もうとしたら
脳が耳から漏れてきて
-
かなり難しかった
-
でも Unity の「.RotateAround」という
クールな組み込み関数を発見した
-
ある点を中心に1つの GameObject を回転できて
たくさんの問題が解決した
-
将来のために頭に保存しといたぞ
-
それと親子関係 GameObject の
クールな仕組みを理解したから
-
これもたくさんの問題を解決した
-
そしてもう一度、このゲームを
自分の PC で動かしてみたが
-
そのときは本当に
クールな気分だった!
-
上手く説明できないが
「やった!」って感じだった
-
このゲームを再現するという目標を
成し遂げた
-
そして一番重要だったのは
Unity を使えることを証明できたことと
-
このツールに慣れ親しむことが
できたことだった
-
制作中に解決すべきことが
最初はできなかったが今はできる
-
クリックすべき場所、見るべき所
ググり方が分かるからだ
-
だから現時点では
Unity にかなり満足してる
-
僕は決して
専門家なんかじゃないが…
-
でもスタート地点に立った
-
今すぐ段階3に
進むべきだと思う
-
自分のゲームを作って
実験を始めるってことだ
-
もちろん
僕は問題にブチ当たるだろう
-
やり方が分からないこともある
-
直面する問題もあるだろう
-
でも今はツールに自信と安心感がある
-
僕は Unity を概念的に理解している
-
覚えるべき基本的なことは
理解できてるから
-
今後問題が起きても
たぶん自分で解決できると思う
-
少なくとも遊びながら使えるし
最低でもググり方は分かる
-
それに自分よりずっと賢い人に
どう質問すればいいかも分かる
-
ところで、この学習方法が
君にも有効かどうかは保証できない
-
学習方法は人それぞれだし
-
スウェーデン訛りの説明が
好きな場合もあるだろう
-
でもチュートリアルで
すぐ飽きてしまう僕にとっては…
-
僕は ADHD かもしれない
分からん
-
色々と試して、いじって遊んでみないと
物事が頭に入ってこない人間にとっては
-
この方法は有効だった
-
1、基本を覚える
2、ツールに慣れ親しむ
-
3、ゆっくりと時間をかけて
レパートリーを増やしていく
-
これが上手くいくかどうかは
次回の動画で確かめられるだろう
-
僕は自作ゲームの制作を始めて
試作品を作り始めるつもりだ
-
次回もぜひ視聴してくれ
-
とはいえこれは
チュートリアル動画ではないのだが
-
もしこの動画を観ていて
-
「おいマーク! Unity の基本を教えてくれよ!」と
考えているなら…
-
まあ…それが役に立つかどうか
下のコメント欄で教えてほしい
-
時間があれば、このシリーズに合わせて
簡単なチュートリアル動画を用意できるかもしれない
-
だが今のところは
視聴してくれてありがとう
-
また次回会おう
-
(字幕翻訳:Nekofloor)
-
この照明はそろそろ
電池が切れそうだ
-
でも…よくやってくれた
-
(カチッ)