ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

ACVDのリロードタイム計算式を解析してみる

この記事は

 ACVDのリロードタイムよくわかんないよねということで調べてみましたという記事。内容は検証から求まったパラメータまで。僕だってゲームのエントリくらい書きますよ。

検証した環境

 ACVD PS3版 レギュレーション1.02

まずは何を確かめるのか

 ACVDで武器のリロードタイムは腕部の射撃安定性によって短縮されるという話がある。さらに、リロードタイムの長い武器はその恩恵を大きく受けるという話がある。頭部の安定演算性能はきっと関係しないはず。
ということで

  1. 射撃安定によるリロードタイム短縮効果をプロットするとどうなる?(直線? 曲線?)
  2. 射撃安定による短縮効果は元々のリロードタイムによって変化する?

の2つをまずは検証する。

検証

以下の方法で検証する

  1. 武器を固定して射撃安定を変えて一定弾数を撃ち切るのに掛かる時間を測定
  2. 腕部を固定して武器のリロードタイムを変えて一定弾数・・・

でそれぞれ行う。時間測定はWEBアプリのストップウォッチでわりとアバウトに。
 数値を載せるのが面倒なので結論だけいうと

    1. 射撃安定と実リロードタイムの関係をプロットすると直線が出てきた
    2. 元々のリロードタイムが長い方がリロードタイム短縮の恩恵が大きくプロットすると直線が出てきた

なので、元リロード時間,射撃安定,実リロードを3次元グラフにプロットすると平面が出てきそうだ。ということは平面の方程式でフィッティングしてやればうまく行きそう。

式を立てる

式自体は

  • f(x,y)=a*x+b*y+c
  • f(x,y) : 実リロード時間
  • x : パラメータのリロードタイム
  • y : 腕部射撃安定性
  • a, b, c : 求めたい係数

で大丈夫そう。
この係数a,b,cを数値解析的に求めればOK

係数を求める

 gnuplot先生に頑張ってもらう。一応書いたスクリプトと食わせたデータは晒しておく

#! /bin/bash

gnuplot -p <<EOF
f(x,y)=a*x+b*y+c
fit f(x,y) 'sample.dat' using 1:2:3:(1) via a,b,c
splot f(x,y), 'sample.dat' u 1:2:3
EOF

読み込ませたデータは

77	199	53
77	152	65
77	140	69
77	110	74
27	188	21
27	152	25
27	140	27
27	110	29
18	199	14
30	199	21
65	199	38
98	199	67

一行目から順番に元リロードタイム,腕部射撃安定性,実リロード時間。

結果

 求めた結果はこちら

  • f(x,y) = 0.735245*x-0.197901*y+36.2692

プロット結果を見た感じだと大体合ってる(適当)

反省とか

 場当たり的にその場のノリで式を求めたので測定の仕方が適当すぎる。
改良点としては

  • キャプチャボードとか使ってフレーム単位で正確に時間を測定する
  • 平面のフィッティングをする上でそんなに重要じゃなさそうなサンプルが多い

ということで、あまり変わらない労力でもっと正確なパラメータ求まりそうですね。

感想

 げーむにまじになっちゃってどうすんの