メインコンテンツまでスキップ

「Beginner」タグの記事が3件件あります

Beginner-friendly guides

全てのタグを見る

デザイナーがコードなしでイベントを設定:デザイナーとプログラマーの連携問題

TinyGiants
GES Creator & Unity Games & Tools Developer

火曜の午後3時。デザイナーが横から声をかけてくる。「ねえ、プレイヤーが50以上のダメージを受けた時の画面シェイク、もう少し強くできない?あと、ヒットサウンドの前に0.5秒のディレイ入れたいんだけど。あ、毒エフェクトのティック間隔も2秒じゃなくて1.5秒にしたい。」

3つの変更。デザイナーの視点からすれば実質15秒の判断。でも実際に起きることはこうだ:Sceneビューを閉じる。IDEを開く。読み込みを待つ。ダメージハンドラーを検索する。メソッド内に埋もれた画面シェイクの強度値を見つける。変更する。次にオーディオのディレイを探す——これは別のクラスにある。変更する。次に毒のコルーチンを探す——これはさらに別のクラスで、ティックレートはWaitForSecondsの中にある。変更する。3つのファイルをすべて保存。Unityに戻る。再コンパイルを待つ。テスト。

8分後、デザイナーが言う。「やっぱりシェイクは前の方が良かったかも、あと毒は1.8秒で試せる?」

5分で始める:ゼロから作る初めてのイベント駆動システム

TinyGiants
GES Creator & Unity Games & Tools Developer

「5分しかないんだけど、イベントシステムの動かし方だけ教えてくれない?」

了解。理論もアーキテクチャの深掘りも他のアプローチとの比較もなし。Unityプロジェクトでゼロから動くイベント駆動のインタラクションを作りたい、そしてそれを速くやりたい。いこう。

このガイドはUnityプロジェクトが開いている(2021.3 LTS以降)前提で、所要時間は約5分。終わるころには、ゲーム内で何かが起きたときに発火し、完全に別のGameObjectでレスポンスをトリガーするイベントが手に入る——両者の間に直接参照はゼロで。

さよなら見えないスパゲッティ:あなたのイベントシステムがプロジェクトを壊している理由

TinyGiants
GES Creator & Unity Games & Tools Developer

メソッド名を1つだけ変えた。OnPlayerDiedOnPlayerDefeatedに。ゲームデザイナーから「表現をもう少しソフトにして」と頼まれたから。Playを押す。何も起きない。コンパイルエラーなし。警告なし。Inspectorで紐づけていた10個のシーンオブジェクトのUnityEventが、ただ...動かなくなった。無言で。そしてそのことに気づくのは、3日後にQAが報告してくれたとき。最悪の場合、プレイヤーが気づくことになる。

心当たりがあるなら、おめでとう。あなたは「見えないスパゲッティコード」に出会っている。IDEにも表示されない。コンパイラ警告も出ない。依存関係グラフにも出てこない。ただそこに潜んでいて、最悪のタイミングで壊れるのを待っている。

これはスキルの問題じゃない。アーキテクチャの問題だ。そして、ほとんどのUnity開発者が認めたがらないほどよくある話だ。