メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.407) GIBS1 データ構造  2003/12/06


/*========================================================*/
    <<<あゆしゃの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

ブラウザの閉じるボタンで閉じてください。