Unityと吉里吉里でSLGとかRPGを作るブログ

すっかり2日に1回のペースに・・・・・・・・・・。

メニューとかセーブロードとか、まだ色々やる事がある気がするけど、取り合えずユニット関係の設計をする。
セーブとロードなんかには、ユニット情報は必須だし。


///ユニットデータ管理の設計
戦闘のあるSLGなら全てにユニットが存在する訳だから、今後も考えてなるべく汎用的な設計にしたい(プログラマの悪い癖)。
そこでユニットを、「ユニットデータ」と「キャラデータ」に分けて設計する。重要なのはゲーム的には2つをあわせた物をユニットとして使用すると言う事(これをキャラユニットとする)。

①ユニットデータ
 キャラユニットの種類を表す。ファンタジー物なら職業(戦士、盗賊など)。ロボット物なら(メカ)。大戦略系なら戦車とかヘリコプタとかになる。

②キャラデータ
 キャラユニットの成長部分などを表す。一番分りやすいのはロボット物のパイロット。

ロボット物だと簡単に説明出来る。ユニットデータがロボで、キャラデータがパイロット。パイロットは成長して能力を高めたり、スキルを習得したりする。
当然、ロボを乗り換えても、キャラのスキルや成長分は変わらんと言う訳。
あと、パイロットが載らないユニットがあるゲームもあるだろう、ギレンの野望なんかは、MSにパイロットを乗せる形だが、パイロットを乗せなくてもユニットとして同様に扱える。
これは、キャラデータにネームキャラフラグを用意すれば簡単に解決出来る。キャラ選択画面にはネームキャラフラグがある物のみ表示すれば良い。パイロットが乗ってないユニットには、一般兵と言うキャラを載せる訳だ。

ファンタジー物だと、戦士Aが転職で騎士Aに変更した場合、騎士という大枠の性能にAの能力が乗る形になる。これならいくら転職してもデータの扱いに困る事はない。



///ユニットのオブジェクト
■オブジェクト概要図
ユニットデータ相関図
取り合えず、HPとスピードだけ能力のあるユニットを設計してみた。

キャラ、ユニットは全種類をテーブルに保持する。
ユーザーがユニットを得た場合、以下の処理でユニットを登録する。
※ここではファンタジー物を例にしてみる。

1.キャラユニットテーブルに戦士データを追加。
2.ユニットシリアルを元にユニットテーブルを参照し、初期キャラクターIDを得る。
3.初期キャラクターIDを元に、キャラテーブルから該当するデータを保有キャラテーブルにコピーする。
4.コピーされたキャラデータのシリアルを、キャラユニットのキャラシリアルにコピーする。

このユニットを使う場合は、シリアルを元に各テーブルを参照する。
例えば、スピードを求める場合、シリアルを元にキャラスピードとユニットスピードを足したものを返す。
転職などの場合も凄く簡単。ユニットシリアルを変更するだけでOKだ。




私はゲームを作った事が無いので、これが一般的かは判断できないが、多少の差異はあってもこんな感じで制御しているはず。
SLGのユニットは将棋の駒みたいな物な訳だから、駒の種類としてのバランスは重要になる。仮に戦士の能力を変えるのに全キャラから戦士を探して変更なんて事はまずない。


スポンサーサイト
2009.01.31 / Top↑
Secret

TrackBackURL
→http://nekodamasi.blog79.fc2.com/tb.php/20-0be510bc