Stormworks 砲弾仕様まとめ
1. 物理モデル(全砲弾共通)
1-1 抗力(空気抵抗)
ゲーム内は 速度に比例する線形抗力 で、毎ティック次式を適用します。
v_new = v_old × (1 − k)
k… 減速率(自己抗力)。単位は [/tick]。大きいほど早く減速する(高度では変化しない)
1 秒後に残る速度の割合:
(1 − k)^60
1-2 重力
砲弾の重力は 一定ではなく、高度 h が高いほど弱くなります。
g(h) = 30 × exp(−1/60 × h/1000) [m/s²]
h… 高度 [m](地表 = 0)- 地表(h = 0)では 30 m/s² ですが、高度が上がるにつれて指数関数的に小さくなります。
1-3 風
風による加速度 a_wind [m/tick²]:
a_wind = W × p(h) × (WindInf / 60)
p(h) = (((44.33 − h/1000) / 11.89)^5.256) / 1013
W[m/tick²]p(h)… 高度に応じた空気密度の変化を表す係数。高度が高いほど小(上式)WindInf… 砲ごとの風影響度(§2-1 の表)。小さいほど風の影響が小/60… m/s → m/tick への換算
減速率 k は高度で変化しません。砲弾の高度要因は、この風の項と重力(§1-2)に現れます。
1-4 消滅条件
- 寿命(lifeSpan)を超えると消滅します。
- 小口径は速度がおおよそ 50 m/s 未満 でも消滅しやすい。
- Rocket / Battle / Artillery / Bertha は、水中以外では 50 m/s 未満でも寿命まで残る。
2. 砲一覧(正規表)
射程の「目安」は水平〜45°間接射撃の概算です。実効射程は高度・風・消滅条件で変わります。
2-1 基本パラメータ
| Type | 砲 | 初速 v [m/s] (m/tick) | 減速率 k [/tick] | 寿命 [tick] (s) | WindInf | 射程目安 |
|---|---|---|---|---|---|---|
| 1 | Machine Gun | 800 (13.333) | 0.025 | 120 (2.00) | 0.15 | 約 500 m |
| 2 | Light AC | 1000 (16.667) | 0.02 | 150 (2.50) | 0.135 | 約 750 m |
| 3 | Rotary AC | 1000 (16.667) | 0.01 | 300 (5.00) | 0.13 | 約 1.5 km |
| 4 | Heavy AC | 900 (15.000) | 0.005 | 600 (10.00) | 0.125 | 約 2.5 km |
| 5 | Battle | 800 (13.333) | 0.002 | 1500 (25.00) | 0.12 | 約 4.5 km(45°間接) |
| 6 | Artillery | 700 (11.667) | 0.001 | 2400 (40.00) | 0.11 | 約 6.5 km(45°間接) |
| 7 | Bertha | 600 (10.000) | 0.0005 | 2400 (40.00) | 0.105 | 約 7.5 km(45°間接) |
| 8 | Rocket Launcher | 約 50(射出初速) | 0.003 | 3600 (60) | 0.125 | 約 2.5 km |
Rocket は発射後に 加速区間(約 600 m/s² × 1 秒) があるため、「初速一定+抗力」の式(§5)は適用できません。加速を分けて積分してください(§2-2 参照)。
2-2 連射・使用弾・消滅
| Type | 砲 | 連射 / 備考 | 使用弾 | 消滅 |
|---|---|---|---|---|
| 1 | Machine Gun | バースト 900 rpm(4 tick/発) | Kinetic / AP / Incendiary | 約 50 m/s 未満で消滅しやすい |
| 2 | Light AC | バースト 450 rpm / 持続 約 319 rpm | Kinetic / HE / Frag / AP / Incendiary | 約 50 m/s 未満で消滅しやすい |
| 3 | Rotary AC | バースト 1800 rpm / 持続 約 814 rpm、スピンアップ約 0.5 s | Kinetic / HE / Frag / AP / Incendiary | 約 50 m/s 未満で消滅しやすい |
| 4 | Heavy AC | バースト 約 112.5 rpm / 持続 約 99 rpm | Kinetic / HE / Frag / AP / Incendiary | 約 50 m/s 未満で消滅しやすい |
| 5 | Battle | 約 20 発/分 | Kinetic / HE / Frag / AP / Incendiary | 水中以外は低速でも寿命まで残る |
| 6 | Artillery | 約 7.7 発/分 | HE / Frag / AP | 水中以外は低速でも寿命まで残る |
| 7 | Bertha | 約 3.1 発/分 | HE / Frag | 水中以外は低速でも寿命まで残る |
| 8 | Rocket Launcher | 1 基あたり 1 発/秒/射出初速 約 50 m/s + 加速 約 600 m/s² × 1 秒/ダメージ半径 約 2.25 m(9 ブロック) | HE 相当 | 水中以外は低速でも寿命まで残る |
Rocket は加速モデルのため、§5 の「初速一定+抗力」式は不適用です。
3. 弾薬タイプ(弾道は同じ、着弾効果だけ違う)
弾道(初速・抗力・寿命)は砲で決まり、弾種では変わりません。
3-1 弾種ごとの効果
| 弾種 | 効果の要点 |
|---|---|
| Kinetic | 着弾点中心の直接ダメージ。貫通なし(または弱い) |
| High Explosive (HE) | 広い範囲ダメージ |
| Fragmentation | 範囲ダメージ+子弾を散らす。隙間貫通しやすい |
| Armor Piercing (AP) | 速度に応じてブロックを貫通 |
| Incendiary | 範囲ダメージ+発火判定 |
3-2 砲別の使用可能弾種
| 砲 | HE | Frag | Kinetic | AP | Incendiary |
|---|---|---|---|---|---|
| Machine Gun | × | × | ○ | ○ | ○ |
| Autocannon 類 | ○ | ○ | ○ | ○ | ○ |
| Battle | ○ | ○ | ○ | ○ | ○ |
| Artillery | ○ | ○ | × | ○ | × |
| Bertha | ○ | ○ | × | × | × |
| Rocket | HE 相当 | — | — | — | — |
3-3 当たり判定
砲弾の当たり判定は 点 です。
3-4 HE(榴弾)の加害範囲
| 砲 | 加害範囲(半径) | 加害範囲(m) |
|---|---|---|
| Light AC | 3 ブロック | 0.75 m |
| Rotary AC | 3 ブロック | 0.75 m |
| Heavy AC | 7 ブロック | 1.75 m |
| Battle | 11 ブロック | 2.75 m |
| Artillery | 16 ブロック | 4.00 m |
| Bertha | 16 ブロック | 4.00 m |
(Rocket Launcher は別途ダメージ半径 約 2.25 m = 9 ブロック、§2-2 参照)
3-5 AP(徹甲弾)の貫通条件
AP 弾は フィジックス(F2キーで確認可能)を貫通 します。
貫通時の減衰
- 貫通すると、そのたびに 弾の貫通力(速度)が減衰 します。
- 減衰の大きさは、貫通したブロックの「密度」 によって大きくなります。
また、巨大なマイコンブロック は、実際より かなり大きい密度として計算 されるため、特に有効です(見た目よりずっと強力な「壁」になります)。
4. 手持ち武器(参考)
手持ちの減速率 k は車両砲ほど整理されて公開されていません。車両砲の表を流用しない方が安全です。
| 武器 | 初速 [m/s] | 寿命 [tick] | 備考 |
|---|---|---|---|
| Pistol / SMG / Rifle | (車両砲より低速) | 300 | 車両砲と同じ重力 30 m/s² |
| Speargun | 80 | — | 水中用途 |
5. 計算式チートシート
抗力だけ(水平、重力なし):
v(t) = v0 × (1 − k)^t -- t は tick
x(t) = v0 × (1 − (1 − k)^t) / k -- k ≠ 0、変位は m
重力あり・連続近似:
連続近似では、毎 tick の離散的な減衰 v_new = v_old × (1 − k) を、指数関数の継続的な減衰として扱います。このときの連続減衰係数を k_base とします(単位は [/s])。
k_base = −ln(1 − k)
(k が小さいときは k_base ≈ k で近似できます。)
dv/dt = a − k_base × v
v(t) = v0 × e^{−k_base t} + (a / k_base) × (1 − e^{−k_base t})
a には重力と風を入れます。時間 t は tick です。
よく使う換算:
v[m/tick] = v[m/s] ÷ 60
g[m/tick²] = 30 ÷ 3600
寿命[s] = lifeSpan ÷ 60
残速比(1秒) = (1 − k)^60
6. 付記(XML で砲を調整する場合)
XML で砲の長さを変えると、初速が長さに比例して変化 します。
- 砲の長さを 2 倍 にすると初速は 2 倍
- 砲の長さを 3 倍 にすると初速は 3 倍
同様にダメージも変わる場合があります。その場合は表の初速を実測値に差し替えてください。減速率 k は通常そのままです。