2033年4月3日日曜日

PennantSpirits

PennantSpiritsホームページ
http://pennantspirits.web.fc2.com/
最終更新:ver0.07くらい

公式Twitter
https://twitter.com/PennantSpirits

2017年3月31日金曜日

デバッガー募集

ここのところはずっと選手の成長システム周りを弄っています。 将来性を絡めた調整も難しく、以前の練習システムの存続も怪しい。
かなり難航しています。

次回の公開は6月あたりが目標。
いつもは公開して数日の間に報告されたバグを修正し0.X1として再度公開しています。
が、今回は一部の人にだけ仮のものを配布しバグを報告してもらうデバッガー方式を取りたいと思っています。
何故このような方法を取るかと言うと、
  1. 今までの方法だと公開してからしばらくの間バグ報告待ちで製作が止められてしまうため。正式公開は一段落ついたところでしか行なえませんが、製作しながら仮公開したものをバグ報告してもらえれば作業の手を止めなくて済む。
  2. 公開してからバグ報告待ちだと、バグを探すのを目的としてプレイするのに比べてプレイ人数は多いもののバグの発見頻度・報告頻度が少ない点。それまでの仕様を知らずにバグだと思って報告するみたいな無駄になるケースも多い。
  3.  今回はアップデート内容の規模が大きすぎるので、バグ報告→バグ対応→バグ報告→バグ対応のループを延々繰り返すことになりかねない点。
形式的には鍵付きでゲームを上げてしてそこからダウンロードしてもらって、どこかのファイル共有サイトかアップローダーを使ってバグ内容と再現するセーブデータをアップしてもらう感じをイメージ。
この方式で問題になるのはやはり協力者がいるかどうか。
フリーゲームなので報酬は出ませんし、細かい仕様書も用意出来ないので今までのバージョンをプレイして多少なりとも仕様を知っている人だと捗ります。
別にプロのデバッガーと違って細かい挙動を完璧にチェックして回る必要はないですが、楽しむためのプレイではなくデバッグの為のプレイをしてくれる人が望ましいです。
例えば特定の極端な条件でプレイするとある場所で固まるみたいな。

仮公開期間は一週間くらいになると思いますし、それもしばらく先のことですが、もしデバッガーになってもいいよって人がいればこの記事のコメントなりTwitterなりでコンタクトをくれると嬉しいです。




現状実名査定してくれる人もいないのでデ バ ッ ガ ー 0 人になりそうな予感も。

2017年3月2日木曜日

試合画面

定期的な報告。
ほとんど手を加えてこなかった試合画面の改良に着手。簡単な試合ログも表示するようにしました。




今までは試合結果はその日のものしか記録していませんでしたが、
デザイン変更に合わせて年内の全試合分の成績を記録し後から見られるようにしました。

yahooスポーツのように試合の選評も作ろうかと思いましたがまた今度。

それから0.20くらいからスキップが重くなっていた問題を解決。
それ以前は開幕からシーズン終了まで30秒弱で終わっていたのが、
今では1分以上かかってしまう。
原因を突き止めたので改善したところ、以前と同じくらいの30秒弱程度に戻りました。
ただ自分のPCではそうだっただけで、スペックの落ちるPCだとやはりかなりもっさりしたりするかもしれないので、
たまには別のPCで動かすことも必要かもしれないですね。

2017年2月18日土曜日

NPB成績予測システムPESpTA(β改)

以前ツイッターでデータ分割の目的が2つあると言いました。
一つは選手データを大きく取ることで引退選手を記録できるようになること。
一応普通にプレイしてれば50年程度は残るであろう5000〜6000人くらいを保存上限にし、それを超えると古い選手から削除されるように。
これでドラフト履歴や監督コーチ設定などを使えるようになりますが、このへんは他にも作り直したい部分はあり時間がかかるかも。

そしてもうひとつはと言うと、ずばり過去のNPBデータを読み込めるということ。
これを活かして引退した実在選手を監督コーチに出したり、過去の時代を再現ごにょごにょ。
とは言え二軍成績やUZR、BattedBallはもちろんのこと、守備イニングすら残っていないので厳しい面もあったり。

それで、自分がやりたかったのは、成績予測システムを導入して選手の成長を左右させるという感じのもの。
こうすれば主観で「成長や劣化が早すぎる(遅すぎる)」と感じるような部分がなくなる。
自分でプレイしてても、2年目でもFIP2点台後半だったのに年々良くなっていって8年目くらいでFIP1点台連発するスターターがいたりするのを見てると、
もうちょっと成績や能力に変動があってもいいんじゃないかと思うので。

そこで2リーグ制以降に一軍出場した全ての選手(6000人弱)の成績をかき集め、類似選手から成績を推測するPECOTAのようなものを組み上げました。
身長体重のデータが手に入らなかったのがかなり痛く、今のところPF補正がかかっていませんが、それ以外は本家に近いシステムになっています。
本家にない要素もあり、そもそも元データがNPBということもあって似て非なるシステム、PESpTA(読めない…)といったところ。
文章だけではピンとこないと思うので記事の最後に2016年に一軍出場機会のあった選手の2017年成績予測を置いておきます(球界を去った選手も含む)。
ゲーム内でテスト用にやってみただけですし、精度を上げるための調整なども全然です。
ツッコミどころなど満載ですが勘弁してください。
(あくまでゲーム内で主観を排除した成長アルゴリズムを作るためのシステムだから精度はそれほど気にしていないという言い訳を使いつつも、いざ的中するとドヤ顔できる神スタンス)
それで一回試した感じだと、やはり12球団分の成績予測をするとなるとかなり重い。10秒ほど固まります。
でも一年に一回やるだけなので、開幕前の「しばらくお待ちください…」の間でまとめてこなせばいいかな。
重くなるのは確かなのでゲーム内に導入できるかどうか絶妙なライン。
一応別の成績予測システムの構想もありますしこれからです。
ただこのへんばかり作り込んでいると「NPB成績予測サイト PennantSpirits」みたいになっちゃうんで控えめにしておきますが。

重いといえば、昔のバージョンを回すとびっくりするくらい軽いので、
変なところでたくさん余計な処理している可能性があります。
そこらへんも時間があれば改善したいです。

(2/21 出場機会の考慮が低すぎた問題などを改善して再度計算したものを掲載)
打率ランキング(100打席以上)



防御率ランキング(50イニング以上)


全選手(CSV)
http://ux.getuploader.com/pennantspirits/download/160/PeSpTA.csv

2017年2月1日水曜日

デザイン変更

月初めなので進行報告をば。
画面が大きくなったので情報量が増え、UIも扱いやすいように変更しています。
レイアウト変えるだけならそんな時間かからないですが、
そっちの面でかなり頑張ってるので 1ヶ月で進捗3割くらい。
具体的には、今までは開きたい画面にたどり着くまでに深い階層に潜っていかないといけない場面があり
(例えば歴代タイトル受賞者を眺めたいときは成績→歴代→歴代表彰タイトル→タイトル選択といった具合)、
構造を把握しにくい問題がありましたが、今回はそれぞれのページへのアクセスを直感的かつ簡単に行えるようにしました。
表示しているリーグやチームで色が変わるのは能力画面と同様。
全体的にフラットデザインっぽい感じにはしてますが、
昔ちょっとやろうとしてたなんちゃってとは違い結構見やすさを意識しているので、
以前よりは全体的に見やすくなっているのではないかと思います。

 それから、一軍・二軍の昇降はプロスピのようにオーダー設定や投手配置画面と統合。
ただ選手をずらっと並べて入れ替えするより、その選手のオーダーでの位置を考えながら昇降するほうがずっと使いやすく合理的だなあと思っていたので。






あと、試しに選手の顔写真データを読み込んで使用するシステムを実装。
これがあるのとないのとではやっぱり全然違うんじゃないでしょうか。
架空選手をどうするかは今のところ考えてないです。
真っ先に思い浮かぶのは顔のパーツ画像をたくさん用意して生成時にランダムに組み合わせるみたいな感じですが、
それはそれで面倒なうえ、実在選手と混じったときに二次元・三次元の差で違和感が生まれるという問題も。

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%)から求めます。

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