2015年2月14日土曜日

部隊シミュレータ更新ver3.00 ~DB改良、新武将対応・・・DB編集ツールの使い方!

今回バージョンのアップデートは、内部のデータベースを大幅改装!
ユーザ側からでもデータベース内容を閲覧、更新できるようにしました。
それに伴い、新機能の追加等はそんなにありませんが、かなりの大規模変更になっています。

本来ならば、シミュレータ本体に詳細なヘルプファイルを付けるべきなのですが・・・
なかなかそこまでは手が回らず。。
ですので、おいおい必要な部分は最低限ブログ記事にて解説していきます。
もっと詳しい仕様を教えてくれ、というお話があれば、
コメント等で連絡して下されば、可能な範囲で対応致しますm(_ _)m

[ver3.0]
★このバージョンから、使用データベースがSqlite3になります。
従来バージョンの『Busho.mdb』『Skill.mdb』『npc.mdb』を『ixadb.db3』に統合。
★以下の不具合を修正。
・武将シミュレート機能がver2.8以降正常に動作していなかったのを修正。
・部隊読み込み時に「defoption.csv」の読み込みが正常にできない場合があったのを修正。
〇IXAデータベース編集ツールを追加。(ixadb_editor.exe)
これを使うと、データベースに手動でスキルや武将情報を追加することが出来ます。
表示・編集可能なテーブルは以下の通り。
> BDataテーブル:武将データ
> SNameテーブル:スキルデータ(スキルの属性や分類、合成テーブル)
> SDataテーブル:スキルデータ(各レベルでのスキル性能)
ツールから実行可能な命令は、insert, update, deleteのみに限定。
!!重要!!
データの編集には基本的なSQLの知識が必要です。
また、このツールを使わなくてもその他のsqliteに対応したプログラムを使って
データベースを直接編集することも可能です。
〇データベース周りの変更、改良に伴い、一部操作の最適化。
〇攻撃、防御、速度に関する童オプション対応。
〇特殊スキル「穢土の礎」に対応。
2015年2月10日現在の新武将、新スキルに対応。
(未対応の特殊スキルは情報が分かり次第、後々追加対応予定)

色々ごちゃごちゃ書いていますが、今回記事では、主にDB編集ツールの使い方
について書いていきます。

     ◆     □     ◆

!!!重要!!!
データベースを編集する際には、編集前のファイルをバックアップしておいて下さい!!!
万が一やらかした時に、戻せるよう・・・(笑
DB編集ツールは、シミュレータに同梱されている『ixadb_editor.exe』という実行ファイルです。
これを起動すると、下のような画面が出てきます。
インタフェース的にあまり作り込めていないので、分かり難いのが・・・うーむ・・・^^;w
「DB編集」、「DB検索」 の2つのタブがあります。順番に使い方を・・・

  • DB編集 ・・・ データベースの内容を編集、更新
  • DB検索 ・・・ データベースの内容を検索
■DB検索
表示するテーブルを選択して、「テーブル表示」を押すとデータベースの中身が閲覧できます。
〇テーブルの種類


  • BDataテーブル  ・・・ 武将データ
  • SNameテーブル ・・・ スキルデータ(スキルの属性や分類、合成テーブル)
  • SDataテーブル  ・・・ スキルデータ(各レベルでのスキル性能)

    〇未更新データボタン
    クリックする度に表示するデータ条件が切り替わります。
    • 未更新データ ・・・ 空欄のあるデータ(情報提供待ちデータ)のみ表示
    • 全てのデータ ・・・ 全データを表示
    一例として、SNameテーブルを未更新データのみ表示すると、こんな感じになります。
    各行の大体の雰囲気は分かるでしょうか。
    SNameテーブルは、スキルの分類や攻防、適用対象や合成テーブル等の情報が入っています。
    一番右端の「Uunf」という行は、合成テーブル情報にまだ埋まっていない部分があるかを
    識別するための行です。『F(Finish)』or『U(Unfinish)』で、Uの行のみが今は表示されています。

    テーブル表示ボタンの隣にある検索ボタンやらコンボボックスは、
    指定した条件に合致する行のみを表示するためのものです。
    例として、新蒲生さんのスキル「スキル名」の列から「白銀竜騎兵」を検索してみると・・・
    確かに、「白銀竜騎兵」のみが表示されるようになりました。
    ついこの間追加されたばかりのスキルなので、私がこのDBを構築した段階ではまだ
    合成テーブルについての情報が全然埋まっていませんね・・・

    この時点で、シミュレータ本体で新蒲生さんを合成素材にする合成シミュレートをすると、

    当然必要なデータが無いため、シミュレート結果が出せねえよと怒られるわけです。
    そこで・・・以下で、実際にこのDB編集ツールで新蒲生さんの合成テーブル情報を
    更新する例を紹介します。

    ****ちょっと余談 ~あいまい検索~
    上の「白銀竜騎兵」を検索した時には、完全一致した行しか表示していません。
    しかし、もっと緩い条件で検索したいケースもあるでしょう。
    そういう場合、一般にデータベースではあいまい検索というものが使われます。
    詳しい文法については、本記事の主旨から大きく脱線していくので詳しくは紹介しませんが・・・
    語尾に「竜騎兵」を含むスキルを検索したいとすると、
    『%竜騎兵』と入力して、検索ボタンを右クリックします。
    この“%”はワイルドカードというやつで、
    そこの部分に何かしらの任意の文字が入ることを示しています。
    すると・・・
    検索結果で、『〇〇竜騎兵』となるような行を含むデータを全て表示してくれます。

    ■DB編集
    さて、ここからは実際にデータベースを更新していきます。
    やりたいことは、
    『新蒲生さんの初期スキル「白銀竜騎兵」の合成テーブルを更新する』
    のでしたね。
    このDB編集ツールでは、データベースに対して次の3つの命令が実行可能です。
    • Insert命令  ・・・ 新しいデータを挿入する。
    • Update命令 ・・・ 既存のデータの内容を更新する。
    • Delete命令  ・・・ 既存のデータを削除する。
    Deleteは、おそらく滅多な事が無い限り使うことは無いと思います。
    主に使うのは上の2つでしょうか。
    今回使用するのはUpdate命令ですが、その前にInsert命令について簡単に触れておきます。

    ■Insert命令

    Insertに命令に必要な情報は、「どのテーブルに」「どのようなデータを挿入するか」です。
    このうち、「どのようなデータを挿入するか」については特に注意が必要です。
    設定が必要な項目が設定可能項目にズラーッと並んでいますが、
    この中で赤字になっているのは絶対に入力しなければならない項目です。
    最低限、赤い設定項目のみ埋めればInsertは実行できるわけですね。
    その他の項目については、特に必須ではありません。
    例えば今後、新スキル全攻スキルの「第六天魔王」が登場したとしたら・・・
    こんな感じに値を設定して、『SQL実行』をクリックすれば、シミュレータ本体で
    『全』カテゴリーに第六天魔王というスキルが追加されて、スキルLV毎の情報もきちんとInsert
    すれば実際にシミュレータ上で使えるようになります。
    どういう項目が何を表しているのかは、項目を選択した時に出てくる項目の説明欄を
    参考にしてください。

    ■Update命令

    ここからが本題です。Update命令では、
    「どのような条件のデータ」に対して「どの項目にどんな値を設定するのか」を
    入力しなければなりません。細かい文法説明は以下略として、今回の場合はこのように
    項目を設定して、SQL実行をクリックします。
    現時点でのwikiによれば・・・
    こうらしいですね。
    なんでも、S2の武功浄財が合流に載っているメンバー全員に銅銭を分け与えてくれる神スキルだとかなんとか・・・蒲生自身の性能も相まって、インフレ極まってますねぇ^^;;
    入力のコツとして、DB検索の方のタブで、検索結果のセルをダブルクリックすると、
    そのダブルクリックしたセルの値がコピペされて入力がやや楽になります。
    設定項目を削除する時は、右クリックです。
    更新条件式では、条件に合致する行を全て更新してしまうという点に注意が必要です。
    更新条件式に「攻防="攻"」とだけ指定すると、
    登録されているすべての攻撃スキルについてのデータを
    上書きしてしまうことになります。
    例えば、『白銀竜騎兵LV1のデータ』を絞り込むためには、
    「スキル名="白銀竜騎兵" AND スキルLV="1"」みたいに、ANDやORを使って
    本当に更新したいデータだけが絞れるような条件式にする必要がある訳ですね。

    *追記*
    また、設定可能項目の一番最後の項に、どのテーブルを選択しても『〇unf』
    という項目があります。SDataテーブルだと「Uunf」項目がこれにあたります。
    これは、その行のデータが完全に完成しているかどうかを「U(未完成)」「F(完成)」で
    区別するための項目です。全ての情報が揃った行では、これを「F」にすると
    データベース内で反映されるようになります。
    SNameテーブルでは「U」だとそのスキル情報は読み込まれませんし、
    BDataテーブルでは「U」の状態の武将情報はシミュレータに入力できません。

    (・・・何言ってるか分かりません、という方にはDB編集はリスキーです><w)
    データベースの編集処理はくれぐれも注意して行ってください。
    繰り返しになりますが、バックアップは忘れずに!
    さて、これでSQL実行ボタンを押すと・・・
    実行SQL文履歴、というところに何やら呪文が出てきました。
    データベースの内部では、このようなコマンドを実行することでデータを更新しているわけですね。
    “1 data affected”と出てきているので、狙った1つの行のみが更新できています。
    これで、DB検索タブにて白銀竜騎兵をもう一度検索してみると・・・
    ちゃんとデータが入っていますね!
    これで、シミュレータ本体から新蒲生さん生贄の合成シミュレートをしてみましょう。
    きちんと反映されていますね♪

    これで、今後私が更新をサボってしまっても・・・DB編集ツールを使いこなせれば、
    手動で新武将や新スキルの情報を追加していくことができます。

    ・・・DB編集ツールの話だけでこれだけ長くなってしまいましたので、
    今回はここで区切りにしますm(_ _)m

    13 件のコメント:

    1. 新機能追加ありがとうございます。
      早速光姫(防)のスキルの値を追加入力してみたのですが、「警告ログ」データベースに存在しないスキルと表示されてしまい認識してくれません。
      DB検索で検索すると入力できているので原因がわかりましたら回答よろしくお願いします。

      返信削除
    2. おはようございます。
      昨晩、色々と考え直してみたら必要な修正点があったり・・・
      あと、現時点でwikiで埋まっているスキル情報をデータベースに追記してみたりして、ver3.01を公開しました。光姫のスキル情報についても追記してみましたので、これで動くかなと思います。情報ありがとうございますm(_ _)m

      [ver3.01]
      ★以下の不具合を修正。
      ・DB編集ツールにて、一部入力時にエラーが出ることがあったのを修正。
      ・シミュレータ本体で、武将を消して上書きしようとしたら正常に処理されない場合があったのを修正。
      ・DBに現時点(2015年2月14時点)でのwiki状態を反映。

      考えられる点としては・・・
      スキル情報を更新する際、SDataテーブルでは
      項目「Sunf」の値は必須入力です。しかし入力しなくても、現状では初期値がUになるようになっています。U(unfinish)の値のままだと、シミュレータ側では
      『まだそのスキル情報は完全に埋まってはいない』と判断して、仰る通りのエラーメッセージを表示する場合があります。
      Sunf = Fでデータベースを更新されたかどうか確認してみてください。
      説明不足だったため、記事に追記しました><

      同様にデータが埋まっているかどうかを判断する項目として、
      SNameテーブルでは、U(Union)unf
      BDataテーブルでは、B(Busho)unf
      という項目があり、それぞれ行が完全に完成したらFの値に更新する必要があります。

      返信削除
    3. 返答ありがとうございます。上記の通りにやって認識できました。
      またソフトの処理速度があがったようでサクサク動くようになり前より快適になりました。
      あとは戦闘シミュですねw

      返信削除
      返信
      1. 正常に動くようになったとのこと、良かったです! データベース内で勝手にFやUを判断する仕組みにしようかとも考えたのですが、そうするともし既に入っているデータにミスがあった時にややこしくなるかなと(>人<;)

        データベースを読み出す処理をひと通り見直したりしたので、その辺りがサクサク感につながっているとすると嬉しいです♪
        きっと、お気に入り部隊を読み込む処理なんかは前と比べるとかなり早くなっているかと思いますし、ウェーバーモードについてもこちらで測ってみたところ多少は早くなっている感じがします〜
        戦闘シミュは……うーむ、いつになるかはわからないです、とお茶を濁しておきますね(笑

        削除
    4. スキル期待値シミュの兵科項目が全部"攻"になって結果が正しく表示されないようなのでご確認お願いします。

      返信削除
      返信
      1. 合戦中にver3.02を公開して修正しました(汗
        当記事の上辺りに更新した時には追記しておけば良かったですね。。
        教えて頂きありがとうございます。
        確認よろしくお願いしますm(._.)m

        削除
    5. 同盟員から極光姫のD&Dがうまくいかないと聞かれたので
      調査したところ、極光姫のスキル名の空白は全角のようですw
      BName2.INI のスキル名を修正したところD&Dできるようになりました、参考まで。

      返信削除
      返信
      1. ぜ、全角……うっかりしていました。
        細かい所まで見て下さり感謝です!

        本来は、武将データを内部に読み込む時に空白は除去した文字列で比較、格納するべきですね。。
        うまいこと修正できれば試みてみます。

        削除
      2. ver3.03にアップデート♪
        データベース構造を一新したおかげで、BName2.INIをなくすことが出来ることに気付きました・・・
        「三段撃 激烈」は半角で、「雪月花 碧甲」は全角デス、みたいなのが今後も増えるとすると、逐一BName2.INIで『これは全角、これは半角・・・』とやらなくちゃいけなくなりますからね。。間違いなくごっちゃになります><ww

        ・・・個人的には、運営側の実装にも問題ある気がしないでもなく・・・笑

        削除
      3. まあこれは運営の入力ミスでしょうねw
        ちょっとDBの編集ツール作ってるのですが
        一部のスキル名がリファレンスエラーになるので
        マスター側にも反映させておいて欲しいのですが。
        「淀のお年玉」「織田の絆」「着付け番」「袖の下」
        の4つです。動作に支障はないのでついでの時にもしよろしければ、、

        って一度書いたものが行方不明、、ダブってたらすみません。

        削除
      4. おぉ!! 今まさに、「DB更新4月からどうしようかな・・・」
        なんて記事を書こうとしていたところでした(笑
        苦肉の策で、ウェブサーバを借りてIXADBサーバを作り、
        そこの情報をシミュレータ本体からダウンロード、データベースを更新可能にしようかなんて悩んでいたほどで・・・
        もしよろしければ、勝手なお話で恐縮ですが、作られたツールが完成しましたら当ブログにて公開させて頂いても宜しいでしょうか。
        御指摘の4つのスキルは、おそらくBDataの初期スキル欄では存在するけれど、SNameやSDataには未登録、というものであるかと存じます。
        追加してDBのみ更新しておきますね^^

        削除
      5. 今作ってるのもまさにそんな感じで、VPSサーバにPostgreSQLを入れ
        そこにデータを入れて編集、ダウンロード時にSQLiteのファイルにする、
        というものです。
        データの入れ込みとダウンロードは完成、データの編集は汎用DBツールで
        やってますが、この編集部分を独自で作ればみんなで編集できるものに
        なるとは思います。
        だれでも編集できるといたずら防止手段も必要になりますが・・・

        削除
      6. なるほどです……私自身、言ってはみたもののデータベースサーバを構築した経験がほとんどなく、実現してくれる方がおられると私自身の勉強にもさせて頂きます( ´ ▽ ` )ノ
        現在の状態だと、誰かが折角データを集めて、まだ埋まっていない部分を埋めてくれても、それを利用者の間で共有することが難しいですしね。。
        確かにいたずら対策は必要かもしれませんね(>人<;) かと言って、編集してくださる方には編集可能権限を付したアカウント名を教えます、というような形式だと敷居がやや高くなってしまうかもしれませんし……
        ダウンロードする際、差分を比較しておかしい部分がないかを目視でさらっと確認できるフェイズを挟む、などでしょうか・・・

        心待ちにしております^ - ^

        削除