機能クリープを有利に使用できますか?[閉まっている]


16

機能クリープを有利に使用できますか?

ゲームのプロトタイプを作成するたびに、機能が誤って追加されます。これは、偶然の一致によって発生するか、既存のコンテンツに基づいて簡単に追加できます。

ゲームのジャンルを知っている場合、基本的な仕組みを作り始め、それらが明らかになったら機能を追加できますか?

たとえば、6か月かけて2Dプラットフォーマーを作成したい場合、ランニング、ジャンプ、射撃などを開始し、誤って見つけたコアメカニックを追加できますか?または、これは、事前に計画されていない時間投資のリスクが高すぎますか?

これの背後にある私の論理は、設計が支出に見合ったものになるということです。設計の選択は、作成が簡単なものを中心に(時間的に)より簡単に構築されます。

要約すると、ゲームを設計するにビルドするのに問題はありますか?


5
アドホックゲームの設計に問題はありません。あなたが行くようにコーディングします。私のために大きな成功を収めました。結局のところ、平均的な最終消費者は何か楽しいことをしたいだけであり、最終製品を提供する方法についての話は開発者によって異なります。それを試して、それのために行きます。紙上のアイデアは素晴らしいですが、ゲームを機能させる実際のテキストはコード内にあります。楽しいアイデアをお持ちの場合は、コーディングしてください。楽しい場合は、そのままにしてください。それがひどい場合は、それを取り出します。コードとクラス構造をリビングデザインドキュメントとして使用します。必要に応じて変更します。
クリスマクファーランド

3
そもそもプロトタイプを作成しないでください。プロトタイプは、「何かをテストするためだけ」に作られているため、一般に捨てられるようになっています。だからあなたの物をしっかりと構築し、それを柔軟にします。
ベイランクール

基本的にあなたが話しているのは、本当に反復設計です -「製品またはプロセスのプロトタイピング、テスト、分析、精製の循環プロセスに基づく設計方法論。設計の最新の反復のテスト結果に基づいて、洗練されています。」
ティム・ホルト

回答:


17

それは興味深い質問です。主にこれに答えると、グレー対黒対白のジレンマが生じるためです。

ゲームを設計する前にビルドするのに問題はありますか?

その質問を「はい」または「いいえ」タイプと考える場合、答えは「はい、あります」のみです。答えがより微妙なものになる場合、それは変わります。理由:あなたが前にゲームを構築することはありませんいくつかの設計。ただし、後で使用するためにデザインの一部を保存できます。

つまり、手元にある問題を「すべき」または「認めない」とみなすべきではないと思います。むしろ、学位の観点から考える必要があるものです。フィーチャークリーピングは、ゲーム開発に関するすべての悪の第2の根である可能性があります(最初の理由は、ドナルドクヌースが私たちに考えているように、「時期尚早な最適化がすべての悪の根」です)。しかし、私の経験では、主要な機能をまったく考えない、つまり、少なくとも基本的なメカニクスを使用する場所の基本的なデザインを持たないことは、良い考えではありません。

最初の主な理由は、トラフをガイドするための計画を立てることがリソース面で(リソースとしての時間を含む)役立つことです-過剰な試行錯誤によって常に行き止まりに達するのは無駄です予期しない機能を含める必要があるリソース。

2番目の主な理由は、ゲームデザインの面で一貫性です。優れたゲームデザインには、概念的な一貫性、または必要に応じて一貫性があります。つまり、ゲームプレイ全体、履歴、実装、さらにはグラフィックも、可能な限りスムーズに相互にフィットする必要があります。主な機能が外出中に見つかっただけで、ゲームデザインがそのようなことを達成することはほとんどありません。外出先では多くのランダム性を持っているため、他の目的ではない場合:踏むものは、開発プロセスのどこでそれらを見つけたかに応じて非常に異なる影響を与える可能性があります

私はあなたが言ったことを全然するべきではないと言っているわけではありません。私はあなたがいくらかのバランスを見つけなければならないと主張しています。

たとえば、6か月かけて2Dプラットフォーマーを作成したい場合、ランニング、ジャンプ、射撃などを開始し、誤って見つけたコアメカニックを追加できますか?または、これは、事前に計画されていない時間投資のリスクが高すぎますか?

私はあなたの文章にわずかな修正を導入することから始めます。ランニング、ジャンプ、シューティングなどを行うことで、コアメカニクスを既に実装しています。例で外出先で追加するのは、特定のゲームプレイ機能です。

ゲームが2Dプラットフォームになることを知っているからではなく、ゲームのデザインによって実行、ジャンプ、または射撃が変わることはありません。プレーヤーは壁を走ることができますか?ジャンプするときにプレイヤーは空中に浮くことができますか?でも、プレーヤーは走っている間に射撃できますか?プレイヤーは、直線方向または放物線のみでシュートしますか?これらの決定は、ゲームの機能に大きく依存します。

しかし、私はあなたのポイントを見ます:これらのメカニックはしばしば非常にわずかに変わるいくつかの部分を持っています。あなたが行うのであれば、いくつかのゲームデザインを、やや必ず、ジャンプ、撮影を実行しているどのように限りとしての基本的な機能を決定、などがスタートだと、動作します。その後、これらのメカニズムを使用して、それらを構築し続けることができます。

もちろん、これらの仕組みを変更する必要がある新しい機能を後で見つけることができます-それらがどれほど基本的であっても。しかし、ここで重要なのは確率です。これがあまりにも頻繁に発生する可能性は、ゲームの基本的なアイデアについて、ランニング、射撃、ジャンプなどの結果について少なくともいくつか考えれば、小さくなるでしょう。


最後に、あなたがそのルートに行きたいなら、私は以下を提案するでしょう。反復プロセスと考えてください。初期の大まかな設計思考を行います。成功するためには、ゲーム内で基本的でより「普遍的」と思われるものを実装します。その後、さらに設計を考え、実装したものを再評価し、さらに実装を進めます。


4

ゲームのような複雑なプロジェクトを行う場合、時間やお金が足りなくなったり、期待どおりに機能しなかったために、必要なすべての機能を作成できないことがよくあります。これは機能クリープとして知られています。しかし、これには裏返しがあります。また、必要とは思わなかった機能も見つけることができますが、プロジェクトが形になるにつれて、その必要性が明らかになります。

これが、人々がプロトタイプを構築する理由です。つまり、機能するものと機能しないものを学習できるため、機能しない機能をカットできるだけでなく素晴らしい機能を見つけることができます。あなたが学んいないことをしていないなら、あなたはそれを間違っています。

これは基本的に、Chris HeckerとChaim GingoldによるAdvanced Prototypingと呼ばれる講演で表明された感情です。プロトタイプのフィードバックに基づくシステム。

別の例は、Left 4 Deadの設計プロセスです。最初はゲームには基本的なゾンビしかありませんでしたが、経験豊富なプレイヤーとのプレイテストから、デザイナーはプレイヤーが効果的にくっついており、ゲームが簡単すぎることを発見したため、チームを分けてゲームを刺激的に保つために特別なゾンビを追加しました。

もちろん、これは、事前の設計なしでゲームを構築する必要があるという意味ではありません。先に進む前に、ゲームの核心が楽しいことを確認する必要があります。これは、ゲームを作成する上で最も難しい部分だからです。


2
現在よく知られている例は、2007年にPsyonixによって作られた兵器化されたカーバトルゲームであるCrash Courseです。ロケット動力のバトルカー。新しいハードウェア用に更新したときに、2015年の大ヒットとなったロケットリーグになりました。楽しみがどこにあるかを示してください。
アルモ

2

はい、そうだと思います。ただし、いくつかの共通の機能/クラスを事前に計画して、各新しいコンポーネント間にある程度の結合性を持たせてください。

Unityは、ゲーム開発へのコンポーネントアプローチで知られ、この形式の開発を簡単に可能にします。Unityを使用していない場合は、セミコンポーネントアプローチを複製できます。私は他のゲームエンジンに不慣れです。

Unityゲームオブジェクトにはすべて、変換コンポーネントがあります。これは、オブジェクトの位置、回転、スケールを示します。したがって、これらの値と実際のゲームオブジェクトへの参照を保持する汎用の「変換」クラスを作成します。

たとえば、「ジャンプ」コンポーネントを取り上げます。すべてのロジックをゲームオブジェクトの変換クラスと連携させて、位置の操作を行います。(または、エンジンに同様の組み込みクラスが既にあります。)この「Jump」クラスを任意のオブジェクトにアタッチできます。このクラスは、アクションがトリガーされたときに変換位置をアニメーション化します(Jump.PerformJump()など)。Jumpクラスは、その所有者について何も知る必要はありません(少なくとも、最小限の情報)。

たくさんのコンポーネントを作成し、ゲームオブジェクトにアタッチして、1つのオブジェクトに結合するなどの楽しみがあります。たとえば、Run、Jump、Crouch、MovingTile、FireWeapon(「弾丸」スプライト、作成する動作を指定します)汎用コンポーネント)など。

複数の用途/バリエーションを可能にするために、各コンポーネントをできるだけ汎用的にします。FireWeaponでは、弾丸のスプライト、速度、ダメージなどを指定できます。速度とダメージが0〜1の間で指定されるように、これらの属性を正規化することができます。次に、ゲームの最大値に合わせます。この方法では、武器間の相対的な違いのみを心配します。さらに、これは、難易度が高いほど最大ダメージが大きい難易度などのグローバル設定に適応します。

気付く前に、プラグインするための豊富なコンポーネントがあり、あらゆる種類のゲーム向けに迅速に開発できます。


1

簡単な説明:ほとんどの場合、単一のコーディングステップの後に単一の設計ステップを続けることはできません。それらを変更する必要があります。一般的なルールとして、既に設計されているものを尊重するようにしてください(すでにコーディングされているものではありません)。

初期デザイン(単なるスケッチまたはメンタルイメージ)がないことについて:デザインがない場合、デザインはありません。何かをする必要があります。ただし、ビルドを開始する限り、それを尊重するようにしてください。毎回新しいものを用意しないでください。


実験を行い、ランダムな機能を取得することは、有害である場合とそうでない場合があります。それは有益または避けられないことさえあります。たとえば、ジャンプをサポートする必要があることがわかっている場合(多くの3D / 2D RPGはジャンプを許可しません)。どうやってそれを知っていますか?障害物を分類するためにジャンプが必要なゲームマップを想像したからですか?したがって、ジャンプの実装は、プレーヤーがその障害物を並べ替えたり、到達可能な最大高度などの特定の特性に準拠する必要がある限り、マップまたはアイテム内のアイテムやゲームオブジェクトによってブーストすることができる限り、物理学は加速またはバウンスを含める必要があります(マリオが敵に飛びついたとき、彼は再び上昇する衝動を得て、それはゲームプレイにとって非常に重要です)?

すでにこれらの質問に答えることができれば、設計文書(想像または現実)は非常に完成しています。それらに答えられない場合、設計は不完全です。この場合、設計をやり直すか、実験を行ってギャップを埋める必要があります。機会は非常に開かれているか、非常に限定的です。ゲームレベルの一部に障害物があり、それらにジャンプする必要がある場合、到達可能な最大高度または速度を決定する自由がたくさんあります。物理エンジンがすべてを開始するふりをすることを決定するかもしれませんジャンプアニメーションの視覚効果を改善しますが、それ以外のものには必要ありません。(多くの2D RPGゲームでは、必要なときにジャンプすることはできませんが、マップに1つのタイルホールがある限り、そこに足を踏み入れると、自動的にホールタイルの隣のフロアタイルへのジャンプがトリガーされます)

既に決定されていることを尊重する限り、完全な設計なしでコードに進むことは問題ないことを理解しています。また、ゲームユニバースはさまざまな異なる思考プロセスから構築される可能性があるため、状況によっては避けられない場合があります。たとえば、カードゲーム:カードに攻撃と防御を与え、特定の時間にテーブル内の特定の数のカードを持ち、自分のターン中にプレーヤーが他のカードを攻撃するカードを選択できることを知っています。すでに完全なデザインのように見えるかもしれませんが、多くのシミュレーションを介してのみ可能なゲームのバランスがとれています。多くのシミュレーションを行った後、攻撃10のカードは圧倒されると判断し、ゲームから単純に削除できますが、あまりにも好きなので、別のことをします。プレイヤーがそのようなカードで攻撃した場合、そのターン中に他のカードでは攻撃できないという新しいルールを作成します。ゲームメカニクスを強化する新しいルールがありますが、それを1枚のカードに適用すると、奇妙に見えます(ダーティハックのように)、それは奇妙に見えます。新しい制限ルールが適用されます。今、私はより単純なオリジナルのものの上に構築された、より複雑なゲームメカニックを持っています。

さて、最後の例について1つ、提案されたカードゲームの例では、新しいカードが新しい資産(コストの増加、時間の増加)をもたらす可能性があります。しかし、コーディング時にのみ見る機会がデザインの決定に良い影響を与える良い例だと思います。

私たちがプレイするゲームのほとんどは、コーディングする前に完全に設計されたとは思いません。タイムラインなどに準拠するために難しい決定を下さなければならないと確信しています。

他の誰かがすべてにお金を払っているとき:説明、交渉。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.