これは質問というよりそうだねって言って欲しい話なんですが
一般の市販されているゲームのような本格的ゲームは変数が100を超えるのでしょうか?
ポケモンなんかを見ていると変数が無茶苦茶、用意されている気がします
ゲームの変数
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲームの変数
ポケモンには詳しくないのと構造体配列が多そうなので単純には言えませんが、たぶん100要素では足りないでしょうね。
ポケモン毎のパラメータや主人公のアイテムなど色々数を勘定すれば分かると思いますよ。
パラメータとして目には見えませんがイベントの変数も必要ですのでそちらも勘定に入れる必要があります。
ポケモン毎のパラメータや主人公のアイテムなど色々数を勘定すれば分かると思いますよ。
パラメータとして目には見えませんがイベントの変数も必要ですのでそちらも勘定に入れる必要があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: ゲームの変数
モンスターの種類が多いゲームは変数が多いわけではなく、パラメータ設定ファイルやスクリプトが多いんだと思います。
モンスターを動かすモジュールはどんな種類の敵に対しても利用できるようにしておけば、
バージョンアップなどで数百種類にモンスターが増えようとも管理が楽になります。
規模が大きくなるほど大きさに比例して変数が多くなり、設定値を全て変数で持っているようなゲームシステムは破綻するのではないでしょうか。
モンスターを動かすモジュールはどんな種類の敵に対しても利用できるようにしておけば、
バージョンアップなどで数百種類にモンスターが増えようとも管理が楽になります。
規模が大きくなるほど大きさに比例して変数が多くなり、設定値を全て変数で持っているようなゲームシステムは破綻するのではないでしょうか。
Re: ゲームの変数
たとえば、初代ポケモンで使ってるであろう変数を考えてみました。
・時間
<主人公>
・名前
・バッチ[8]
・所持金
・歩数
・アイテムの取得数 × アイテムの種類
・ポケモン図鑑[151](取得or発見or未発見フラグ)
・手持ちのモンスター情報
・パソコンの中のモンスター情報
<ライバル>
・名前
・手持ちモンスター
落ちてるアイテムや岩などが破壊されてるかのフラグ
<イベントフラグ>
・イベントフラグ[?]
・落ちてるアイテムフラグ[?](実際には構造体で細かくあるでしょうが)
モンスターは管理人さんが言うように別ファイルに書き込んでると思うので、以下のような構造体を一つ用意していると思います。
<手持ちor出現モンスターのステータス用>
・No
・Lv
・HP
・状態(毒・麻痺・etc)
・こうげき
・ぼうぎょ
・はやさ
・とくしゅ
・持ち技[4]
・合計EXP
上とは別にモンスターの共通情報を書いたものもあると思います。
(あるモンスターが2匹居て、2匹とも共通するデータのこと)
<モンスター情報>
・EXPテーブル
・LvUP時の上昇値(たいりょく)
・LvUP時の上昇値(こうげき)
・LvUP時の上昇値(ぼうぎょ)
・LvUP時の上昇値(はやさ)
・LvUP時の上昇値(とくしゅ)
・LvUP時に覚える技フラグ
・技マシンを使えるかどうかのフラグ[技マシンの数]
<マップ情報(これも構造体でデータ自体は設定ファイルでしょう)>
・音楽
・マップ情報
・マップ画像
・マップイベントフラグ
・村人
・向き
・移動
・会話内容
・画像
・SHOP
・売ってる物[?]
わかりやすい部分で書きましたが、書き続けてもキリが無いのでこの辺で・・・。
・時間
<主人公>
・名前
・バッチ[8]
・所持金
・歩数
・アイテムの取得数 × アイテムの種類
・ポケモン図鑑[151](取得or発見or未発見フラグ)
・手持ちのモンスター情報
・パソコンの中のモンスター情報
<ライバル>
・名前
・手持ちモンスター
落ちてるアイテムや岩などが破壊されてるかのフラグ
<イベントフラグ>
・イベントフラグ[?]
・落ちてるアイテムフラグ[?](実際には構造体で細かくあるでしょうが)
モンスターは管理人さんが言うように別ファイルに書き込んでると思うので、以下のような構造体を一つ用意していると思います。
<手持ちor出現モンスターのステータス用>
・No
・Lv
・HP
・状態(毒・麻痺・etc)
・こうげき
・ぼうぎょ
・はやさ
・とくしゅ
・持ち技[4]
・合計EXP
上とは別にモンスターの共通情報を書いたものもあると思います。
(あるモンスターが2匹居て、2匹とも共通するデータのこと)
<モンスター情報>
・EXPテーブル
・LvUP時の上昇値(たいりょく)
・LvUP時の上昇値(こうげき)
・LvUP時の上昇値(ぼうぎょ)
・LvUP時の上昇値(はやさ)
・LvUP時の上昇値(とくしゅ)
・LvUP時に覚える技フラグ
・技マシンを使えるかどうかのフラグ[技マシンの数]
<マップ情報(これも構造体でデータ自体は設定ファイルでしょう)>
・音楽
・マップ情報
・マップ画像
・マップイベントフラグ
・村人
・向き
・移動
・会話内容
・画像
・SHOP
・売ってる物[?]
わかりやすい部分で書きましたが、書き続けてもキリが無いのでこの辺で・・・。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲームの変数
ポケモンに詳しくないことをお断りしておきます。
固定で持てるパラメータもありますが、ユーザーにより可変する要素がある場合はセーブする変数としなければいけません。
ポケモンのモンスターの成長パラメータがランダム要素を含む場合はゲットしてるあるいはどこかに保管しているポケモン全てのパラメータを全て変数にして保存しておかなくてはなりません。
固定で持てるパラメータもありますが、ユーザーにより可変する要素がある場合はセーブする変数としなければいけません。
ポケモンのモンスターの成長パラメータがランダム要素を含む場合はゲットしてるあるいはどこかに保管しているポケモン全てのパラメータを全て変数にして保存しておかなくてはなりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲームの変数
このような話をするには、あらかじめ「変数」とは何かを定義しておく必要がありますね。
たとえば、いわゆるグローバル変数に相当するものを、すべてひとつの構造体にまとめてしまった場合、変数は1個なのでしょうか?
セーブするデータ全体を、いったん一つの配列に詰め込んでからファイルに書くのであれば、変数は1個なのでしょうか?
関数の引数は変数ですか?
また、次のようなものでどうでしょうか? 上のように、ポインタを使った場合、間接参照されるオブジェクトには名前がない場合があります。
それは変数と考えるのでしょうか?
もし仮に変数と考えるとすれば、一時オブジェクトも変数でしょうか?
この辺りの定義を明確にしておかないとまともな議論はできません。
なお、プログラムの規模が大きくなれば、「変数」ではなく「オブジェクト」の数は間違いなく増えます。
たとえば、いわゆるグローバル変数に相当するものを、すべてひとつの構造体にまとめてしまった場合、変数は1個なのでしょうか?
セーブするデータ全体を、いったん一つの配列に詰め込んでからファイルに書くのであれば、変数は1個なのでしょうか?
関数の引数は変数ですか?
また、次のようなものでどうでしょうか? 上のように、ポインタを使った場合、間接参照されるオブジェクトには名前がない場合があります。
それは変数と考えるのでしょうか?
もし仮に変数と考えるとすれば、一時オブジェクトも変数でしょうか?
この辺りの定義を明確にしておかないとまともな議論はできません。
なお、プログラムの規模が大きくなれば、「変数」ではなく「オブジェクト」の数は間違いなく増えます。