私は現在、独自のアドベンチャーゲームを選択して構築しています。これで、すべての選択に対して1つの結果が得られ、線形フローを作成するのは簡単ですが、以前のすべての選択が次の結果に影響を与えるための優れたアルゴリズムはありますか?私は明らかに以前のすべての選択を保存し、決定する大きな 'IF'ステートメントを持つことができましたが、もっと良い方法があるかどうか疑問に思いましたか?
私の一部は、すべての選択肢に「スコア」が必要かどうかを疑問に思っており、これを使用して(おそらくしきい値を使用して)次のアクションを決定し、各アクションをスコアに追加します。
私は主にこれをswift / SpriteKitで行っていますが、この時点でのコードよりもコンセプトのほうが重要だと思います。
以下のジョシュのコメントに応じて:
現時点ではまだ概念段階にあると思いますが、各「ページ」はカスタムオブジェクトまたはjsonファイルのいずれかになります。私はあなたの答え(現在は削除されています)について考えていましたが、各ENUMオプションを少し持っているかもしれません。次に、各ページに「スコア」を付けることができます。次に、選択した前のオプションを使用して、どのビットが設定され、どのページを決定するかを決定します。私が「ストーリー」をどのようにフォーマットするかを決定するのをほとんど手助けし始める前に、この問題に対する既存の解決策があったのかと思っただけだと思います
形式の大まかな推測:
{ "text":"You arrive in the dungeon and there are 2 doors",
"options":[
1: "Go left",
2: "Go Right"
],
"score" : 0 // first page
}
{"text" "You went left and meet a dragon",
"options":[
0: "Game over, you were eaten" // something to handle game over
],
"score" : 1
}
{"text" "You meet a mushroom who tells you the princess is in another castle",
"options":[
4: "Give up, game over", // something to handle game over
8: "Jump down the pipe"
],
"score" : 2
}
ありがとう
if
、else
'、switch
' 、'、' 、'でいっぱいのスパゲッティコードの混乱を手書きで書くよりも、そのようなエディターを実装するほうが多くの作業になるでしょうcase
。