2016年12月24日土曜日

PennantSpirits ver0.31

更新方法

pennant.exe、pic.pena、及び各datフォルダにある/recordbase/injurybase.datを上書き

追加したもの

・パワー、ミートの細分化
・成績シミュレーションシステム搭載
・ 査定システムの新装
・個人詳細起用法

機能自体は既に告知したとおり。

一括から全選手の査定を行えるので 、実名選手の査定も多少は楽になるはず。
datフォルダ内のplayer_new.csvには2016年終了時のデータが入っているので、
例によって特殊モードからNキー+Cキーでインポート可能。
Ctrlキーを押しながらN+Cで既存選手を削除せずそのまま追加。
また、FREEに退団などで入りなかった選手、監督のデータ、及びNPBを去った選手を何人か入れています。
コーチの分も作るべきなんだろうけど面倒くさい。
csvデータの追加自体はそんなに難しいことではないので要望があればまた書きます。
解説しなくてもファイル見たら法則がわかるかな。

その他

そういえばCSV能力インポート作り変えるの忘れてました。
 監督絡みは結局ほとんど手付かずのまま。
他にもやろうと思ってて忘れてる部分があるかもしれませんが勘弁してください。
それといつも通りバグ報告をお願いします。

2016年12月22日木曜日

二刀流とかについて

詳細起用

手抜き気味ですが各選手の細かい起用法を設定できるようにしました。


後からレイアウトが変わったので下部分がNPB公式サイトのようにスカスカなのは勘弁してください。
中○日で先発登板といった設定もできるようになり、今まではローテを順に消化するだけだったのがかなり変わっています。
それ以外のところは割りと適当だったり。
コメントにあった二刀流についてですが、それっぽいのには対応しています(上画像の野手起用の部分)。
形だけなので例えばMVPに選ばれても投手成績しか表示されないし投手扱いなのでいくら打ってても打たれまくったら二軍に落とされます。
そんなに細かく作り込むつもりはないです。
その理由はいくつかあるのですが、大前提として二刀流起用とは即ち実質的に大谷選手を再現するための専用の起用法となっている点があります。
普通、打撃C守備Eの右翼手Xと打撃A守備Dの右翼手Yがいた場合、Yを右翼にしてXをDHに回すところ、このYが投手も兼ねていた場合、負担を考えてDH起用しかされなくなる。という、これが今季の起用法。
昨季及び今季は負担を減らすためかDHor投手での出場しかありませんでしたが1年目・2年目は外野手起用が多く、投手として登板するときDH解除するときもあればそのまま投げることも。その際打順も上位になったり下位になったり。
そういった起用法を正確に再現しても来年以降またガラッと変わる可能性があります。
また昨年のように打撃不振の場合は野手起用を減らしていましたが、投手成績が芳しくないときはそのまま投手起用を減らすのか、投手だけに絞るのか、ローテの谷間にするのか、リリーフでも起用するのかなど方針が不明。

今の時代に一人にシーズン400イニング投げさせるチームはいません。
だからゲーム内でもよほど深刻なチーム事情がない限りそんなふうにならないようにしています。
同じように二刀流投手にローテ1番手としてフル回転させながらほとんどの試合で出場させることはないだろうと(とりあえずは)判断していますが、もしかしたら来季それをさせるかもしれません。
重要なのは選手の負担がどれだけかかるか・耐えられるかではなく、どれだけ起用するのが「普通」であるかという点なのです。
過去には400イニング投げさせるチームもあったのです。

大抵の選手の起用法はどのチームも似通っていて、すなわち一般的なセオリーの采配が決まっているため、
もし状況にそぐわない起用があってもノイズとして片付けるか、場合によっては監督の特色として再現すればいいだけなのですが、
サンプルが一人しかいない以上どれが「二刀流における普通の起用法」であるのかが判断できません。
そのため、とりあえずは「大谷選手の能力であれば先発で20試合程度登板、野手としては指名打者で400打席程度は立つ」ことを目安に実装しています。

成績シミュレーション

新機能のこれについて予め説明。
メイン画面

成績投入…設定した比に応じた成績を代入する(打席数は査定範囲内で最も高かったものを採用)
AUTO…下記2つから選択したほうの計算を常に行う
成績計算…その能力で残すと思われる成績を計算する
能力計算…成績から能力を逆算する
固定…上記3つの選択を自動で解除しない

救援投手は先発投手と扱いが違うのでチェックボックスに入れると救援投手用の計算が行われます。
なお、一括査定などでは投球回と登板数の比率から先発・救援を判断しています。

設定画面

今季~4年前…成績を代入する際にそれぞれの年数ごとの比率を設定
信用打席…信用打席数に達していない場合、査定能力*打席数/信用打席+現在の能力*(1-打席数/信用打席)で能力を算出します。
NPBのみ、一軍のみ…査定範囲をそれぞれ設定します。選ばなかった場合、一軍用に成績補正が行われます。
FIPベース…投手の変化球を防御率ではなくFIP(というかK%)から求めます。

いくつかやることが残っていますが次回の更新は土曜日あたりにするつもりです。
使用球設定についてですが、査定能力と組み合わせた場合の調整が間に合いそうにないのでデフォルト推奨としておきます。

2016年12月5日月曜日

次回更新予定その2

とりあえず変化球はこの形式に決まり。
表示する順は今は数値順ですが方向順でも並べられるようにするつもり。
旧式のものを残すかは未定。
プレイヤーが変化球を編集(ベースのスライダーやカットボールなどを編集or選手の能力を直接編集)できるようにするかは未定ですが、
もしそうなったときに旧式のものは邪魔なので。
成績は表示する量を増やしてみましたが、場所を変えたせいで視点を上下しなきゃいけなくなってちょっと見づらいかな~という気がしなくもない。

それとは別に、100段階にしたい特殊能力も多数。
例えば対左・右はミート・パワーを左右別に分けると現状より更にパラメータが増えすぎるので避けましたが、特殊能力を細かくするのはあり。
また死球避け系は3段階しかなく、暴投や与死球率に至ってはコントロール依存。
後者は制球を3つに分けて与四球・与死球・暴投から制球を表示みたいな感じにしようとも思いましたが最終的にはやめました。
この辺も細く設定できるようにはしたい。

それから、成長バランスもちょっと弄っていて、前はなんか面倒な式にしていて成長値についてもざっくりした説明しかできなかったのですが、今回からは経験値がたまったときに能力が上がる確率に変わりました。
プロスペクトのいわゆる素材型の選手を再現する際、成長値よりもピーク年齢に強く依存してしまう問題があり、以前からピーク年齢が早い選手ほど成長しやすく劣化を緩めるなど工夫はしていましたが、それもちょっと限界かなと思ったり。
OOTPの成長システムを調べたところ、PECOTAやZiPSで求めた成績予想を元にポテンシャルを割り出しそれに徐々に近づいていく・・・みたいなシステムらしく、すごく合理的なシステムだなあと改めて関心。

よくある画面の大きさの要望について。
だいぶ前に一回広げましたがやはり足りないと思う場面はあるのでいずれ広げたいです。
しかしその作業が糞面倒くさいのも事実。前やったときは何ヶ月かかけてやったので。
単純に解像度そのままでウィンドウ二倍とかならいつでもできますが。

2016年11月18日金曜日

次回の更新予定

Twitterでも言っていた通り、12月中には公開予定。
普通に引退選手追加しようとするとメモリ上限に引っかかるので難航。ていうかここを解決できたら常に悩みの種になりつつある選手データの上限もどうにかできます。
引退選手を実装するつもりでやってたのでコーチ・スカウトの入れ替えができずそれらの能力が空気化。
ドラフト指名選手履歴も引退選手と連動させたかったのですがやはり無理。
あと怪我絡みはもう一度練り直す必要がありそうですね。
ついでに、シーズンオフも0.01公開のときに短期間で作ったスパゲッティコードなんでいつか作り直したい。



それはそうと、変化球表示形式の改善案。
画像はイメージ。
実はこれ、某氏が最初に採用していて最終的にボツになったもののパク・・・オマージュ。
 これのメリットは100段階表示に対応してる点、球種が多くなってもしっとりとしていてそれでいてべたつかないすっきりとした見やすさが確保できる点、第二変化を二球種持つ投手(カーブ・スローカーブ・スライダー・スライダーなど)が作れる点などなど。
デメリットは市販の大手野球ゲームから離れたデザインになってしまいイメージをつかみにくくなる可能性が生まれる点、ミニ画面での表示が怪しい点など。
球種は上限8球種になりますが今までもそうだったので、方向の融通がきくようになった分むしろプラス。
ただしこれは今回のアプデに間に合うかは微妙。
まだ怪我人リストとかも作りたいので。
それと、最近のパワプロのように取得してない特殊能力は詰めて表示すべきかなあと。
選手能力画面の半分くらいは普段使わない無駄なスペースで埋め尽くされてることになるのはちょっと。
特殊能力自体、削除しても構わないものがほとんどなんですが、選手の個性付けに一役買ってる面もあるのでまあ。



今開発中のバージョンですが、各球団の詳細な成績データもある程度見られるようになったのでそれにあわせてちょっとだけバランスを弄りました。
具体的には二番打者の打力を下げました。
今まではOPS順だと4>3>5>1=2>6>7>8みたいな関係になっていました。
過去5年のNPBの打順別成績がこちら。


流石に打順を決めるときに2番打者より7番打者の打力を優先させるなんて、
現場ではそれが当たり前だったとしてもゲームでわざわざやらせたくはない。
なので結構難儀しました。

さて、打順は選手の能力・成績に応じて変えるため打順成績も采配如何で決まる部分が大きいのですが(そのため年度ごとで大きな差が出ない)、ポジション別の成績となると話は別です。
 強打の選手を一塁や外野に回したりするケースもありますが基本的には選手の能力次第なので、短期的なスパンで見れば遊撃の方が二塁手よりも平均成績が高かったり、捕手が高い打力を持つこともあります。
ゲーム内でも打てる捕手がたくさん出ることもあれば、打てない左翼手ばかりになることもあります。
そのあたりは長いスパンで見た調整をすべきではないかと。

2016年8月26日金曜日

先発の勝ち星が少ない

二軍戦のHRが少ない問題と並んで問題視している、先発の勝ち星が少ない問題。
とはいっても極端に少ないというわけではないですが。たまに最多勝が13勝とか12勝とかになってしまいます。
100年回してみたデータ。
saita.png

ちなみに過去20年の最多勝投手の勝ち星の数分布。
saita2.png

最多勝投手ごとではなく勝利数ごとにカウントしているので同時受賞は1回しかカウントしていません。
一応13勝で最多勝は40分の2回。ゲーム内での発生率はもうちょっと高いかな・・・
これよりサンプル範囲を広げると先発完投型の時代に寄ってしまうので限界。
ていうか20年前ですらリーグ完投数今の3倍とかですし。
MLBをサンプルに含めるのには起用・試合数の関係でもっと無理がある。

saita2.png
セパでも傾向に大きな違いは見受けられず。

・勝ち星を消される?
まず疑ったのは中継ぎが追いつかれまくって勝ち星を消されるパターン。
Kazmix Worldというサイトのデータによると、先発投手が勝ち投手の権利を持ったままマウンドを降りてその後追いつかれた割合は
NPB全体で2011年は0.146、2012年は0.164、2013年は0.182、2014年は0.185、2015年は0.144。
2011~2012は数字が低めに出ている可能性は否めないが、大体0.1台後半くらいのイメージ。
ゲーム内はというと同じく100年回してみた平均が1.78。うーん、そんなに高いとは言えない。
また、母数(勝ち投手の権利を持ってマウンドを降りた数)の方も年平均600↑で同じような数字に。
・先発が早く降りすぎ?
先発投手の平均投球回数は6回前後になるようにしているのでそんなに早くもないはず。
勝ちがついた試合の平均が7回超、負けがついた試合だと5前後という点も現実に近い。
しかし平均は平均でしかないので、最多勝を取りやすい投手は勝ちが付くまで投げ続けたりするのかもしれない。
完投が多いと勝ち星が付きやすいですし。
・継投の思考ルーチンに問題?
一番厄介なのが、中継ぎの継投がおかしいのが原因の場合。何せこれという解答がない上にデータも少ない。
とりあえず勝ちパターンの成績でも求めようと思い、
ここ何年かから先発に勝ちがついた試合・負けがついた試合の中継ぎの失点率を比較。
勝ち:1.77
負け:4.29
思いのほか明白に差がついた。そしてゲーム内で計算したところ大体同じような割合の数字に。
それもそのはずで、勝ちが付いた試合のデータは「勝っている局面で出てきて勝ちを消さなかった(抑えた)データ」なのに対して、
負けのデータは「負けている場面で登板して先発の負けが消えなかった(失点した割合が高い)データ」になってしまうため。
そうなるともはや起用法云々の話ではなくなってしまう。
しかし起用法や能力に左右されにくいということは、逆に言えば勝ちパターンで使う投手は
このくらいの成績を残せるのなら勝ち星を消されること無く安心して使えるというラインにもなりうる。
って失点率1点台のリリーフなんだから当たり前か。
逆に勝利を目指すという観点から見た場合失点率4.29より失点率の悪い投手を投げさせるのは意味がない。
サンプル範囲の全体の救援失点率が3.83なので1.12倍。リプレイスメント・レベルよりもややハードルは高め。
あくまで少ないサンプルからのデータで、それぞれの平均を割り出しただけですが。
今度は原始的なやり方で勝ちパターンの成績を求める。
各球団のリリーフの投球回数上位3人とそれ以外の中継ぎ成績の比較。
今回は面倒臭いのでデータは2014年のものだけ。
joui.png
この手の数字では当たり前になりつつありますが、上位3人は失点率<DIPSなのにそれ以外は失点率>DIPS、
被BABIPは上位3人<それ以外なんですね。
内容は良くても結果が伴わなければ重用されないということ。
実際にゲーム内で回したデータで計算してみたところ、やはりこのような比率となりました。
これだけで判断するのは早計ですが、AIが極端におかしな挙動をするということはなさそうです。


という、ここまでが先週までに下書きしてた内容。
しかし、年度ごとの投手データを見ているとなんとなくわかってきたような気がします。
おそらく理由は完投の減少。
2012年まで、1球団あたりの平均完投数はずっと10以上をマークしていてましたが、
2013年以降は7~8程度。今季も1球団あたり6.5完投なので、フルシーズンに換算すると8.07となります。
ゲーム内ではチームあたりの完投数が大体このへんの数字になるようにしているつもりです。
そして、記事の最初にサンプルをとった20年のうち17年は今より完投が多かった年のデータが含まれているのです。
試合数が130試合くらいの時代も含めてるんだからとんとんだろ、と思われるかもしれませんが、
10年前の2006年ですら15.75。今の倍です。
なお最近3年のNPBにおける完投数と勝利数の相関は0.691と結構高いものになっています(完投が多いピッチャーはすなわち長いイニングを投げる能力と失点を抑える能力を兼ね備えていることでもあるので、ちょっと詐欺っぽいですが)。
ちなみに防御率との相関はほぼ認められず、失点率とは-0.242でそれなり。対象を規定以上に限定しても同様の傾向。
つまり13勝前後の最多勝がたまに起こりうるのが現在のNPBであるという仮説が立てられ、ゲーム内でもそのようになっているのだと思われます。
根拠としては弱いですが、完投数が今の水準である2013~2015のうち2014年にも13勝の最多勝が生まれています。
ちなみに、ver0.301では全体的に完投数・投球回数を減らしているため、実験データより低めの数値が出る可能性があります。
ほとんどの試合で完投したり全然完投しなかったりと、スタミナ関係のバランスは時代ごとで変わるので、設定でそのあたりを変更できるようにするべき?

2016年7月1日金曜日

PennantSpirits ver0.30

セーブデータが巨大化しているため前よりダウンロードに時間がかかります。

追加したもの
・二軍戦および二軍オーダー設定・投手配置設定、二軍成績(左上の采配/○軍や○リーグ成績をクリックで切り替え)
・日別成績
・年度主要選手
数は少ないけどあれば嬉しい機能ではあるはず。

二軍戦を始め試合バランス調整は割りと投げてます。
次のアプデでミートやパワーの細分化を行うのでそれまで放置。データインポートや新人能力も同じ理由で次回以降へ。後回し。
投手の直球が弱い云々も後回しです。
あと二軍戦の成績編集できません、試合見れません。
二軍戦自体は現実の野球に近づけるためというよりは二軍戦成績などがあったほうが面白いだろうという認識で作ったものなので現実に即した形に拘るつもりはないです。
そのためオールスターやプレーオフもなし。
また、能力査定オフにしてテストプレイしたので推奨設定もオフです。これも次回システムを変えるつもりで放置してるため。
多分オンにすると二軍選手の能力が一軍選手の能力超えていくのであれなことになります。
二軍戦のおかげで全体的にやや重くなってます。
二軍戦のオンオフ切り替えは実装しない予定。二軍戦ありきのバランスにするため。

こっそり援護率、捕手別防御率、セーブ成功率なども追加。
色々復旧と追加をしたのでバグ多そう。報告お待ちしております。