设为首页收藏本站

塞爱维(CIV)文明联盟

 找回密码
 注册
查看: 24632|回复: 36

[原创] 技术贴——不满数值的计算算法(修正吞并人口不满)

[复制链接]
发表于 2010-10-6 12:50:26 | 显示全部楼层 |阅读模式
城市状态有4种——
本土:靠移民自己建造的城市。
傀儡:打下其他城市后,选择将其傀儡。
吞并:打下其他城市后,选择将其吞并。吞并的城市造好法院后,会变为本土。
摧毁:打下其他城市后,选择将其摧毁。摧毁状态其实与吞并状态差不多,只不过每回合-1人口,直至人口减至0城市毁灭。


不满有4类,算法如下——

城市数量不满:(本土城数+傀儡城数 - 1)*2
吞并城数不满:(吞并城数+摧毁城数)*5
城市人口不满:本土人口+傀儡人口
吞并人口不满:吞并人口不满:∑floor(单一吞并城市的人口*1.34) + ∑floor(单一摧毁城市的人口*1.34)

(∑表示对每一个城市逐一计算再求和。floor为向下取整函数)
(吞并人口不满的推算比较复杂。详见5楼附录)



2楼:数据验证1——国王标准1715年
3楼:数据验证2——皇帝史诗850年
4楼:总结
5楼:附录





常数定义位于——
\Assets\Gameplay\XML\GlobalDefines.xml

  1.                 <Row Name="UNHAPPINESS_PER_POPULATION">
  2.                         <Value>1</Value>
  3.                 </Row>
  4.                 <Row Name="UNHAPPINESS_PER_OCCUPIED_POPULATION">
  5.                         <Value>1.34</Value>
  6.                 </Row>
  7.                 <Row Name="UNHAPPINESS_PER_CITY">
  8.                         <Value>2</Value>
  9.                 </Row>
  10.                 <Row Name="UNHAPPINESS_PER_CAPTURED_CITY">
  11.                         <Value>5</Value>
  12.                 </Row>
  13.                 <Row Name="UNHAPPY_GROWTH_PENALTY">
  14.                         <Value>-75</Value>
  15.                 </Row>
  16.                 <Row Name="VERY_UNHAPPY_GROWTH_PENALTY">
  17.                         <Value>-100</Value>
  18.                 </Row>
  19.                 <Row Name="VERY_UNHAPPY_CANT_TRAIN_SETTLERS">
  20.                         <Value>1</Value>
  21.                 </Row>
  22.                 <Row Name="VERY_UNHAPPY_THRESHOLD">
  23.                         <Value>-10</Value>
  24.                 </Row>
  25.                 <Row Name="VERY_UNHAPPY_COMBAT_PENALTY">
  26.                         <Value>-33</Value>
  27.                 </Row>
  28.                 <Row Name="STRATEGIC_RESOURCE_EXHAUSTED_PENALTY">
  29.                         <Value>-50</Value>
  30.                 </Row>
  31.                 <Row Name="VERY_UNHAPPY_PRODUCTION_PENALTY">
  32.                         <Value>-50</Value>
  33.                 </Row>
复制代码

[ 本帖最后由 zyl910 于 2010-10-8 15:14 编辑 ]

评分

2

查看全部评分

 楼主| 发表于 2010-10-6 12:50:38 | 显示全部楼层
2楼:数据验证1——国王标准1715年


最初——
本土:5个城,总人口54。(其中London已造好法院,等同本土)
傀儡:9个城,总人口60。
吞并:(无)
摧毁:(无)

城市数量不满:(本土城数+傀儡城数 - 1)*2 = (5+9 - 1)*2 = 13*2 = 26(已有紫禁城减半,实际为13)
吞并城数不满:(吞并城数+摧毁城数)*5 = (0+0)*5 = 0
城市人口不满:本土人口+傀儡人口 = 54+60 = 114
吞并人口不满:∑floor(吞并人口*1.34) + ∑floor(摧毁人口*1.34) = 0



吞并Edirne后——
本土:5个城,总人口54。
傀儡:8个城,总人口55。
吞并:1个城,总人口5。
摧毁:(无)

城市数量不满:(本土城数+傀儡城数 - 1)*2 = (5+8 - 1)*2 = 12*2 = 24(已有紫禁城减半,实际为12)
吞并城数不满:(吞并城数+摧毁城数)*5 = (1+0)*5 = 5(已有紫禁城减半,实际为2)
城市人口不满:本土人口+傀儡人口 = 54+55 = 109
吞并人口不满:∑floor(吞并人口*1.34) + ∑floor(摧毁人口*1.34) = floor(5*1.34) = floor(6.67) = 6



再吞并Hastings后——
本土:5个城,总人口54。
傀儡:7个城,总人口46。
吞并:2个城,总人口14。
摧毁:(无)

城市数量不满:(本土城数+傀儡城数 - 1)*2 = (5+7 - 1)*2 = 11*2 = 22(已有紫禁城减半,实际为11)
吞并城数不满:(吞并城数+摧毁城数)*5 = (2+0)*5 = 10(已有紫禁城减半,实际为5)
城市人口不满:本土人口+傀儡人口 = 54+46 = 100
吞并人口不满:∑floor(吞并人口*1.34) + ∑floor(摧毁人口*1.34) = floor(5*1.34) + floor(9*1.34) = floor(6.67) + floor(12) = 18



再摧毁Hastings后——
本土:5个城,总人口54。
傀儡:7个城,总人口46。
吞并:1个城,总人口5。
摧毁:1个城,总人口9。

城市数量不满:(本土城数+傀儡城数 - 1)*2 = (5+7 - 1)*2 = 11*2 = 22(已有紫禁城减半,实际为11)
吞并城数不满:(吞并城数+摧毁城数)*5 = (1+1)*5 = 10(已有紫禁城减半,实际为5)
城市人口不满:本土人口+傀儡人口 = 54+46 = 100
吞并人口不满:∑floor(吞并人口*1.34) + ∑floor(摧毁人口*1.34) = floor(5*1.34) + floor(9*1.34) = floor(6.67) + floor(12) = 18

[ 本帖最后由 zyl910 于 2010-10-8 15:11 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-6 12:50:50 | 显示全部楼层
3楼:数据验证2——皇帝史诗850年



本土:6个城,总人口43。(其中Istanbul已造好法院,等同本土)
傀儡:2个城,总人口8。
吞并:1个城,总人口6。(Persepolis,正在造法院)
摧毁:1个城,总人口3。(Tarsus)


城市数量不满:(本土城数+傀儡城数 - 1)*2 = (6+2 - 1)*2 = 7*2 = 14
吞并城数不满:(吞并城数+摧毁城数)*5 = (1+1)*5 = 10
城市人口不满:本土人口+傀儡人口 = 43+8 = 51
吞并人口不满:∑floor(吞并人口*1.34) + ∑floor(摧毁人口*1.34) = floor(6*1.34) + floor(3*1.34) = floor(8) + floor(4) = 12


[ 本帖最后由 zyl910 于 2010-10-8 15:12 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-6 12:51:04 | 显示全部楼层
4楼:总结


城市状态变化——
1.将傀儡城市吞并时,不再计算城市数量不满与城市人口不满,而转为计算吞并城数不满与吞并人口不满。
2.吞并的城市造好法院后,会变为本土。不再计算吞并城数不满与吞并人口不满,而转为计算城市数量不满与城市人口不满。(与1相反)
3.将已经吞并的城市(未造好法院)摧毁时,4种不满度均不会发生变化。


城数不满——
紫禁城(The Forbidden Palace)的减半效果,对城市数量不满与吞并城数不满均有效,而且是向下取整。吞并城数不满的常数为5,与城市数量不满的常数2要大很多,所以紫禁城相对来说对扩张有利。
秩序政策-计划经济(Planned Economy):城数不满-50%。


人数不满——
从上面的数据可以看到,城数不满比较少,人口不满才是大头。所以印度甘地的领袖特色(城市数量导致的不满加倍,城市人口导致的不满减半)很不错。
虔诚政策-神权统治(Theocracy):非占领城市人口规模导致的不满-20%。



单独一个城市,不同人口下的不满数值(不考虑奇观、政策等修正)——
人口本土傀儡人口不满本土傀儡不满总计吞并摧毁人口不满吞并摧毁不满总计人口不满对比不满总计对比
1131603
2242703
3354914
44651014
55761114
66881325
77991425
8810101525
9911121736
101012131836
111113141936
121214162147
131315172247
141416182347
151517202558
161618212658
171719222758
181820242969
191921253069
202022263169
2121232833710
2222242934710
2323253035710
2424263237811
2525273338811
2626283439811
2727293641912
2828303742912
2929313843912
30303240451013
31313341461013
32323442471013
33333544491114
34343645501114
35353746511114
36363848531215
37373949541215
38384050551215
39394152571316
40404253581316
41414354591316
42424456611417
43434557621417
44444658631417
45454760651518
46464861661518
47474962671518
48485064691619
49495165701619
50505266711619

例如:当你准备摧毁一个6人口的傀儡城市,最终会消去8点不满。但在开始摧毁的那一个回合,该城会产生13点不满,既临时增加了5点不满。

[ 本帖最后由 zyl910 于 2010-10-6 16:49 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-6 12:51:23 | 显示全部楼层
5楼:附录


本楼作废。

推荐21楼。

[ 本帖最后由 zyl910 于 2010-10-6 16:50 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-6 13:00:09 | 显示全部楼层
编辑完成
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:02:17 | 显示全部楼层
支持技术贴 只有在CIV才能看到的好帖
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-6 13:03:03 | 显示全部楼层
原帖由 kevintian2008 于 2010-10-6 12:52 发表
你的表达不清, 能几句说清的你越说越糊涂。


牵涉到数字的问题比较抽象,表达难度比较大。

现在图片传好了。有图片的话,应该易于理解一点。
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:06:37 | 显示全部楼层
好贴,前排支持,游戏里就发现不满的大头都在人口上面。
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:11:23 | 显示全部楼层
那城市如果占领以后直接摧毁,是不是还计算不满呢?应该不算了把?
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:15:31 | 显示全部楼层
摧毁其实就是annex状态的
不过每回合人口-1一直到0
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:22:09 | 显示全部楼层

回复 #1 zyl910 的帖子

快乐是这一代最需要研究的玩意了 希望能再研究并说的白话点
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:35:13 | 显示全部楼层
法院一个要5g 纯属额外的支出 开始来说压力很大不如拆了建个新城
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-6 13:39:09 | 显示全部楼层
更新单城不满列表,在4楼总结
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:47:09 | 显示全部楼层
第一份神级战报,支持
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:54:43 | 显示全部楼层
真是技术贴
回复 支持 反对

使用道具 举报

发表于 2010-10-6 13:57:52 | 显示全部楼层
关于占领人口不满
我觉得公式也有可能是ceil[(总人口-总占领城数)*1.5]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-10-6 13:59:36 | 显示全部楼层
我觉得可以这样——
除了有奇迹的城,其他全烧了算了。大不了为了资源自己再建一个城。
一打下来就烧,长痛不如短痛。
偶尔可以吧城市卖给电脑,不但可以赚点零花钱,还可以拖累电脑经济。
回复 支持 反对

使用道具 举报

发表于 2010-10-6 14:05:15 | 显示全部楼层
我觉得中国的人口不满也应该减少,毕竟站了世界的20%啊
回复 支持 反对

使用道具 举报

发表于 2010-10-6 14:57:13 | 显示全部楼层
重新试了一下,单城(annex)的人口和不满的关系(King难度、神级难度测试):
15        20
14        18
13        17
12        16
11        14
10        13
9        12
8        10
7        9
6        8
5        6
4        5
3        4
2        2
1        1

可以看出来:实际的不满是X+floor(X/3),其中X是人口数,floor是直接去掉小数部分的函数
简单地说就是人口每到三的倍数就额外增加一不满

多城的时候就是把单城的情况简单求和了(但是注意不能直接把占领城市总人口代入计算)

[ 本帖最后由 matsuri1987 于 2010-10-6 15:09 编辑 ]

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|塞爱维(CIV)文明联盟    

GMT+8, 2024-4-26 19:07

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表