|
/*========================================================*/ <<<あゆしゃのC言語プログラミング>>> /*========================================================*/ 第407回 GIBS1 データ構造 発行 2003年12月6日(土曜日) 発行数 約3200 {magclick} {magclick} /*========================================================*/ はじめに ( 決り文句 ) /*========================================================*/ ・このメールマガジンはまぐまぐさんから発行しています。 ・ジャンルは、マルチメディアのプログラム、C言語です。 ・このメールマガジンは、横60文字で作成しています。 また、インデントはすべて半角スペース4つで構成しています。 ・ここで扱うプログラムは、C言語と半光年以内のものです。 ・登録解除は、まぐまぐさんのホームページでお願いします。 ・まぐまぐさんのバックナンバー(下欄参照)を活用して下さい。 ・ここは私の復習の場です。内容は約1ヶ月内外に私が勉強した 内容になっています。最新の技術があれば、へたれもあります。 ・わかりやすさを優先させる為、たまに嘘があるかもしれません。 /*========================================================*/ ご挨拶 /*========================================================*/ こんにちは。あゆしゃです。 12月4日から豊田インターチェンジが通行止めになると 楽しみにしていたのに、 ・・・ただの進入規制でした。残念です。 {magclick} /*========================================================*/ 今回のお題 << GIBS1 データ構造 >> /*========================================================*/ 現在、あゆしゃのC言語プログラミングは毎日連載です。 土日は、GIBSについてお送りします。 さて、GIBSの中身について、メルマガで紹介するのは初めて ですね。 まずはPerlの文法などの説明・・・は省略しましょう。 カウンタの作り方ぐらいは紹介したような気がしますので。 /*========================================================*/ はじめに、GIBSについて。 プレステのゲーム「機動戦士ガンダム ギレンの野望」が大好き だったあゆしゃ。 改造ツールを駆使して、1人用のゲームで対戦を楽しもうとする ほど、はまっていました。 しかし改造ツールというのは寿命が短いようで、ものすごく面白 かったのに、それほど遊べませんでした。 ないものは 自分で作ろう クリエイター というコトワザがあるようなないような、というわけで、 Perlを使ってCGIによる対戦型ギレンの野望を作ろうと企てて、 早1年がたちました。 2回ほど作り直し、構造のイメージが固まりつつあるところ です。 /*========================================================*/ 調子に乗って、ユニットのデータを打ち込み始めたあゆしゃ。 しかし、あれもこれも、という具合で放り込みすぎて、 ごちゃごちゃになってしまいました。 仕様書を作り、構造を検証する必要を感じました。 実際のプログラマの仕事としても、仕様書は作ればできるもの ではなく、打合せの連続によるその議事録のごった煮(落書き)が そのまま仕様書になることは、良くあることです。 この場を借りて、データ構造を考えたいと思います。 /*========================================================*/ まずはゲームの中心となるユニットが持つデータから。 ユニットのデータは2種類あります。 1つは、実際に存在しているユニットの情報。これには、どこの マップのどの場所にて、誰をパイロットとして遊んでいるか、 という身のある情報が含まれます。 もう1つは、ユニットの基本的な情報です。ユニットの名称や 耐久力など、ゲーム中を通して変わることのない情報です。 まずは思いつく限り、列挙して整理してみましょう。 ブレーンストーミング、というやつです。 簡単な説明も入れてみましょう。 /*========================================================*/ 記号の説明 MP・・・ミノフスキー粒子(電波妨害で命中率を低下させる) GR・・・重力または抵抗 宇宙0 水中5 空中0.5 他1 UT・・・ユニット PL・・・パイロット NT・・・ニュータイプ LV・・・レベル BG・・・ビームジェネレータ BC・・・ビームコーティング(ビームダメージ軽減) BM・・・ビーム IF・・・アイフィールド(ビームを跳ね返す) WP・・・ウェポン、武器 RM・・・リモデリング、改造 EV・・・イベント MAP・・・マップ SLT・・・スロット .・・・記号の連結 ★ユニット共通として用意する戦闘に使用しないデータ 名称 正式な名称、ガルバルディαなど 略称 戦闘ログに使う名称、BGアルファなど 型式 RX-78など、特にないものは名称の大文字アルファベット コメント このユニットに対するコメント 名称E 名称の英語 略称E 略称の英語 コメントE コメントの英語 開発MAP UTを開発するMAP、開発終了時ここに配備 0なら本拠地 必要MAP 開発案出現に必要なマップ 0ならなし 必要UT 開発案出現に必要な開発済みユニット 必要EV 開発案出現に必要な終了済みイベント 必要PL 開発案出現に必要な使用可能パイロット 開発資金 生産資金+生産資源時価で計算(仮) 資金 0-99999 生産するときに必要な資金 資源 生産するときに必要な資源、資源の種類がさらに9種類ある 開発期間 1-99 開発に要する期間 開発時の資金指定で半減倍増 生産期間 1-99 生産に要する期間 生産時の資金指定で半減倍増 ★ユニット共通として用意する戦闘に使用するデータ 限界 100-300 命中率と回避率と攻撃回数を修正する最大リミット 耐久 0-9999 ヒットポイント 0になると破壊される 運動 0-99 運動性能や機動性能のこと、命中率や回避率に使う 物資 0-9999 移動するとこの物資を消費し、0になると動けない 消費 0-9999 移動によって消費する物資の量 索敵 0-100 センサーの性能、命中率に使う 搭載 0-99 艦船の場合、艦船以外のUTをこれだけ搭載できる 質量 0-9999 UTの質量、戦闘出力計算に使用する 面積 0-9999 UTの見かけ上の面積、高いと回避率が低下する 出力 0-9999 スラスター出力 質量を移動させる力 BC 0-100 BM武器のダメージをBC%軽減する BC.LV=int(BC/10) NT.LV 0-9 限界が(NT.LV-abs(NT.LV-PL.NT.LV))*10%上昇する BG.LV 0-9 これよりWP.BG.LVが高ければ、そのWPを使えない IF.LV 0-9 これよりWP.IF.LVが高ければ、そのWPを使えない WP.SLT 0-5 持つことのできる武器の最大数 RM.SLT 0-5 施すことのできる改造の最大数 適性(空、寒冷地、山岳、陸地、宇宙、水中、森林、砂漠) 0-100 移動率や命中率・回避率に使う、低いと身動きもできない (但し、9999の値は、艦船以外は999とする) ★ユニット個別に保存するデータ ID 1-???? UTデータの行番号 0ならユニットデータなし 武装ID 0-??? UTが持つ武装のID5個 0ならなし 改造ID 0-??? UTに施す改造のID5個 0ならなし PL.ID 0-??? PLデータとリンクする 0だと一般兵 MP濃度 0-100 毎回20%減衰&指令艦のMP濃度/2を加算する MAP.ID 1-?? MAPデータとリンクする 移動元MAP.ID 移動元MAPを覚えておき、撤退時にここに移動する 移動先MAP.ID 戦術フェイズ開始前と終了後にここに移動する 艦船のみ指定可能 艦船以外は指令艦の移動先にしたがう 指令艦(搭載艦)ID 艦船以外のUTが0ならなし 艦船でも指令艦を指定でき、大隊を形成できる 艦船以外のUTを指定できない、指令艦が破壊されたら0となる 地形 0-8 UTのいる地形(空〜砂漠) 0なら艦船内で待機状態 士気 0-100 PLの射撃と操縦と格闘を士気/10上昇 〜30まで 疲労 0-100 PLの射撃と操縦と格闘を疲労/10減少 〜0まで 作戦 0-?? 行動目的、攻撃や補給、索敵など 艦船のみ指定可能 艦船以外は指令艦の作戦に従う ★戦闘時などに計算してファイルには保存しないデータ 戦闘推力 0-200(%) (質量+面積*GR)*100/出力 移動率 0-100(%) 物資を消費して移動を実行する、敵との間合い をつめたり開いたり地形を移動できるかどうかの確率 UTの適性*戦闘推力 ただし搭載艦内なら100% 命中率 0-100(%) 攻撃が当たる確立 以下の値から計算 UTの運動と適性と索敵能力 WPの命中率と適性(攻撃元と攻撃先の適性の平均) PLの操縦と射撃OR格闘 敵のM濃度 敵との距離 RMの強制補正 計算式は未定 回避率 0-100(%) 攻撃を回避する確率 以下の値から計算 UTの運動と適性と戦闘推力と面積 PLの反応と操縦と射撃OR格闘 RMの強制補正 移動率判定に失敗した場合は0とする 計算式は未定 /*========================================================*/ さいごに /*========================================================*/ ★ユニット共通として用意する戦闘に使用しないデータ ★ユニット共通として用意する戦闘に使用するデータ ★ユニット個別に保存するデータ この3つの種類のデータは、別々のファイルで持つことに しましょう。 戦闘に使用しないデータファイルは戦闘処理にて読み込む必要が ありません。 ★戦闘時などに計算してファイルには保存しないデータ このデータは、戦闘処理中の配列内部にもつようにしましょう。 なお、GIBSは英語化できるようにシステムを作っています。 今年のあゆしゃの1ヵ年目標はGIBSの作成で、来年の1ヵ年目標 として英語化を打ちたてよう、という計画です。遅れていますが。 日本語はすべて定数にまとめて、ファイルの切り替え一発で 英語化できる、という寸法です。 ・・・面倒くさくて、すべてを定数にはしていませんが・・・ {magclick} /*========================================================*/ 次回予告 /*========================================================*/ 次回は12月7日(日曜日)に、第408回を送ります。 お題は「GIBS2 データ構成2」 続いて、武装と改造とパイロットのデータ構成について お楽しみに! /*========================================================*/ 最後の決り文句 /*========================================================*/ このメールマガジンは、まぐまぐさんから発行しています。 このメールマガジンを解除したい場合は、まぐまぐさんをご利用 ください。このメルマガのまぐまぐアイディーは最後にあります。 このメールマガジンには広告が挿入されます。 このメールマガジンの内容に文面の引用はありません。 めーらっくすの場合はめーらっくすの利用方に従ってください。 このメールマガジンの内容は、転用、流用、宣伝、リンク、 頭の中が煮詰まる煮詰まる なんて大歓迎です。 {magclick} /*========================================================*/ /*========================================================*/ 発行者 あゆしゃ まぐまぐアイディー 0000020674 まぐまぐバックナンバー http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674 あゆしゃの世界 http://ayusya.hp.infoseek.co.jp/ 登録と解除 http://www.mag2.com/m/0000020674.htm ご意見・ご感想・ご質問メール mailto:ayusya@flamenco.plala.or.jp めーらっくす <<過去ログがタイトル別になっています>> http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F |