サッカーゲームについて

俺が昔からやりたいと思っているものにはサッカーゲームがある。
まあ、昔からやりたいと思っているものなんて腐る程あって、育成ゲームやらタクティクスオウガみたいな戦術ゲームやら、信長の野望みたいな戦略ゲームなんかもやりたい訳だけど、サッカーゲームは一つの理想形として本当にすごい昔からある。一番最初に作ったゲームがサッカーゲームだったような気がするくらい昔からある。


コンピュータゲームを遊ぶ時の俺の評価基準の一つに、コンピュータが自分を驚かせてくれるってのがあって、サッカーゲームを作る場合にはサッカーゲーム内の出来事で驚けるくらい、歴史観のあるものを作りたい。
どういう事かというと、要はウイイレみたいに選手のパラメータを事前に決めるんじゃなくて、選手の出現、引退なんかが勝手にサッカーゲーム内で処理されていく感じで、実際のサッカーと同じように名選手が生まれては消えていく感じの事を追っていきたい。


で、細かい話になるんだけど、自分がコンピュータの生み出す結果に驚くためには、選手を生成する際に「100を上限としたパラメータ設定」等の上限値を設けたパラメータ設定だと無理なので、ソーシャルゲームの話と同じような感じだけど原則としてインフレを想定したパラメータ設定になる。
一般的なFWの選手のシュート力が100に対して、すごいやつは900超えてますとか。センターサークル付近で打っても決まっちゃうとか、そういうの。


この辺の驚きロジックをどう組むかは、一般的にやる1〜100の数値をランダムで振り分けるって感じじゃなくて、最初にベースの才能数値を設定して、その才能数値を10%の確率で加算し続ける、とかで書く。
こんなん。

function r(v, b) {
 v += Math.random() * b + 1;
 if (Math.random() <  0.5)
  return r(v, b);
 return v;
}
var base_sepc = Math.random() * 100;
var param = r(base_spec);

もうちょい簡単にやるとこう(何度繰り返すかをダイスA、一回の繰り返しでの最大数値をダイスBで決める)だけど、これだと理論上最大の数値が決まっちゃうので、色々やってみた感じ上限のない先述のやつのが楽しい。ただパラメータ数が多い場合にはバランスがよくなりやすいこっちのが相性がいいので、一般的なランダムと合わせて3種類くらい組み合わせる感じ。

function r(v, b) {
 var a = Math.floor(Math.random() * 100) + 1;
 var b = Math.floor(Math.random() * 50)+ 50;
 var ret  = 0;
 for (var i = 0; i<a; i++) {
  ret += Math.random() * b;
 }
 return Math.floor(ret);
}

んで、この初期パラメータで一回驚いて、さらに先述の歴史と組み合わせて、毎年怪我や老化などのネガティブ要素での能力低下や、トレーニング成果なんかでのポジティブ要素で能力の上下があったりして、時々変な怪物が出たりするっていう状況を作りたいと。
でもサッカーのようなゲームでインフレバランスってすげー難しくて、元々サッカーゲーム自体が難しいのにインフレバランスを組み合わせるってのが結構大変。シュート力強すぎてどこから打っても決まっちゃうとかね。キャプテン翼みたいなスーパーマンを許容する設定だったらそれもありなんだけど、ある程度リアル志向で行くと難しい。


選手の自動生成については次のエントリでもう一つ書くけど、名前の自動生成システムってのがちょっと絡んでくる。
名前で驚く必要はないけど、最低限やるためにはどうしてもある程度ね。


もう一個、前は自分のロールを決められるという事もしたいというのにこだわってた。
選手個人になる、監督になる、神(全選手操れる)になる、と。
選手個人になる、については、11人分別々のユーザが操作して1チーム作るって事も出来ていいと思う。
で、昔はこだわってたんだけど、インフレバランス志向の場合は1人プレー用に特化した方が面白いので、11人別々のはインフレバランスではないものでやった方がいいのかもしれない、っていうか11人別々はFIFAがもう実現してるし、買ってきてもいいんじゃねーのと。




この企画については多分最後の最後にやると思う。
完全に俺が俺のために作る娯楽なので。やるなら完全無料のフリーゲームにすると思う。
死ぬまでには、作っておきたい。