英語版のCKwikiのページ、Reading and understanding CK eventsより転載・翻訳中


もし他のパラドックスのゲーム、EU2とかHoIとかVictoriaとかに親しんでいたのであれば、CKのイベントシステムがそれらといささか異なっているとすぐに気付くでしょう。相違点は多いですが、主要な物は以下の通りです。

  • 史実イベントがCKにはありません。代わりに、イベントは状況によってトリガーされて発生します。どのぐらいの頻度で発生するかは、各種の条件(condition)によって修正を受けます。
  • 決まり切った進路で進むのでなく、何がどうなるのかはダイナミックに変化する
  • イベントのタイプが異なる

それでは、基本的なイベントの構造から始めるとしましょうか...

イベントのタイプ

CKには3つのイベントタイプがあります:キャラクターイベント(Character events)、プロヴィンスイベント(province events)そしてプロヴィンス間イベント(province_x_province events)です。

キャラクターイベントは、人物に関するイベントです。普通は、プレイ中の領主(ruler)に関するイベントか、もしくはその領主の宮廷内の人物に関するものです。それから、AIによってトリガーされたイベントを受けることもあるでしょう。例えば封臣(vassals)に関するものなどです。

プロヴィンスイベントはプロヴィンスに関するイベントです。これはプロヴィンスの所有者(owner)に対してのみ起きます。プレイヤーの場合、直轄領(demesne)のプロヴィンスで起きることになります。イベントのトリガーと(発生頻度の)修正は、プロヴィンスとその直接の領主によって左右されます。

プロヴィンス間イベントは「拡散イベント(spread events)」とも呼ばれます。これらのイベントは、ある一つのプロヴィンス(from province)から、そこに隣接するすべてのプロヴィンス(to province)へと、トリガーが成立すれば広がります。もし成立すれば、何かが対象のプロヴィンス(to province)で起きます。例えば、疫病が広まったり、技術が伝播したり、あるいは文化とか宗教が転向したりします。

イベントの構造

CKのイベントの構造は単純で、大きく5つの部分からなります。

province_event = {
    id = 31993

    picture = "event_agriculture" 

    trigger = { condition = { type = province value = 290 } } # Uppland

    mean_time_to_happen = { months = 6 }

    action_a = {
        effect = { type = prosperity value = -1 }
    }
}

最初がIDで、二番目にイベントの画像、三番目にトリガー、四番目にMTTH、最後が影響(action)です。それでは、これらを順を追って見ていきましょう。

Event ID/イベントID

これはゲームでイベントを識別・同定するために使われている数字です。各イベントについて固有のものであり、それからParadoxの常で、10000より大きなIDは自由に使えるように空けられています。

Event picture/イベント画像

そのイベントで使われる画像を指定する部分です:

    picture = "event_agriculture" 

これはリンクの一種で、ゲームに対して、.\gfx\interface\events\フォルダに入ってるどの画像を使うかを伝えます。*.bmpファイルの名前を入れてやります。例えば上記の例では、event_agriculture.bmpファイルが参照されます。
このファイルは320*165ピクセルで、24ビットの標準的なウィンドウズBMPフォーマットです。

Triggers/イベントのトリガー

ここには、MTTHを計算し始める前に必要なトリガーとなる状態(condition)を入れます。

trigger = { condition = { type = province value = 290 } } # Uppland

上記の場合、このイベントはUppland(日本語版ではウップランド)でのみMTTHを数え始めます。なお、#の後ろに書いたものは、ゲーム上は無視されます。ここでは将来の修正に備えてコメントを入れるのに使っています。

MTTH and dynamic polling/MTTHと動的な変化

CKでは、イベントは定められた日とか期間になっただけで発生するようなイベントは存在しません。日付はトリガーの一部にはなりますが、だからといってそれはイベントがその日に起きることを保証する物ではありません。代わりに、トリガーとなる条件を決め、MTTHことmean time to happendと、それを修正するファクターを指定します。

So, what exactly is this MTTH? The concept of mean time to happend comes from the field of statistics, and is often used in reliability and maintainability analyses of materials and components in the form of MTTF (mean time to failure). In short, it gives a statistic probability for an event to happend over a period of time, providing you have a large sample of events. Related to CK events, it defines the probability of a certain event to happend. When an event is polled, the modified MTTH value is plugged into a formula that determines the odds of an event firing and then compared to the result of a RNG to see if it fires in the particular instance. This means that compared to the EU2/HoI/Victoria system, events are not tracked to see how many times it has been tested for someone (or some province) and thus puts far less strain on CPU and memory resources. Instead, as a rule of thumb (athough not strictly an accurate one), one can assume that during any given year of game play each character and each province will be tested about 3 or 4 times for every event.

Any event you make must have a MTTH value defined, in days, months or years. It is recommended that you avoid using very large or very small numbers since in testing it has been observed some "clipping" due to processor rounding. Also, due to some code optimising, the MTTH values are slightly skewed, and you should use values about 25% lower than intended.

MTTH modifiers/MTTHの修正値

In most cases, one would want the events to happend sooner in some situations than in others. It would e.g. make more sense for a child to die in infancy if it was sick compared to a healthy child. Consider the event:

character_event = {
    id = 999

    picture = "event_plague"

    trigger = {
        condition = {
            type = not
            value = { type = age value = 2 }
        }
    }

    mean_time_to_happen = {
        months = 120

        '''modifier = {'''
            '''condition = { type = trait value = illness }'''
            '''factor = 0.2'''
        '''}'''
    }

    immidiate = {
        effect = { type = death }
    }
}

In this event, the MTTH to a health infant (< 2 years) is 120 months, while any child with the illness trait has an MTTH of 120*0.2 = 24 months.

This way, we can define a set of modifiers that will decrease (if < 1) or increase (if > 1) the MTTH of an event.

Effects/イベントの効果

イベントはいろいろな効果(effect)を引き起こします。イベントの効果を記述するには、二つの異なる方法があります。

  • それぞれが違う効果を持つ1個もしくはそれ以上の選択肢が出てくる
  • 何のやりとりもなく、イベントの効果が適用される

複数の選択肢

この方法は1個もしくは複数の選択肢がイベントの結果として出てくる。イベントのコードでは、これらの選択肢はactionsとして参照される。最初はaction_aで、以下アルファベット毎に新しいイベント結果を入れておく。

    action_a = {
        effect = { type = prosperity value = -1 }
    }

このactionだと、該当プロヴィンスの繁栄を1段階下げることになる。複数のactionが入っているイベントだと、また違ってくる。例えばこのキャラクターイベント(by Cat Lord)を見て欲しい:

action_a = {
	effect = { type = loyalty value = -0.5 }
}

action_b = {
	effect = { 
		type = random 
		chance = 25
		effect = {
				type = add_trait
				value = forgiving
		}
	}
}

この場合、結果は以下の二つから選ぶことになる。

  • キャラクターの忠誠度が50%減少する。もしくは、
  • 確率25%でforgiving(日本語版だと「寛大」)の特性を得る
    なお、actionでは、複数のいろいろな効果を記述することができる。以下の例(キャラクターイベント)は、Claims_Events.txtのイベント1194に記述されているものだ。
    action_a = 
    	effect = { type = add_title_claim value = random_neighbor }
    	effect = { type = death value = spouse }
    	effect = { type = add_trait value = vengeful }
    }
    このactionだと、このイベントが起きているキャラクターのneighbor(近くの領地の領主)の称号に対する主張を得るが、配偶者を殺し、キャラクター自体にはvengeful(日本語版では「執念深い」)特性を与える。

AI Modifiers/AIの修正

複数の選択肢があるイベントには、AI(この場合はコンピュータが担当するキャラクター)が選択する場合に影響を与えるための設定を書くこともできる。以下の例は先述のClaims_Events.txtのイベント1194に記述されているものを完全な形で出してきた物だ。

action_a = 
       ai_chance = 50
	effect = { type = add_title_claim value = random_neighbor }
	effect = { type = death value = spouse }
	effect = { type = add_trait value = vengeful }
}

この場合、AIは50%の確率でこのactionを選ぶ。複数のactionがある場合、いろいろな発生率の修正を付けられる。例(by Cat Lord)を見て欲しい:

action_a = {
	ai_chance = 36
	effect = { type = prestige value = 10 }
}
action_b = {
	ai_chance = 50
	effect = { type = piety value = 10 }
}
action_c = {
	ai_chance = 32
	effect = { type = piety value = 5 }
	effect = { type = prestige value = 5 }
}

このイベントでは、AIは確率36%でaを、確率50%でbを、確率32%でcを選ぶことになる。しかしながら、発生の可能性については、さらなる修正を入れることもできる:

action_a = {
	ai_chance = 36
		#start AI modifier block
		modifier = {
			condition = { type = not value = { type = diplomacy value = 2 } }
			factor = 1.5
		}
		modifier = {
			condition = { type = not value = { type = diplomacy value = 4 } }
			factor = 1.5
		}
		#end AI modifier block
	effect = { type = prestige value = 10 }
}
action_b = {
	ai_chance = 50
		#start AI modifier block
		modifier = {
			condition = { type = not value = { type = diplomacy value = 4 } }
			factor = 0.75
		}
		modifier = { 
			condition = { type = diplomacy value = 7 }
			factor = 0.75
		}
		#end AI modifier block
	effect = { type = piety value = 10 }
}
action_c = {
	ai_chance = 32
		#start AI modifier block
		modifier = { 
			condition = { type = diplomacy value = 7 }
			factor = 1.5
		}
		modifier = { 
			condition = { type = diplomacy value = 9 }
			factor = 1.5
		}
		#end AI modifier block
	effect = { type = piety value = 5 }
	effect = { type = prestige value = 5 }
}

この場合、AIがどれを選びやすいかは、AIキャラクターの外交の数値によって変わってくることになる。例の場合を最初から説明していくと、もしAIキャラクターの外交値が2未満であれば、1.5倍の可能性で選ぶ。さらに、AIキャラクターの外交値が4未満であれば、1.5倍の修正が付く、といった具合だ。
まとめると、AIがどの選択肢を選ぶのか、正確なところは以下の表のようになる:

外交の値action_aを選択action_bを選択action_cを選択
<272%37.5%32
2-348%37.5%32%
4-632%50%32%
7-832%37.5%48%
9+32%37.5%72%

Immediate Effects/直接の効果

Note: この情報はもしかすると不正確です。もし正解を知ってる人がいたら、内容を修正してからこのNote部分を削除してください

br>
いくつかのイベントは効果がゲーム画面に出てきません。その種の効果を及ぼす構文については、このイベント(by Cat Lord)を見てください:

######################
# Insult your vassal #
######################

character_event = {
	id = 10000
	
	picture = "event_intrigue"
	
	trigger = {
		condition = { type = trait value = arbitrary }
		condition = { type = has_vassal }
	}

	mean_time_to_happen = {
		months = 900

		# Personal trait modifiers:

		modifier = {
			condition = { type = trait value = energetic }
			factor = 0.8
		}

		modifier = {
			condition = { type = trait value = lazy }
			factor = 1.2
		}
	}

	'''''immidiate = {#You're a scum !'''''
		'''''effect = { type = trigger for = random_vassal value = 10001 }'''''
		'''''}'''''
}

このイベントでは、イベント10001が自動的にトリガーされます。その際、イベントのポップアップが画面上に出ることはありません(ただし、プレイヤーに起きるイベントの場合は出てきますが)。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-01-09 (金) 11:47:37 (3242d)