ゲームの変数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
pkp

ゲームの変数

#1

投稿記事 by pkp » 14年前

これは質問というよりそうだねって言って欲しい話なんですが

一般の市販されているゲームのような本格的ゲームは変数が100を超えるのでしょうか?
ポケモンなんかを見ていると変数が無茶苦茶、用意されている気がします

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ゲームの変数

#2

投稿記事 by softya(ソフト屋) » 14年前

ポケモンには詳しくないのと構造体配列が多そうなので単純には言えませんが、たぶん100要素では足りないでしょうね。
ポケモン毎のパラメータや主人公のアイテムなど色々数を勘定すれば分かると思いますよ。
パラメータとして目には見えませんがイベントの変数も必要ですのでそちらも勘定に入れる必要があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: ゲームの変数

#3

投稿記事 by Dixq (管理人) » 14年前

モンスターの種類が多いゲームは変数が多いわけではなく、パラメータ設定ファイルやスクリプトが多いんだと思います。

モンスターを動かすモジュールはどんな種類の敵に対しても利用できるようにしておけば、
バージョンアップなどで数百種類にモンスターが増えようとも管理が楽になります。

規模が大きくなるほど大きさに比例して変数が多くなり、設定値を全て変数で持っているようなゲームシステムは破綻するのではないでしょうか。

アバター
やっくん
記事: 5
登録日時: 14年前
住所: 長崎県長崎市

Re: ゲームの変数

#4

投稿記事 by やっくん » 14年前

たとえば、初代ポケモンで使ってるであろう変数を考えてみました。

・時間

<主人公>
・名前
・バッチ[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: ゲームの変数

#5

投稿記事 by softya(ソフト屋) » 14年前

ポケモンに詳しくないことをお断りしておきます。
固定で持てるパラメータもありますが、ユーザーにより可変する要素がある場合はセーブする変数としなければいけません。
ポケモンのモンスターの成長パラメータがランダム要素を含む場合はゲットしてるあるいはどこかに保管しているポケモン全てのパラメータを全て変数にして保存しておかなくてはなりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: ゲームの変数

#6

投稿記事 by たかぎ » 14年前

このような話をするには、あらかじめ「変数」とは何かを定義しておく必要がありますね。

たとえば、いわゆるグローバル変数に相当するものを、すべてひとつの構造体にまとめてしまった場合、変数は1個なのでしょうか?
セーブするデータ全体を、いったん一つの配列に詰め込んでからファイルに書くのであれば、変数は1個なのでしょうか?
関数の引数は変数ですか?
また、次のようなものでどうでしょうか?

コード:

int* p = new int;
*p;  // ← これは変数?
上のように、ポインタを使った場合、間接参照されるオブジェクトには名前がない場合があります。
それは変数と考えるのでしょうか?
もし仮に変数と考えるとすれば、一時オブジェクトも変数でしょうか?

この辺りの定義を明確にしておかないとまともな議論はできません。
なお、プログラムの規模が大きくなれば、「変数」ではなく「オブジェクト」の数は間違いなく増えます。

閉鎖

“C言語何でも質問掲示板” へ戻る