2015年2月19日木曜日

ER図の作成

前回、データベースの作成までは終わったので、
いざテーブルを作って・・・と動こうとしたものの構造を考えていなかった。

定義書から書いてーってのはダレる、仕事じゃないんだし、遊びだし。
ER図だけ書いとけば1クリックでDDLやら定義書起こしてくれるツールを使っちゃおう。
というわけで最初、Eclipseみたいなやたら重い開発環境を家のPCに突っ込みたくなかったので、
フリーのER図作成機能つきの開発ツールを落として作業してた。

これが見事に大失敗/(^o^)\

使い勝手は良かったんだけど、CREATE SEQUENCE文を単体で書きたいのに
書き様がないという致命的欠陥。
DDLに出力させた後に手で追加するとかいうナンセンスは考えられんわ!

結果EclipseのpluginであるERMasterを使うことに変更して、
インストールやら手直しやらで時間掛かってしまった。
ほんまEclipseさまさまやで!


で、こうなった。

「おい、中央のテーブル外部キー貼りすぎでしょ、馬鹿じゃないの?死ぬの?」
とか言われそうだけど好みでこうなった。

他社に提供するシステムとかって、なんでこんなことするのってことが平気で発生するよね。
なんで対策してないの?→(ばかよけレベルの)ソース追加しろとなるフローが身に沁みてしまって、
基本外部キー貼って勝手なことすんなっていう造りにしておく精神になってしまった。
データ入れる前にちゃんと内容チェックして入れろや!って言いたい。
いやまぁ、今回私しか使わんから不要だけどね・・・。


他に荒れそうなのはサロゲートキーを使うあたりかなぁ。
複合主キーとなるテーブルは少ないし、
「どのデータとどのデータが紐付いているのかパッと見では超わからん」
というとても大きなデメリットがあるけど(サロゲートキー否定派はきっとコレが問題よね)、
コーディングしやすくなるんじゃないかなーと思う。きっと思ってるだけだけどね。
何より整然として綺麗に見える(結局は主観の話で、要は好み)ってのが大きいかな。

ここまで書きつつ外部キーについて調べつつしてる時に
CHECK制約なんていうものがあると初めて知った今日このごろ。
drop_item_listにCHECK制約を使うとなんと綺麗になることか!
これや、探し求めてたのは!

つーか、PostgreSQL文書のかなり初っ端の方に普通に書いてたわ。
なんで今まで知らんかったんか意味不なくらい。
基本他人の書いたソースから知識を得るコピペエンジニアらっちゃんは伊達じゃないわ。
一応、コピペした後ちゃんとソース理解して修得するからね・・・!(当たり前である)

2015年2月11日水曜日

データの集計のためのリレーショナルデータベースの導入

FlowerKnightGirlで自身でとったデータを集計しようということで、
勉強がてらPostgreSQLを導入。

1.PostgreSQLのインストール

 ぐぐってインストールする。


2.pathを通す

 環境変数のpathに以下を追加する
 C:\Program Files\PostgreSQL\9.4\bin;

 ※PostgreSQL 9.4のインストール先がデフォルトの場合


3.psqlを起動する

 別にPgAdminⅢからでもいいんだけど、コマンドプロンプトから起動のほうが楽だし。
 >psql -U postgres

 PostgreSQLの導入終わり。
 ※ユーザ名はPC名がpostgresなら省略可


4.ユーザを追加する

 この先、別のゲームでも同じことする気がするのでロールをわけておく。
 create roleだとデフォルトnologinになっちゃうのでcreate userで。
 いや、別にwith句のあとにloginって書くだけなんだけども。
 #create user flowerknightgirl
 #with
 #  CREATEDB
 #  PASSWORD 'flowerknightgirl'
 #;

 よくよく考えるとDB作成権限を与える必要はなかった。
 sql文にやたらと改行入れるのは癖。


5.表領域を追加する

 考えている程度のデータではディスクが溢れるなんてこともないとは思うけど、
 一応切り離しできるように表領域をわけておく。
 #CREATE TABLESPACE flowerknightgirl
 #OWNER flowerknightgirl
 #LOCATION 'E:/PostgreSQL/9.4/data/dbs/FlowerKnightGirl'
 #;

 dbs/FlowerKnightGirlは先に手動で作っておいた。正直どこでもよい(*‘ω‘*)
 多分・・・、多分だけど区切り文字は、"\\"でも代用可能。


6.データベースを追加する

 スキーマでわけておくだけで十分な気もするけど。
 これも切り離しを想定してわけておく。
 >CREATE DATABASE flowerknightgirl
 >with
 >  owner flowerknightgirl
 >  encoding 'UTF8'
 >  tablespace flowerknightgirl
 >;



さぁこれで好き放題できる!かな。

フラワーナイト育成について

FlowerKnightGirlでのフラワーナイト育成する手段は、
 1)素材を使って強化合成をする
 2)贈り物で好感度を上げる
 3)進化合成をする
 4)強い装備を装備する
の4通りがある。


1)素材を使って強化合成する

 素材には、フラワーナイトや強化聖霊、進化聖霊がある。
 各素材ごとの経験値は以下のとおり。
  ★2フラワーナイト 60 (90)
  ★3フラワーナイト 180 (270)
  ★4フラワーナイト 240 (360)
  ★1強化聖霊 720 (1080)
  ★3強化聖霊 1800 (2700)
  ★5強化聖霊 4800 (7200)
  進化聖霊全般 5 (7)
  ※★5,6は入手難度を考えると素材にすることはないと考えるため省略
    ()内の数字は同属性強化時の経験値

 ご覧のとおり、強化聖霊で強化するのを前提とされた感じ。
 それ以外の素材は、育成するフラワーナイトのレベルに応じて費用が増えていくため、
 費用対効果がマイク・グリーンウェル並に悪い。
 強化聖霊は、日曜日か水曜日の曜日任務、強化聖霊の大宴会しかないという困ったちゃん。

 また、同属性強化時の経験値は1.5倍のボーナスがつくため、
 基本的には、育成したいフラワーナイトの同属性の強化聖霊を用いて育成していく。
    



 2)贈り物で好感度を上げる

  贈り物には以下の様なものがある。
   本、宝石、ケーキ、ぬいぐるみ
   特別功労賞(銅、銀)

  本、宝石、ケーキ、ぬいぐるみには、好感度が1%、2%、3%あがる3種類の贈り物がある。
  また、フラワーナイトごとに好きな物があり、好きな贈り物だった場合は2倍の効果がある。
  基本入手手段は、常設任務の贈り物を求めて
  ただ、スタミナの使用量に対してクリア時に獲得できる経験値が少ないため、
  イベントダンジョンなどでの、"ついでに"入手を期待したほうが良さそう。
  特別功労賞は、イベント等での★3達成報酬が主な入手手段。

  チュートリアルで、初期ガチャで獲得できる★4フラワーナイトの好感度が100になっているはず。
  そのフラワーナイトを見ていただければお分かりの通り、
  好感度ボーナスでかなり強化されていることが見て取れる。



 3)進化合成をする

  フラワーナイトがLvMAXになると1度だけ進化することができる。
  ただ、費用がかなり嵩む上、進化素材である進化聖霊の入手がかなり面倒。
  特に★5進化聖霊は現状ドロップ率が悪いと言われており、
  曜日任務を10周しても拾えなかったという話もよく聞く。

  なので最初は無視。たとえレベルMAXになっても無視。
  まずは3~フルPT全員LvMAXになるように育成したほうがよいです。
  ※スタミナ回復のためほぼ無限に華麗石を割れる人であれば、
   土曜日のゴールドラッシュでお金を稼いで進化させるという手もある
   


 4)強い装備を装備する

  一般ダンジョンをクリアすると、たまにレイドボスがPOPします。
  このレイドボスを討伐すると装備ガチャ種なるものが入手できます。
  これを100個集めることで、装備ガチャを1回引くことができます。  
  任務9辺りからは、中級装備ガチャタネを落とすレイドボスが湧きます。

  ただまぁ・・・イベントマップではレイドボスが出ないことと、
  レイドボス参加用のレイドポイントの回復手段が自然回復しかないことから、
  余ってるスタミナ消費したらでたレイドボスや、
  フレンドなどから飛んできたレイドボスの救援要請を見かけたら参加していく、
  など、受動的に装備ガチャ種を貯めていくのが良いかと。
  
  なお、私はまだ1度も引いたことないですけど、
  中級装備ガチャで攻撃力+1000の装備が出るという噂を聞きました。




育成の流れ

 では、どうやって育成していくか。
 私が実際育成している流れをご紹介。
  1)日水土曜日以外は、自然回復のスタミナで一般ダンジョンを回る。
   ※本日記現在は滅びの都市ブレーメンのE-4がガチャ種も多く、
    普通ランクの贈り物も出ることから、そこをずっと回る。
   
   溜まったガチャ種を使用してのノーマルガチャや一般ダンジョンで出た
   ★2のフラワーナイトは基本全て売却。
   Lv1の育成しようと思うキャラがいた場合は、同属性の★2フラワーナイトを混ぜて、
   Lv9前後にしておく(それ以上は育成しない)。
   ★3のフラワーナイトはPTと相談、要らなければ売る。
   ★4なんて出ない。
   
  2)土曜日は、20万ゴールドを目標にゴールドラッシュを回る。
   必要なだけ華麗石は割る。
   進化を考えているならその分を上乗せする。
   これをやっておかないと、ゴールド不足で3)を満足に消化しきれない。
  
  3)日水曜日はひたすら強化聖霊の大宴会を周回する。
   スタミナの端数は適当に処理しつつひたすら華麗石を割る。
   出た聖霊は、必ず10体以上貯めておき、強化合成の際は同属性10体を合成する。
   特に育成したいフラワーナイトには★3、5の強化聖霊を10体貯めて与えています。
   終了目処はゴールドがなくなってきたら。
   この時、できるだけ1体を育ちきるまでつぎ込むのではなく、
   4PT均等に育てていくほうがよいです。
   ※一部ボスがHP割合ダメージを与えてくるため、どんなに育ててもワンコンボで死ぬ可能性があるため   

  現在、華麗石が大量に配布されているのでこなせる技ではあります。
  もし毎日2個配布や、初回★3クリアできるダンジョンがなくなってきたら、
  自然回復で出来る限りを、ってなってくるのだろうか。つらい。
  なんにせよ、ガチャに華麗石割るより、まずは強化するために割るべきだと思っています。




強化聖霊の大宴会、中級・上級どっちがいいの?

 どっちがいいんでしょう?w
 現在上級はひたすら結果を蓄積してドロップ率見ようかなと思っていますが、
 まだ40周程度で十分なデータでもないのでまだローカルに溜めてます。
 途中経過でご紹介すると、
  上級42周でドロップした聖霊は、5才が116、20才が30、100才が13。
  スタミナ1辺りの経験値(基本値)は、59.5(*1)exp。
  (*1){(720×116)+(1800×30)+(4800×13)}÷(80×42)
  つまるところスタミナ50辺り、2975exp。
  もし中級で、
   毎回★3強化聖霊が出るなら中級。
   3回に2回★3強化聖霊が出るなら上級。
   2回に1回★3強化聖霊が出るなら上級。
  うーん、現状私のドロップでは上級のほうが良さそうかな。

FlowerKnightGirl始めました

DMMのオンラインゲーム、FlowerKnightGirlを始めてみました。

攻略、それに合わせたゲームデータの整理の勉強などをして、
自分のための備忘録としていきたいと思います。