2017年5月29日月曜日

Big Farm 造船所 dockyard ボート(船団漁船)釣果シミュレータ

やっと新規追加の造船所関連の漁獲量の計算式が分かりました。
わかってみたら単純なことでしたが、計算式がわかるまで少々悩みました (そして、その計算式そのものがGGSさんが丁寧に作り込んだバグだったという念の入れよう)。
折角ですので、シミュレータを作成してみましたのでよろしければご利用ください。
javascriptで動作します。
使い方はこの記事の末尾をご覧ください。

English version here

Big Farm 造船所 dockyard ボート(遠洋漁業 船団漁船)釣果シミュレータ V3.6a
レベル
スロット1
なし(変更するにはここをクリック)
短縮時間 積載量 1時間当たりの漁獲量 釣り時間 釣り時間内漁獲量 追加漁具費用
0
0
漁場のカスタマイズ
漁場1
航海時間 00:00:00
9
9
9
ここに結果
漁場2
航海時間 00:00:00
9
9
9
ここに結果
典型漁場毎の漁獲数および収益の期待値
エビ・アサリ・カキ マグロ・ニシン ロブスター メカジキ・サーモン・タラ

    使い方
  1. ボートの種類(モーターボートなど)と、ボートのレベル(1~6)を選択します。
    なお、現在ボートのうちトロール船のデータが(私の造船所レベルが低くて)まだLevel1しかわかっていませんので、プログラム上でもトロール船のみLevelを変えてもすべて1のデータとなっています。他のボートは問題ありません。対応済み
  2. 配置したい漁具をスロットに配置します。(スロットは背景色がついているところをクリックすると選択肢が現れたり消えたりトグルします)
    現時点ではスロットに配置できる項目は限られています。なお各ボートへの「おすすめ」ではないアイテムを配置した場合の減衰率のデータが取れていないので、各項目(短縮時間、1時間当たりの漁獲量、釣り時間、積載量)に対しては必ず「おすすめ」の漁具が配置されます。
    気が向けばまき餌の短縮時間も反映させたいと思っています。
    全漁具に対応しました。
  3. 上記を行う都度、期待される釣果欄が更新されます。
    釣果は典型的な4種類の漁場すべてを対象に計算します。
    特に、漁場ごとに釣り上げることができる魚の数が事前にわかるので、FHW(魚版ハードワーク)イベントがまた来たら役立つと思います。加えて、ハザードによって失われなかった場合の利益額も計算します。
  4. 期待される釣果欄に"漁獲量過剰"だとか"船倉に余裕あり"だとかオレンジで表示される場合があります。
    オレンジ色なので一見警告に見えるかもしれませんが、例えば漁獲量過剰と言われても、船倉を効率的に満杯にするのではなく、一定数を釣り上げたらとっとと帰投させたい場合には有効です(釣り時間満了前に船倉をいっぱいにさせ帰投させる、などのケースが考えられます)。
    ケースバイケースでスロットの配置に役立ててくだされば幸いです。
  5. 上下に並べて別のボートとのデータを比較したい場合は「比較用にもう一つ開く」ボタンを押下してください。
    邪魔になったらボタンを再押下することで閉じることができます。
    横に並べたい場合は、お手数ですがこの記事を別のブラウザ(またはタブ)でもう一つ開いてください。
  6. プリセットボタンを押下することでlocalStrage、またはlocalStrageが無効の場合にはクッキーにシミュレーション結果を保存または呼び出し、削除を行うことができます。
    プリセットボタンを再度押下するか、保存か呼出ボタンを押下するとプリセット画面が閉じます。
    「未使用」のままテキストボックスにプリセット名を入力して保存しなかった場合は、漁船名+レベルがデフォルトのプリセット名になります。

試していただければわかると思いますが、漁場や釣りたい対象数によってきめ細かくスロットへの配備の検討が必要だということが分かります。それだけでも作ってよかったと思います。
これがどなた様かのお役に立てば幸いです。


2017/05/31 全漁具とまき餌をサポートしてプリセットをクッキーに保存できる第二版に差し替えました
2017/06/01 釣果計算式の仕様変更に対応しました(GGSさんはまき餌の演算を追加することを忘れたようです!釣果に効果が反映されていませんので次のパッチがあるかもしれません)
2017/06/02 アサリおよびまき餌価格の仕様変更に対応しました

2017/06/12 自分以外にご利用いただいているとは思わなかったので更新履歴の記載をサボっておりました。申し訳ございません。
主な更新内容は以下の通りです。
V2 IE11対応、漁場までの時間入力方法およびスロット内容選択方法の改善、漁場のカスタマイズ機能の追加、GGSの相変わらず見事な釣り時間計算バグの仕込みを華麗に再現
V3 漁場のカスタマイズ内容に対するスロット配置のドラフト案の自動生成機能の追加、2017/06/09の仕様変更に対応、スロット変更時のスクロール位置の復帰機能の追加
V3.2a 2016/06/18 Confirm when preset overwrite / delete
V3.3 2016/06/23 プリセット保存先をクッキーからWebStrageのlocalStrageへ変更しました。すでに保存されているプリセット内容は引き継がれます。
但しlocalStrageを無効にしている場合は従来より圧縮した形でクッキーに保存します。どちらの場合でも従来型のクッキーは上書き・削除時に削除され、新形式に変換されます。
Safariはドメイン内でのクッキー最大長が4KBらしいのでlocalStrageを無効にしている場合はプリセットはおそらく数本しか保存できません。
IE11,Firefox,Chromeではクッキーへの保存でも問題ありません。
WebStrageの仕様として、アクセス時のプロトコルがhttpとhttpsで保存先が変わります。つまり、httpで接続したときに作ったプリセットがlocalStrageに保存されていても、httpsで接続するとそれを参照できません。当ブログはhttp/httpsどちらからでもアクセスできますが、プリセットの保存先は当ブログへの接続プロトコルによって変わりますので、20個以上プリセットを保存したい場合などにご活用ください。
なお、(ないと思いたいですが)古いクッキーが残ったままになる場合は、お手数ですが手動でttgcameback.blogspot.jpのクッキーをブラウザの機能から削除してください。
2017/08/17 V3.4 2017/08/16の仕様変更に対応。但しまき餌の費用は前仕様のままで計算(製造費用は各人異なるため)
2017/08/18 V3.41 ノーフォーク式はしけの「一時間当たりの漁獲量」の値が間違っていたのを修正。ノーフォーク式はしけのlv2~6に影響があります。
2017/08/28 V3.41a 偉大なるGGS様の(GGS様の自称では)社員数の半分を占める極めて優秀なコンサルタントによるコンサルティング能力を遺憾なく発揮させたバランシング調整に伴い、ニシンまみれの漁場から再びロブスターまみれのへの漁場到達時間を旧版に差戻。
2017/09/28 V3.42 偉大なるGGS様の(GGS様の自称では)社員数の半分を占める極めて優秀なコンサルタントによるコンサルティング能力を遺憾なく発揮させたバランシング調整に伴う仕様変更に対応。
2017/10/26 V3.5 漁場一括設定機能および経費かかる場合は利益額のツールチップに収入および経費の内訳を表示する機能を追加。
2017/11/08 V3.6 ハザード発生時の釣果数及び利益計算追加、防御漁具の名称変更対応。
2018/01/29 V3.6a 最近妙なお問い合わせが多いので、皆さんお気づきだったとは思いますが、この期に及んで最初からわかってたもののほっぽいといたGGSのゼロ除算除けのおまじない(時間短縮アイテムにより移動時間がゼロになった場合になぜか謎のペナルティが片道1秒往復2秒加算される。分母が0か判定しないまま除算式を書いちゃうGGSクオリティならではの工夫でばかばかしいから無視していました。移動時間が0秒でも2秒でもどっちにしろ最低移動時間としてあり得ない値なのですからペナルティになってないのは明々白々だわ。)を、もう加算することにしました。
なお、実際に出船する前のGGS謹製の帰投予想時間画面ではこの2秒は加算されていませんが実際に出船すると加算されているという、脊髄反射的にお問い合わせをいただきそうな項目という意味でも実装をためらってましたが、もうゲーム会社自体に先はなさそうですし、ここまでご利用いただいているとなると、どうもわかってて実装しないのも何やら寝覚めが悪いので、どうかこれまでの怠慢は平にご容赦くださいませ。

2017年5月28日日曜日

Big Farm 造船所 Dockyard 漁具および追加魚介データ


*** 2017/06/02 追記 ***
5/31のパッチでアサリの価格、アサリのまき餌の価格、カキのまき餌の原料数が黙って変更されました。
*** 追記ここまで ***
*** 2017/09/28 追記 ***
9/28のパッチでの魚販売単価の変更に対応
*** 追記ここまで ***

移動速度dollargold短縮時間(min)短縮時間(分)当たりの費用(dollar)
ジムモーターボート975109108.3333333
ジョーランナバウト13001312108.3333333
キャロルノーフォーク式はしけ16251615108.3333333
イアンスキップジャック19502018108.3333333
ブリジットトロール船1625292760.18518519
※ブリジットの$1625はおそらくGGSの入力ミスであろう(2017/05/27現在)


積載量dollargold追加量追加量当たりの費用(dollar)
小型クーラーボックスモーターボート1950203650
クーラーボックスランナバウト1170011761950
サーミックボックスノーフォーク式はしけ23400234121950
フリーザースキップジャック27300273141950
大型フリーザートロール船31200312161950

1時間当たりの漁獲量dollargold追加量追加量当たりの費用(dollar)
ジョンモーターボート1600162800
ポールランナバウト45004531500
ジェームズノーフォーク式はしけ90009061500
ナンシースキップジャック1200012081500
ロイトロール船15000150101500


漁獲物の種類dollar
底引き網エビ100
スタンドアップロッドマグロ550
ロブスタートラップロブスター750
貝取鋤簾カキ150
グラファイトロッドタラ1000
トローリングロッド(ストレートバット)サーモン2500
トローリングロッド(カーブバット)メカジキ6250
魚網ニシン500
遠洋シフターアサリ100


釣り時間dollarhours1時間あたりの延長費用(dollar)
ウォルターモーターボート325013250
ジェラルドランナバウト1300026500
ヴィクタートロール船2600046500
ラッセルノーフォーク式はしけ3250056500
リサスキップジャック3900066500


防御dollar
熟練の船乗りしけ5000
ソナーサメ5000
タービン竜巻5000
サバイバリスト氷山5000
インクつぼタコ5000


追加魚介販売単価(dollar)旧単価
カキ15004687
アサリ12003500
エビ10002812
ニシン180012812
マグロ270016625
ロブスター250018125
タラ350027500
サーモン400037500
メカジキ500047188

Big Farm 造船所 Dockyard まき餌製造データ

*** 2017/06/02 追記 ***
5/31のパッチでアサリの価格、アサリのまき餌の価格、カキのまき餌の原料数が黙って変更されました。
*** 追記ここまで ***
農場ゲームのくせに大々的に船団を組んで漁業に励む大型パッチが(例によって大量のバグとともに)リリースされましたが、このゲームの向かう方向性が分かりません。
一次産業を網羅するつもりなんだろうか。

原則として今回の造船所関連では赤字になる要素がほとんどありません。
赤字どころか放置するだけで莫大な利益が得られてしまうため、とんでもないインフレ要因となりそうなパッチになっています。

まあ、せっかくなので、まずはまき餌をどの原料で作ったらどうなるのか計算してみました。

まき餌販売単価および特効表
餌単価ニシンマグロロブスタータラサーモンメカジキ
まき餌1200010%10%10%10%10%10%
カキのまき餌1900015%15%15%15%15%15%
アサリのまき餌8400015%15%15%15%15%15%
エビのまき餌8900015%15%15%15%15%15%
ニシンのまき餌8200020%20%20%20%
マグロのまき餌8500020%20%20%20%
ロブスターのまき餌9300025%25%25%

まき餌生産利益
餌生産原料原料数原料費生産費用生産時間(min)生産個数費用/個売却益/個
まき餌カキ2937410435194782522
まき餌メカジキ1471885203559541.62458.4
まき餌アサリ134550010435145604-33604
まき餌ニシン33843610435138540-26540
まき餌ロブスター23625010435136354-24354
まき餌サーモン13750020835218854-6854
まき餌マグロ34987510435149979-37979
まき餌エビ174780410435147908-35908
まき餌タラ25500010435155104-43104
カキのまき餌カキ314061156531142174783
アサリのまき餌アサリ19665001565316665617344
エビのまき餌エビ25703001565317045618544
ニシンのまき餌ニシン5640602087116426817732
マグロのまき餌マグロ4665002087116670818292
ロブスターのまき餌ロブスター4725002608917276020240
※原料費は原料をそのまま売却した場合の価格を計上
※生産時間は造船所Level6時点の値

特効まき餌を除けば、まき餌を生産するなら利益的には一見カキが有利に見えますが、原料数と往復時間を考慮すると単位時間内で5個も生産できて上乗せできる利益も大きいメカジキが最も有利です。
むろん、人それぞれ船団運用は異なるでしょうから一概には言えませんが、メカジキの漁場は一般的に遠方にspawnされがちですので、大型船でごっそり釣り上げてくるような運用が行われるでしょうから、その観点からも適していると思われます。

カキ・メカジキ・アサリ以外で特効まき餌を除いたまき餌を製造した場合は、原料をそのまま売却するよりも価値が下がってしまいます。

2017年5月20日土曜日

Visual Studio 2017でPushCommand.ExecutePushCommand

週末なのでMicrosoft Visual Studio 2015を2017に更新することにしました。
保守案件がありそうな2008やそれ以前のを残して2012以降をばっさりと切り捨ててすっきりです。

同時にUnityも5.6にしたらAdMobが動かない。。。
開発環境を更新したのですから当然何かあるとは思っていましたが、まずUnity側で事案発生。まあ、所詮誰も遊んでくれないゲームアプリで利用しているだけなので更新することもないでしょうから当分こちらは放置です。

2017はこの段階では別段何事もなさそうだったので、早速Cities: SkylinesのMODを今度発売されたMass Transit DLC用に機能追加をしてテストして無事リリース。
早速早期対応ありがとう(意訳)なコメントをいただいて、照れくさくござる。

ここまでは順調だったのですが、テストを完了してローカルでコミットされていたソース群をオレオレサーバにpushしようとして開発環境移行時多発事案の発生であります。
リモート リポジトリへのブランチのプッシュ中にエラーが発生しました: Git failed with a fatal error.
fatal: unable to access 'https://xxx/yyy.git/': SSL certificate problem: self signed certificate in certificate chain
数年前から趣味で作ったソフト群はサーバ上に設置したgitbucketという大変スバラシイソフトウェア経由で管理しており、それへのアクセスはhttpsを経由して行っていたのですが、先日までの2015では特に叱られもしませんでした。
2017からちゃんと対応するようにしたのでしょうか、オレオレ証明書なんか知らねーよとおむずかりです。

これはまあ、言われた通りにすればいいので、オレオレ認証局の証明書をconfigに追加するか、そもそも証明書のチェックをさせないかのどちらかで対応可能です。
  1. オレオレ認証局の証明書をconfigに追加する場合
    証明書はderじゃだめでpemじゃないとダメな様子です。
    https://oreoreというサーバを証明するca_oreore.derという証明書があったとして、opensslでder形式からpem形式に変換するには以下の構文になります。
    openssl x509 -in ca_oreore.der -inform DER -out ca_oreore.pem -outform PEM
    ここでできたca_oreore.pemを .git/config に、以下を追記してあげます。

    [http "https://oreore/"]
    sslCAInfo = X:/path/to/ca_oreore.pem


    お気づきかと思いますが、ドライブレターがついています。
    ついていないと、標準インストールの場合、
    C:\Program Files (x86)\Microsoft Visual Studio\2017\[エディション名\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32
    という気が遠くなるような深いパスがrootとなってしまいます。
    素敵な仕様ですネ。
    また、バックスラッシュ(\)ではなくスラッシュで記述したほうがよろしいかと思います。また、"https://oreore/"を省いてもいいのですが、それだとサーバ毎に証明書を設定することはできません。
  2. 証明書をガン無視させたい場合
    .git/configに下記の行を追記します。
    [http]
    sslVerify = false
まあ、ここまでは良かったんですが、いざpushしようとするとさらにおむずかりのようで、コンソールに書きのメッセージがお出ましになられました。
リモート リポジトリへのブランチのプッシュ中にエラーが発生しました: Git failed with a fatal error.
    PushCommand.ExecutePushCommand
こっちは先ほどと違って、何を言ってるのかわかりません。
今現在、記事にしている最中ですが現時点でもさっぱり訳が分かっていません。

PushCommand.ExecutePushCommandで検索すると、2017添付のgitを最新版に更新したら直っただとかopenssl系のdllが混在していただとかいろいろ記事はあるのですが、それらすべてを試しても何の解決にもなりません。

加えてサーバ側のgitリポジトリのアクセス許可や実行ユーザを再度確認したりVisual Studioを再インストールしたり、修復したり、などと試していて、これだけで土曜がつぶれてしまいました。

さらに直接gitコマンドでpushを試みたところ、さらにわけのわからないエラーが。
リモート側に存在しないpackファイルをunpackしようとして存在しない(ないんだからないわな)からって大激怒してるんです、keepだけ残して。
もう本気で意味不明でごわります。

リモートリポジトリからcloneしなおして、再度commit, pushを行っても同様の結果ですし、サーバ側のgitのバージョンは1.8、PC側が2.13ということで、バージョンの違いではないかと考えてサーバ側からpcをmountしてpushしても同様に怒られるし、ほとほと困じ果てました。
ふとコミットを一度取り消し、コミットメッセージを変更してコミットしてpushしたら。。。通りました。

いったいなんなんだ!!
それがしも大激怒です。

テスト用リポジトリを作成し、通らなかったときとまったく同じコミットメッセージをつけてコミットすると、今度は何事もなく通るじゃありませんか。
ますます意味不明です。

git fsckしても問題ないし、cloneはできるし、何がどうなってるのかさっぱりわかりません。

とても恥ずかしいことをしている気がするので、ここにご報告する次第です。