2017年10月25日水曜日

生存報告と開発休止

生存報告。
とりあえずここで一度、無期限開発休止(終了ではなく)宣言をします。

作る意欲がわかなくなるのは過去にも何度かありました。そのたびにこのゲームをぼんやりとプレイして選手の成績などを見ていると勝手に製作のモチベーションが上がってきていたものですが、今回はそれが希薄です。

ずっと期待してプレイしてくれていたプレイヤーの方や今は亡きライアル君には申し訳ないですが、思わせぶりな状態で放置して期待を持たせ続けるのはもっと申し訳ないので。
バグへの対応や選手成績データの更新は行おうと思っていますが、やる気が起きるまでは新たな機能を実装したり仕様を大幅に作り変えたりはしないつもりです。
モチベーションが戻ったら作ろうと思っているもの。
  • トレード
    一度実装はしていたのですが難点が多く、AIを組み直して実装するつもりでしたが未だそこに至らず。
  • ドラフトモード
    今はなんJでやってるのかは知りませんが、ドラフトで実在選手を1チーム分指名してパワプロなどを使って編成しオートペナントを回すあれ。
    指名表を作ったりくじの手間を省いたりするだけでなく、「総年俸○万以下」「1球団○人まで・1リーグ○人まで」「5歳ごとにグループ分けしてそれぞれ人数制限」など、
    特殊なオプションを付けて指名選手を選ぶのが簡単になる利点があったり。
    これは結構前から構想があって、タイトルの未定のところから飛べるようにするつもりでした。

  • 過去の年代再現
    要はOOTPのヒストリカルモードのNPB版。
    ただし、OOTPがいずれNPBやKBOなどにも対応するつもりらしいので、このゲームでわざわざ実装する必要あるのか?と思ったり。
  • 守備関係の作り変え
    UZRを実装してWARを表示できるようにしたい。

この数年の間で何度も製作の手を止めたり空白期間があったりした中でよく作り続けられたなと我ながら驚き。
始めたての頃はプログラミングなんて初心者同然でコードも無茶苦茶でした(その辺りに書いたスパゲティコードが後々にまで悪影響を及ぼし続けてますが)。


製作に対する意欲が落ちてしまった理由はいくつかあります。

このゲームを作り始めて学ぶことは多かったのですが、創作欲求が湧いてもペナスピにつきっきりなため他のものに手を出しにくい状況が続いていて、今回これから少し離れて別のものに触っているうちにこちらを作る気力が失われていきました。 *1

また、このゲームの機能を拡張していってもお金が貰えるわけではなく、コネクションが広がるわけでもなく、かと言って今後に活かせる新たな経験が積めるわけではない、惰性による創作がメインになってしまうため、生産活動をしているはずが実質的には消費活動に向いてしまっているのが辛い。
「ゲーム制作初心者は大作を一つ作るのではなく小さいものをたくさん作れ」という言葉はこのゲームを作り始めてだいぶ経ってから知ったのですが、本当にその通りだと思います。

それから2年くらい前にあったデータ消失も痛かった。定期的に開発中のネタをTwitter で投下していけばプレイヤーの反応も見られるしRTなどでこのゲームを知りプレイしてくれる人が増えるのではみたいな淡い期待を持ちつつ、
実際モチベは最高潮に達していましたが、登録して2ヶ月ほどでアレが起きたので一気に色んな面で萎えてしまいました。
そこからどうにか元の形に戻しましたが、ver0.40は最後の力を振り絞ってやりきった感が強いです。


最後に、結構前からよく言われてた「キャッチャーが弱い」について。
これはいろんな仕様が合わさった結果のものです。
☆システムは以前ツイッターで説明した通り野手の場合「攻撃による得点生産力+守備による失点抑止力」の合計となっています。

ところで、NPBにおける捕手の平均OPSをご存知でしょうか。
過去10年で見た場合、大体リーグ平均マイナス.110くらいになるようです。リーグ平均OPSが.700なら捕手は.590。全体的にかなり低く、規定打席数に達する選手もごくわずかです。

ゲーム内の初期選手で言うとこれくらいです。思っていたよりずっと低い打撃能力だったのではないでしょうか。
そのためドラフトなどの初期能力は低めであり、他のポジションと同じように成長させてしまうと打ちすぎてしまうのでそれもかなり抑えてあります。
正捕手のOPSが安定して.800を越えようものならそのチームは常に優勝争いを繰り広げられるほどのすさまじいアドバンテージを稼ぎ出します。

もちろん打撃だけでなく守備も大事だろうという見方もあるでしょうし、実際ゲームでも守備型捕手を獲得するよりそこそこ打てる選手は捕手にコンバートしたほうがずっとプラスだったため、
最低レベルの捕手能力の選手を正捕手に据えると大幅に失点が増えるようにはしました。
ですが「打てるけど守備が残念な捕手」と「打てないけど守備に定評がある捕手」とでは守備貢献度において(打撃ほど)大きな差が生まれません。
この辺も盗塁阻止の捕手の影響力に疑問がある点やリード力の判別が難しい点などのセイバーメトリクスの研究結果に反して差が出やすくしたつもりですが、それでも守備の影響力はたかが知れています。

それらの仕様が合わさり、打力は全体的に低めで安定しており、守備の影響もさほど大きくないために突出した選手が生まれにくいという結果になっているのではないかと思います。

*1:ちなみに今触っているのは野球とは全く関係の無いジャンルです。当ブログなどでもいずれ扱うようになるかもしれません。このゲームを作る過程でセイバーメトリクスなど統計的な視点における野球の見方やデータの扱い方についてたくさん勉強しましたが、その反動で野球関係のゲームはもう良いだろうと…
あと、ゲームに関係なく野球関係の記事は書きたいと思っています。どうしてもゲームを作りながらだとそういう記事が書きにくかったり。

2017年8月3日木曜日

PennantSpirits ver0.41

更新。
来週中には公開しますといいながら全然時間がとれずかなり時間が経ってしまいました。
オフの挙動がおかしかった部分など不具合の修正がメイン。
忙しいのは相変わらずなのでしばらくは同じような状況が続きそう。
アップデートは0.40以降を使用中ならpennant.exeを上書き、それ以前なら 0.40を介してアップデートしてください。

2017年6月18日日曜日

投手のHR/FBについて

以前2軍戦のHR云々の頃に日本語で投手のHR/FB(HR/OF)について調べてましたが、
その時は全然出てこなかったので仕方なく英語の記事を探しました。
するとあっさりFanGraphsで出てきました。

http://www.fangraphs.com/fantasy/pitcher-batted-ball-distance-correlation/
http://www.fangraphs.com/blogs/comparing-fips-and-xfips-using-batted-ball-distance/

Google翻訳にぶち込むだけの簡単なお仕事。

結論から言うと、「フライボールの飛距離は投手が関与できる」。
DIPSの理論で言えば、HR/FBは年度ごとの相関が少ないので外野フライから一定の本塁打数を見込んだxFIPこそ投手の実力とされてきましたが、
100%そうとは限らないということです。
感覚的にも、守備の影響をもろに受けるBABIPと違って球以外には打者と風くらいしか影響を受けないので投手の力がある程度反映されてもおかしくはないと感じたり。
ただしNPBでこの理屈が使えるかどうかは不明。
個人的にはMLBの0.308という相関より高い数値になるのではと予想しているのですが、投手ごとの全外野フライの飛距離データなんて持ってないので…

もし投手の力で飛距離が変わるとしたら、そういったパラメータを追加することで
二軍戦の本塁打数が少ない問題や投手のHR%の年度相関が低い問題などが解決する可能性があります。

2017年6月11日日曜日

PennantSpirits ver0.40

更新方法

過去のものと同様、ver0.313のdatフォルダの入っているフォルダに0.40converter.exeファイルを放り込んで実行すれば変換されます。
不具合が起きるかもしれないので大事なデータの場合は要バックアップ。
後はpennant.exeとpic.penaファイル、それからpast_filesフォルダを上書きコピーするだけ。


セーブデータが肥大化した関係で配布データからdat1、dat2フォルダをカットしました。
起動時にそれらがない場合defoフォルダをコピーするようになっているので、初回の起動は通常より時間がかかります。

実在選手の顔ファイルはface_inportファイルで配布しています。
使い方はホームページ参照。

追加したもの

多すぎて書ききれませんがとりあえず全体的なUIの改修、試合ログ追加などを行いました。
一部機能は削ったり一時的に削除してたりします。

追記

0.401を公開しました。
0.40のデータを使っている場合は該当フォルダのrecord.datとrecord_2.datを削除してください。

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割くらい。
具体的には、今までは開きたい画面にたどり着くまでに深い階層に潜っていかないといけない場面があり
(例えば歴代タイトル受賞者を眺めたいときは成績→歴代→歴代表彰タイトル→タイトル選択といった具合)、
構造を把握しにくい問題がありましたが、今回はそれぞれのページへのアクセスを直感的かつ簡単に行えるようにしました。
表示しているリーグやチームで色が変わるのは能力画面と同様。
全体的にフラットデザインっぽい感じにはしてますが、
昔ちょっとやろうとしてたなんちゃってとは違い結構見やすさを意識しているので、
以前よりは全体的に見やすくなっているのではないかと思います。

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






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