Top > 計算式

計算式

Last-modified: 2017-03-15 (水) 19:58:28

各種計算式 Edit

Math of Freecivより転載。

※Freecivのバージョンの違いにより計算式が異なる場合があります

スコア Edit

用語集のスコアを参照してください。

統計 Edit

人口 … 全都市の人口の合計(ビューに表示される値です)
(注意: ゲーム終了時のスコアタブに表示される人口は、全都市の市民の数 * 1000です。都市画面上部やビューに表示される人口ではありません。)
国土面積 … 国境内のタイルの数(湖・海・外洋タイルを含む) * 1000
入植面積 … 食料・シールド・交易など何かを産出しようとしているタイルの数(よって都市タイル自体も含みます) * 1000
(注意: ただし、湖・海・外洋は前述や後述でのタイル数に含まれず、更に何かを産出しようとしていないタイルであっても、その上に自国のユニットが居る場合はタイル数に含まれます)
研究速度 … 全都市から産出している研究ポイントの合計
識字率 … 各都市の人口が受ける研究パーセンテージボーナスを全都市で計算し、その平均(各都市について最大100%で計算します。例えば、Classicルールセットにおいて全都市に図書館を置くと識字率は100%になります。人口は都市画面上部に表示される値です)
生産物 … 全都市から産出している浪費分を引いた後のシールドポイントの合計
交易 … 全都市から産出している汚職分を引いた後の交易ポイントの合計
兵役 … 生存している全ユニット数(NonMilフラグを持つユニットを除きます) * 5000 / (10 + [全人口 / 1000])です。(人口はビューに表示される値です)
公害 … 全都市の公害の合計

上位5位の都市 Edit

上位5位の都市の決め方は、市民の数 + 大不思議の数 * 5の多い順です。

世界の○○報告 Edit

初回の報告は20ターン目で発表され、以降は20〜39ターン毎に発表されます。
発表される報告データは、次の報告発表ターン数によって決まっていて、このターン数を4で割った余りが…
0なら…幸福((幸福市民数 - 不幸市民数) * 1000 / (1 + 総市民数) の多い順…ただし不幸市民数に怒った市民は含まれません)
1なら…金持ち(所持する金 の多い順)
2なら…先進(技術数 + 先端技術数 の多い順)
3なら…軍事(生存している全ユニット数(NonMilフラグを持つユニットを除きます) の多い順)文明が発表されます。
なお、このランキングを決定するための元データは、発表1ターン前のものを用います。

タイルの出力 Edit

タイルの生産物には三種類の出力がある。食料、シールド、交易、がそれだ。任意のタイルの出力計算は次のようになる。

  1. 地形タイプの基本出力をベースとする →地形一覧
  2. 特別資源があれば、この出力を加算する
  3. 地形改善のボーナスを加算する:
    • タイルが灌漑済み(都市の真上のタイルもこれに該当)であれば、食料にボーナスを追加
    • タイルが鉱山化してあれば(砂漠、丘、山が対象)、シールドにボーナスを追加
    • タイルに道があれば(草原、平野、砂漠が対象)、交易にボーナスを追加
    • タイルに川があれば、交易にボーナスを追加
  4. タイルに鉄道が敷かれていれば、鉄道ボーナスをシールドに追加 (デフォルトのルールセットでは50%(端数切り捨て))
  5. 港(食料+1)、海上プラットホーム(シールド+1)があればポイントボーナスを追加
  6. タイルに何か出力があり、その出力がボーナス享受条件を満たしていて、都市が祝祭状態であれば、"Output_Inc_Tile_Celebrate"のポイントボーナスを追加 (例えば君主制や共産主義では交易ボーナス+1)
  7. タイルに何か出力があり、その出力がボーナス享受条件を満たしていていれば、"Output_Inc_Tile"のポイントボーナスを追加 (例えば共和制や民主主義での交易+1ボーナス)
  8. "Output_Per_Tile"のパーセントボーナスを追加 (スーパーマーケットや高速幹線道路)
  9. "Output_Penalty_Tile"の影響で出力が1ポイント差し引かれる (専制政治や革命中の、2を超える出力があるタイルにかかるペナルティ)
  10. 公害で汚染されていれば、汚染ペナルティ (デフォルトのルールセットでは50%減少(減少量は端数切り捨て))
  11. 核で汚染されていれば、核の灰ペナルティ (デフォルトのルールセットでは50%減少(減少量は端数切り捨て))
  12. 都市の真上のタイルであれば、最低保証値を追加 (デフォルトのルールセットであれば 1/1/0)

都市の出力 Edit

都市は6種類の出力を生産する。食料、シールド、交易、金、贅沢、科学である。任意の一都市での出力計算は次の通り。

  1. タイルで労働している市民達、もしくはスペシャリストになっている市民達から、基本市民出力を得る
  2. 都市が交易路を持っていれば、交易によって得られるボーナスを追加
  3. 都市が人頭税を支払っていれば(civ2ルールセットの原理主義など)、人頭税の金を追加
  4. 浪費と汚職の計算
  5. 交易に税率を適用し、金、贅沢、科学を得る
  6. 都市効果ボーナスを適用(例えば工場からのシールド50%ボーナス、図書館からの科学100%ボーナスなど)

都市製造物の購入費 Edit

都市で生産しているユニットや建造物の購入費の計算法について。

T
製造完了までに必要な残りシールド
C
製造に必要なシールド (前回までの貯蓄されたシールドが無い状態)
作りかけの場合の
製造物購入費
ゼロスタートでの
製造物購入費
ユニットの場合2*T + (T^2 / 20)4*C + (C^2 / 10)
都市建築物の場合2*T4*C
不思議建築物の場合4*T8*C

「ゼロスタートの購入費」とは、新しい都市を建設した直後の製造物のように、それまで以前の累積したポイントがない状態のことである。

ユニットのアップグレード費用 Edit

旧式ユニットを作成するシールドコスト: [old_cost]
ユニットを解散した場合に還元されるシールドコスト: A
A = [old_cost] / 2
都市で作りかけのユニットの購入費用: B
新型ユニットを作成するシールドコスト: [new_cost]
製造完了までに必要なシールド: T = [new_cost] - A
B = 2*T + (T^2 / 20)
アップグレード費用: C
C = B * (100 + [Upgrade_Price_Pct]) / 100
(通常のclassicルールセットではアップグレード係数[Upgrade_Price_Pct]は未設定)

ユニットのアップグレードコストは、旧型ユニットを解散して得られたシールドを新型ユニットの製造にまわした差分に相当する金額とみなすことができる。
つまり、例えば戦士をマスケット兵へアップグレードしたときの金額は、戦士を(シールド貯蓄の無い)都市で解散して即座にマスケット兵を購入したときの金額と同等である。

交易 Edit

数値計算は整数で行われます。
小数点以下は最終的に切り捨てて整数にまとめられます。

A-B都市間の実距離
いわゆるマンハッタン距離ではなく、A都市からB都市へ(航空)ユニットが最短距離を移動する際に必要なステップ数

交易路の収入 Edit

交易路の収入はver 2.2での場合の計算式。ver 2.1ではこれとは違い、2都市それぞれの基本交易値が関係する。

Ta
A都市の大きさ
Tb
B都市の大きさ
D
A-B都市間の実距離
  • 交易路を結んだ二都市が別々の大陸に存在している場合はボーナスが2倍になる
  • 交易路を結んだ二都市が同じ国の都市の場合はボーナスが半減する
ケース交易路の収入
基本ボーナス値(D + Ta + Tb) / 6
A-B都市が別々の大陸[基本ボーナス値] * 2
A-B都市が同じ国[基本ボーナス値] / 2

交易の到着ボーナス Edit

新しい交易路を開通させた時に、キャラバンが到着して得られる現金と研究ポイント

Ta
A都市の交易ポイント
Tb
B都市の交易ポイント
D
A-B都市間の実距離
  • 鉄道飛行術 の技術を取得すると到着ボーナスが減少する
  • キャラバン到着ボーナスが、すでに交易路を引いてある都市に参入する場合は 1/3 に減少する
新規の交易路市場に参入時
技術を未取得時{(D + 10) * (Ta + Tb)} / 8{(D + 10) * (Ta + Tb)} / 24
片方の技術を保有{(D + 10) * (Ta + Tb)} / 12{(D + 10) * (Ta + Tb)} / 36
両方の技術を保有{(D + 10) * (Ta + Tb)} / 18{(D + 10) * (Ta + Tb)} / 54

交易の配分方法 Edit

各都市について、汚職を引いた後の交易について配分率を乗算し、金・贅沢・科学ポイント産出量を計算します。問題は、この配分について、どうやって交易を増やしたり減らしたりすることなく整数を割り当てるのかについてです。
(注: 割り当てた後のパーセントボーナスについては端数切り捨てがあります。例えばClassicルールセットにおいて図書館と大学があると科学+250%となりますが、交易1を割り当てた際には科学2.5ではなく科学2の産出となります)

  1. まず、交易にそれぞれ配分率を乗算し、小数点以下の値を計算します。
  2. 小数点以下の値について、多い順番に並べ替えます。
  3. 一番多い小数点以下の値を出している分野について、交易を割り当てます。(小数点以下の値が等しい分野が複数ある場合、整数部分が小さい分野に割り当てます。整数部分も等しい場合、科学、金、贅沢の順番に割り当てます)

公害 Edit

公害はそれぞれの都市ごとに計算され、その都市の付近のタイルに公害の汚染物質が出現する。

公害 = [生産による公害] + [市民による公害] − [ルールセット補正値]

公害は生産の増大によって引き起こされる公害と、多量の人口によって引き起こされる公害を加算した数値に、ルールセットで定めた値(classicルールセットなら20)で減算する。
その計算結果が0以内ならその都市に公害は発生しない。
1以上なら、その数値がそのまま公害発生率(%)となる。(バージョン2.5.6現在、実は公害の値+1が発生率として判定されます。公害値が0なら判定されないのですが)

生産による公害 = [都市の総生産力] − [発電所修飾] − [リサイクル施設効果]

計算結果が0以内なら生産による公害は発生しない。

  • 発電所修飾
    • 火力発電所: 工場or製造プラントがある → 公害を0%減少、 工場and製造プラントがある → 公害を0%減少
    • 水力・原子力発電所: 工場or製造プラントがある → 公害を25%減少、 工場and製造プラントがある → 公害を50%減少
    • 太陽光発電所:  工場or製造プラントがある → 公害を50%減少、 工場and製造プラントがある → 公害を100%減少 (消滅)
  • リサイクル施設: 生産による公害を-66%減らす (工場があると-16%)

市民による公害 = 都市の大きさ × (悪化原因となる科学技術の所持数) ÷ 4

※悪化原因となる科学技術: 工業化、自動車、大量生産、プラスチック

  • 公共交通機関の効果: 人口によって引き起こされる公害を100%削減 (消滅)

技術開発 Edit

研究の基本コスト

techcoststyle=4
研究コストはルールセットで指定した値を使用する
指定されていなければその技術はtechcoststyle=3としてコストを定める
techcoststyle=3
n:その科学を研究するために必要なすべての前提技術の数として

[基本コスト] = [研究コスト] * (n + 1) ^ 2 / (1 + (n + 2) ^ 0.25) - [研究コスト] / 2

techcoststyle=2
研究コストはルールセットで指定した値を使用する
指定されていなければその技術はtechcoststyle=1としてコストを定める
techcoststyle=1
n:その科学を研究するために必要なすべての前提技術の数として

[基本コスト] = 1 / 2 * {(n + 2) ^ 1.5} * [研究コスト]

techcoststyle=0
n番目の技術を開発する場合

[基本コスト] = n * [研究コスト] (Math of Freecivではn - 1とありますが誤りと考えられます)

テクノロジーリーク

テクノロジーリークを定めている場合、他プレイヤーがすでに研究済みの科学技術に応じてボーナスを得る。

[ボーナス] = [基本コスト] * (1 - [p2 / p1])

  • p1: 全プレイヤーの数
  • p2:
    • techleakage=1: 既知の技術を持っているプレイヤー数 (大使館が必要、バーバリアンを含む)
    • techleakage=2: 既知の技術を持っているプレイヤー数 (大使館は無関係、バーバリアンを含む)
    • techleakage=3: 既知の技術を持っているプレイヤー数 (バーバリアンはプレイヤーとしてカウントせず)

その他

  • 未来技術はtechcoststyle=0として計算する
  • AIはAIのレベルに応じて科学研究のペナルティ/チート補正が付くことがある
  • 計算した研究コストが0となった場合は1になる

戦闘の勝率 Edit

Math of Freeciv には戦闘の計算式が書いてあるが、当サイトの別ページに詳しく記述してあるためそちらを参照されたし

都市占領時の金の略奪量 Edit

人口2以上の都市を占領した時、被害プレイヤーからいくらか金を奪う事が出来ます。(ついでに、未発見の技術があれば、1つ盗みます。)
0〜被害プレイヤーの所持金 / 20(端数切り捨て)までの乱数 + 被害プレイヤーの所持金 * 都市の占領による減少前の人口 / 200(端数切り捨て)の分だけ、被害プレイヤーの所持金が減り、加害プレイヤーの所持金が増えます。
例: 被害プレイヤーが金200を持っていて…
人口5の都市を占領した場合、金5〜15を奪います。
人口10の都市を占領した場合、金10〜20を奪います。
人口15の都市を占領した場合、金15〜25を奪います。
人口20の都市を占領した場合、金20〜30を奪います。
人口25の都市を占領した場合、金25〜35を奪います。
人口1の都市は占領しようとすると代わりに破壊となり、金も技術も奪えません。

内戦勃発確率 Edit

首都が陥落した時の内戦勃発確率は、政治体制ごとの値に、祝祭状態の都市1つ毎に-5、暴動状態の都市1つ毎に+5を加えた値となります。
よって、1〜2ターン後には首都が陥落しそうな場合は贅沢100%に設定することで内戦勃発確率を下げる事が期待出来ます。

温暖化と核の冬 Edit

温暖化と核の冬の発生率については、以下の値を用いて計算されます。温暖化と核の冬でそれぞれ計算します。先に温暖化の処理を行ってから、核の冬の処理を行います。

count温暖化なら全マップ上で公害が置かれたタイルの数、核の冬なら全マップ上で死の灰が置かれたタイルの数です。
level許容量。ゲーム開始初期はどちらも 全タイル数 / 500(端数切り上げ) が設定されます。
accumこの値がそれぞれの発生率および発生時の被害タイル数に用いられます。

1. ターン終了時、accumにcountを加算します。
2-1. accum < levelである場合、accumを0に設定し、発生判定は行われません。
2-2. そうでない場合、accumからlevelを減算し、発生判定を行います。0〜(全タイル数 / 20(端数切り上げ) - 1)までの乱数がaccum以下である場合、以下の処理を行います。
 温暖化や核の冬が発生します。マップのXサイズ / 10(端数切り捨て) + マップのYサイズ / 10(端数切り捨て) + accum * 5の合計分のタイルが変化します。
 accumを 0 に設定します。
 levelに 全タイル数 / 1000(端数切り上げ) を加算します。

上記計算式より、公害や死の灰を放置する事は、温暖化や核の冬の発生確率を高めるだけでなく、発生時の被害タイル数も増えてしまうため、累積の値は増えれば増えるほど深刻な状態と言えます。

ビューの情報欄をクリックしたり、温暖化や核の冬アイコンの上にマウスカーソルを置いた時に表示される発生確率と発生確率の増減については、端数は切り上げとなっています。
例えば、XとYが100のマップにおいては(合計10000タイル)、初期の許容量は20タイルで、発生判定には0〜499までの乱数が用いられる為、発生確率の増減は-20 / 500 = -0.04、つまり-4%です。
ここで、公害が1タイル存在する場合、温暖化の発生確率の増減は-19 / 500 = -0.038ですが、パーセント表記での端数は切り上げるため、-3%と表示されます。発生確率自体もこのような形となります。

上記計算式より、タイル数加算後のaccumがlevelと同値である場合、実はごくわずかですが温暖化や核の冬が発生する可能性があります(発生判定の時に乱数と以下で比較しているため)。
ですので、滅多に起こらないと思いますが、増減0%や発生確率0%と表示しておきながら発生した!という場合があります。
パーセント表記の端数は切り上げとはいえ、増減0%表示や発生確率0%表示はいわば温暖化や核の冬の一歩手前どころかすでに足を突っ込んでいる状態かもしれません。この星を労わってあげて下さい。