熟練した開発者がビジュアルスクリプティングに興味を持つ理由があるでしょうか?それは、コーディングが嫌いな開発者の場合だけではないでしょうか?私たちは最近、Bolt と Chronos の作者と膝を交えて語り合い、彼がどのようにそれらの開発を開始したのか、またコードの可視化、UX、アセットストア自体に関する彼のアイデアについて聞きました。
人気のアセットストアパッケージである Bolt と Chronos を開発した人物は、Lazio Bonin 氏といい、 皆で協力し合える、明るくライティングされたモントリオールのダウンタウンのゲームプレイスペースを拠点とする、ツールおよびゲームの開発者です。彼は 24 歳で、受賞歴があります。
Bonin 氏は Unity コミュニティに熱意を持って貢献しています。「なんらかの時点で、開発中のゲームからツールを分離独立させると、一定の程度まで高度化するとともに使いやすくなります。そのようなツールを共有しないでいると申し訳なく感じます。私の直感がツールを共有せよと囁きます。ツールの作者なら、その多くは同じ考え方を持っていると思います。ツールの作者は Unity のように既に存在しているものを同僚に再開発させたくないのです。既存のツールがあるのに、どうして独自のゲームエンジンをコーディングする必要があるでしょうか。」もちろん、ツールの人気が出れば、そのツールを生んだゲームを開発するのにも役立ちます。
ツールの開発を始めるずっと前から、彼は独学のアマチュアゲーム開発者でした。「私が 10 歳のころ、従兄弟が私の家に来て Visual Basic をインストールし、操作方法も教えずに帰っていきました。」Bonin 氏は HTML のコーディングならやっていましたが、Visual Basic はまったく新しい挑戦でした。そして数年後、彼は「他人には決しておすすめしない、ありえないほど野心的なプロジェクト」と自身が笑って形容するような、外に出すわけでもないゲームを多数開発する、非常に精力的な愛好者になっていました。
彼は 19 歳の時に、Unity を知り、ゲーム開発をより真剣に学び始めました。彼は Full Inspector のようなアセットに感謝の意を表明しました。「これは天からの賜物でした。このアセットのおかげで Unity のインスペクターが非常に高度なものになり、私のデザインもはるかに柔軟になりました。これは全てのプロジェクトに最初にインポートするアセットになりました。」最近では、Bonin 氏は Odin – Inspector and Serializer を使用しています。「アセットストアにあるツールのうち、最大級に便利で高度な素晴らしい物のひとつです。」
Bonin 氏がまだアマチュアだった時に、自分が学校に通うための資金を調達するためにウェブサイトをデザインしたり他の人のゲームに貢献したりしたことが、自身の最初のアセット Chronos のアイデアにつながりました。「私はとあるタワーディフェンスゲームに取り組んでいました。結局そのゲームはリリースされなかったのですが...敵の動きを鈍くして、攻撃が届かないところから敵を制圧したかったのです。ここで、私は自分のためにそのようなツールを作成し、他の人にも利用できるようにすべきだと実感しました。」これこそ、彼が「アセットストアの魂」だと考えているものです。つまり、開発しようとしているゲームの共有可能部分を抽出し、パッケージ化し、リリースして他の開発者を支援することです。
Chronos と同様に、Bolt も Bonin 氏が別のプロジェクトに取り組んでいる時に作成されました。「私はモントリオールで行われる『Ephemera』というバーチャル体験イベントを物語風のゲームとして開発する小さなチームにいました。そして、私たちは、チームのアーティストとアニメーターがコアシステムとコーディングに焦点を当てながらシーンの構成とゲームプレイに貢献できるようにするビジュアルステートマシンを探していました。私たちはいくつかのソリューションを検討しました。そして、アセットストアには実に良いものもありました。しかし、私は完璧主義者なので、自分が頭の中で描いていたようなものにしたいと思いました。」
Ephemera チームが資金の調達に奔走する中、Bonin 氏は Bolt の開発だけに集中して、約 9 か月を費やしました。「いくつかの機能に取り組み始めると、それらをさらに洗練したくなったので、数週間猛烈に働きました。しかし、それだけの時間をかける価値がありました。理想的な開発方法を発見できたからです。」
彼は自身のゲーム開発およびゲームデザインの知識を投入して、コーディングとデザインの作業をすべて行いました。
「この経験は私にとって有意義でした。私が作りたかったビジュアルツールは視覚的思考者に役立つことを目的としたツールだったからです。ここで、視覚的思考者とは例えば、優れたデザインと視覚的フィードバックを楽しむ人、起こっていることをひと目で知りたいと思う人、エラーや警告が発生したタイミングと場所を知る必要がある人のことです。視覚的思考者への配慮は、私にとってバックエンドエンジンと同じぐらいに重要でした。そのため、バックエンドエンジンに対して開発できるすべての機能に注ぐのと同じ大きな労力を使用感にもかけました。」
彼は基礎を築いてから、それを正式版として作り上げる前に、重要なデザイン上のフィードバックを求めました。
「6 か月ほど経った後に、私は Bolt の画面を映したスクリーンの前に経験豊富なモントリオールのゲーム開発者たちを集めて尋ねました。『これなら直感的に分かりますか。私がこの 2 つの要素をつないだ場合にここで何が起こったのかを理解できますか。お見せしたこのグラフが何を行うものなのか、ひと目でわかりますか。』とね。」
インターフェースで起こったことを開発者たちが理解できなかった場合、Bonin 氏は GUI を手直しして、より直感的なものにしました。開発終盤の数か月間で、彼が作った、少数の開発者から成るグループでは、「Bolt」に対する徹底的なアルファテストを行いました。
Bonin 氏は、ビジュアルスクリプティングの概念に対する開発者からの抵抗に慣れています。彼が Bolt のリリースを初めて発表した時(2017 年夏)、「そもそも、プログラマーがビジュアルスクリプティングツールを使用する理由がわからない」というようなコメントをいくつか受けました。経験豊富なプログラマーである Bonin 氏が必ずしも必要ではなかったものを開発するのに、利益にもつながらない 9 か月分の労力をかけたのはなぜでしょうか。
「プログラマーとして私たちは、自分と異なる方法で考えたり学んだり、あるいは自分とは違うツールを必要としていたりする人々もいることを認識する必要があります。そのことに価値があるのが分かればよいのです。」Bonin 氏は、コーディングに夢中になっているのと同じぐらいに、優れたデザインとユーザー体験(UX)に夢中になっており、より良いツールやプログラミング教授法を主導している Bret Victor 氏などのデザイン思考実践者の著書を読んでいます。
「Victor 氏は次のようなことを書いています。『私たちが行っているイノベーションはエンドユーザー向けであり、同僚の開発者向けではありません。私たちは開発者の体験を改善するのに十分な時間を費やしていません。』彼は尋ねます。『なぜ私たちは今でも、起こっていることを可視化して理解しようとせず、むやみにテキストエディターでコーディングしているのでしょうか。この値が別の場所に影響を及ぼしていることを知るにはどうすれば良いでしょうか。また、どのようにすれば可視化できるでしょうか。』」
フローグラフは「Bolt」の機能の 1 つですが、Bonin 氏は熟練した開発者にとってフローグラフが有用かどうかについて正直にこう語ります。
「プログラマーにはフローグラフは必要ないでしょう。Bolt がほとんどのコードを 1 対 1 翻訳するだけだからです。しかし、ステートグラフは、コーディング方法を知っている場合でも非常に有益です。それはコードでは簡単に可視化できない方法でロジックを構築できるからです。
例えば、ゲームプレイのシナリオを見て、『このキャラクターは待機ステートにある。待機ステートの間は、他の関数を呼び出そう。』と考えるかもしれません。そして敵が近くに寄れば、チェイスステートに入ります。そのステートでは、他の一連の関数を呼び出します。...このため、全てのステートでコードが可視化するのは難しい場合があります。このような場合こそ、高度な可視化が一部の開発者にも非常に役立つ場面です。」
開発者に対して魅力があると彼が感じるもうひとつの部分は、Unity コードベースのすべてが Bolt で直接利用可能になることです。Bolt と Unity の間にはインテグレーション層がないからです。そして、それによりメンテナンスも簡素化されます。「自分のキャラクタークラスや独自のアイテムクラスなどに直接アクセスできます。Bolt 内にあるそれらのクラスから関数を呼び出し、プロパティを設定できます。また、私にとってのメリットは、Unity が新しいコンポーネントを含む新しいバージョンをリリースした場合に、私もユーザーも何もしなくてよく、新しいバージョンが自動的に Bolt によって取り込まれる点です。コードベース全体が直接分析され、読み込まれて、オプションを選択できるようになります。」
Bonin 氏は、3000 人近いユーザーベースを誇る「Bolt」が、さまざまなスキルレベルが入り混じったチームに採用されていることを目の当たりにしています。
「あなたのチームがプログラマーやアーティストなどの多様なチームである場合は、いくつかのコアシステム、主要な C# クラス、およびそれらの項目間の通信方法にプログラマーを専念させながら、デザイナーやアーティストにはそれらの項目に Bolt からアクセスさせることができます。彼らはパラメーターをいじったり構造を理解したりするだけであり、それらがコードの段階で実際にどのように作用するかについては心配する必要がありません。」
実際、彼は開発を始めたばかりの開発者に対し、このようなアプローチを取るように奨励しています。チュートリアルを含む豊富なドキュメントを提供しているのにもかかわらず、中にはそれらを見ずにいきなり飛び込んで何が起こるのかを早く見たがる人もいます。
「初めて Bolt を目にした際に『どこから始めればよいのかがわからない』と言ってきたアーティストやデザイナーの友人がいたので、私は彼らに言いました。『ゲームオブジェクトのひとつに Bolt コンポーネントを追加し、再生ボタンを押すだけだよ。そして、プレイ中には、ノードを追加し続けて、その実行内容も確認できる。これは Bolt の利点のひとつだね。ライブ編集を行って、その結果をリアルタイムで確認できる。また、必要なあらゆるものを追加、削除、変更することもできる。これは、エンジンや利用できるツールを学習し始めた人たちにとっては、創造性を発揮できるようにしてくれる一種のサンドボックスとも言えるね』と。」
それでは、数千人のユーザー(そのうちの 500 人以上は Discord サーバーでホスティングされている Bolt コミュニティのメンバー)とともに働く Bonin 氏の典型的な 1 日とは、どのようなものでしょうか。
「私はまず、プライベートチケットや教育ライセンスの申請などを確認します。次に、コミュニティで行われた発言内容、および『Bolt』の改善方法に対する提案を確認します。彼らのアイデアには非常に役立つものがあります。というのは、自分のプロジェクトに入り込みすぎると、判断力を失う場合があるからです。このため、コミュニティは私が順調に物事を進めるのに大いに助けになっています。次に、バグの修正に進みます。そして、空いた時間を使用して新機能の開発を開始します。
1 人での作業なので、ユーザーからの過度な期待に応えるのは難しく、管理する必要があります。「最近、Ludiq を『私たち』と呼ぶのを止め、『私』だけを使用しなければならなくなりました。それにより、コミュニティが、決定事項が期待するほど早く行われない理由を理解できるようになるからです。そして、このことは多くのユーザーに理解されていると思います。なぜかと言えば、私のロードマップを公開しているからです。新しい機能が多くの人から注目される場合でも、私は提供する内容とタイミングに慎重でいなければなりません」と彼は語ります。
最後に、「ゲーム開発者が自分の IP(知的財産)の一部を分離してアセットに取り込めば、他の開発者を支援することになるので、それら他の開発者のパッションプロジェクトを財政的に支援することにもつながります」とふと気づいた、自身のようなゲーム開発者に対し、Bonin 氏が語りかけるメッセージをお聞きください。
「デザイン面では、ツールのモックアップ、UX とインタラクションの設計、Unity エディターの仕組みとデザイン言語に関する学習をお勧めします。優れた Unity ツールを使用する鍵は習熟することですが、この手順を多くの開発者が踏んでいないと私は思います。技術面では、初心者の場合、このチュートリアルを使用して『Unity エディター』でツール、プロセス、タスクをカスタマイズするスクリプトを作成することをお勧めします。また、『Unity エディター』の『GUI API』とその複雑性(Unity ブログのこちらの記事をご覧ください)に習熟してください。」
4 月 5 日までに Unity Plus サブスクリプションにサインアップすれば、「Bolt」を無料で入手できます。また、「Triple Boost with Unity Plus」キャンペーンには、年間通しかつ追加コストなしでの「Unity Game Dev Courses」、および選択したアセットストア製品の 20% 割引の特典も含まれています。
Unity 社員の Ethan Bruins がホストした最近のライブセッションで「Bolt」の使い方を学びましょう。
アセットストアから入手できる類似のパッケージに関しては、ビジュアルスクリプティングのページをご覧ください。
Is this article helpful for you?
Thank you for your feedback!