设为首页收藏本站

塞爱维(CIV)文明联盟

 找回密码
 注册
楼主: 孟仲玄

[原创] 商路全面解析(基于BTS3.17)

[复制链接]
发表于 2008-8-2 21:19:36 | 显示全部楼层

回复 #96 Khyron 的帖子

56楼的存档我下了,然而...................我还是313
 楼主| 发表于 2008-8-2 21:21:34 | 显示全部楼层

回复 #101 thorsoar 的帖子


升级317吧,不要害怕洋文,要勇敢的战胜它
发表于 2008-8-2 21:25:00 | 显示全部楼层
1.基础值

决定基础值的有两个因素:(1)和你贸易的对方城市的人口数/10
                       (2)你到对方城市的距离*15%-40%(巨大—擂台)


这个地方有点小错误,你到对方城市的距离修正是*6% - 16%。
发表于 2008-8-2 21:27:49 | 显示全部楼层
原帖由 Khyron 于 2008-8-2 21:25 发表


这个地方有点小错误,你到对方城市的距离修正是*6% - 16%。


这里是原代码

  1. int CvCity::getBaseTradeProfit(CvCity* pCity) const
  2. {
  3.     int iProfit = std::min(pCity->getPopulation() * GC.getDefineINT("THEIR_POPULATION_TRADE_PERCENT"), plotDistance(getX_INLINE(), getY_INLINE(), pCity->getX_INLINE(), pCity->getY_INLINE()) * GC.getWorldInfo(GC.getMapINLINE().getWorldSize()).getTradeProfitPercent());

  4.     iProfit *= GC.getDefineINT("TRADE_PROFIT_PERCENT");
  5.     iProfit /= 100;

  6.     iProfit = std::max(100, iProfit);

  7.     return iProfit;
  8. }
复制代码
 楼主| 发表于 2008-8-2 21:29:06 | 显示全部楼层

回复 #103 Khyron 的帖子

是查询coredll得出的结果么?
这个比较麻烦所以当时我就没有验证了,我的数据来源是这篇:
Base Vaue is the SMALLER of
Population of Other city/10
AND
Distance to the other City * 15%->40% (Huge->Duel)
but Base Value has a Minimum possible value of 1


http://forums.civfanatics.com/showthread.php?t=159047
发表于 2008-8-2 21:31:40 | 显示全部楼层
另外我认为试验的可重复性很重要,ls可以试试换个图来重复这次试验结果.如果能重复,那就确实值得研究下,如果不能,那就只能解释为前一次试验存在一些特殊的不明因素了.

至于试验方法,我个人喜欢存一个标准存档,每次修改都是在标准存档上一次修改到位,这样可以保证每次试验的初始状态是一致的.连续修改的话,或许wb真的存在一些我们不知道的问题呢
发表于 2008-8-2 21:33:42 | 显示全部楼层
原帖由 孟仲玄 于 2008-8-2 21:29 发表
是查询coredll得出的结果么?
这个比较麻烦所以当时我就没有验证了,我的数据来源是这篇:
Base Vaue is the SMALLER of
Population of Other city/10
AND
Distance to the other City * 15%->40% ...


比如duel图, 查CIV4WorldInfo.xml, iTradeProfitPercent=80; GlobalDefines.xml, TRADE_PROFIT_PERCENT=20

根据源代码距离修正为(80*20/100)/100=16%
我猜原作者错误把乘以20当成除以20了。
 楼主| 发表于 2008-8-2 21:34:48 | 显示全部楼层

回复 #104 Khyron 的帖子

补充一下,我只能看出要乘以GC.getWorldInfo(GC.getMapINLINE().getWorldSize()),不过这个值是多少看不出来.......
 楼主| 发表于 2008-8-2 21:36:02 | 显示全部楼层
原帖由 Khyron 于 2008-8-2 21:33 发表


比如duel图, 查CIV4WorldInfo.xml, iTradeProfitPercent=80; GlobalDefines.xml, TRADE_PROFIT_PERCENT=20

根据源代码距离修正为(80*20/100)/100=16%
我猜原作者错误把乘以20当成除以20了。

恩,现在明白了,应该是这样,我就去改
发表于 2008-8-2 21:37:10 | 显示全部楼层
文明4的取整太多了,不好判断.我觉得知道有这个因素就行了
发表于 2008-8-2 21:37:32 | 显示全部楼层

回复 #105 孟仲玄 的帖子

另外,贴张duel下距离15格的图。
对方人口50,人口修正肯定大于距离修正,距离15,15*16%=2.4



[ 本帖最后由 Khyron 于 2008-8-2 21:39 编辑 ]

本帖子中包含更多资源

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

x
 楼主| 发表于 2008-8-2 21:42:00 | 显示全部楼层
看到图就可以确定Khyron的更正了,实践才是硬道理啊
发表于 2008-8-3 13:52:56 | 显示全部楼层
商路是如何分配的

每次更新本国城市商路时,分两步
1. 先遍历本国所有城市,将各个城市按其贸易修正系数从大到小排序,逐一分配商路;
2. 轮到某一城市时,遍历所有国家的所有城市,再从可以建立商路的城市中挑出商路收益最大的前n个城市。

城市贸易修正系数就是商路收益修正系数里(1)(2)(3)(5)之和,即
(1) 当自己城市大于10级时,每一级+5%
(2) 你的城市联通首都 +25%
(4) 如果你有港口 +50%
(5) 如果你拥有阿特密斯神庙 +100%

n = 城市允许的最大商路数

[ 本帖最后由 Khyron 于 2008-8-3 14:26 编辑 ]
发表于 2008-8-3 19:08:40 | 显示全部楼层

回复 #113 Khyron 的帖子

这个算法不能保证总收益最大,因为商路的基础值是不同的,有可能修正系数大的城市基础收益低.

举个例子:假如A国有2城,B国有1城.其中,A国的2城中首都在B国旁边(距离因数小于1),且有港口,另一城在非常远的地方(保证距离因数大于2),B国的城市有20人口(这样人口因数为2).对于A国的2个城市来说,首都的系数为175%(首都+25%,港口+50%),分城的系数为125%(连通首都+25%),B国城市到A国首都的基础收益为1(因为距离太近了,距离因数和人口因数取小),到A国分城的基础收益为2(距离因数大于2,人口因数为2).

这时,按照前文所述算法,就是先分配首都的商路,那么肯定选B国的城市,最后收益为1*325%=3(保持和平还有150%),分城商路只有到首都了,为1*125%=1(为了简化前提,假设A国2城市都是10人口,那么互相的商路收益都是1),这样总收益就是4.

但是如果把B国的城市分给A国分城,那么分城收益为2*275%=5,首都的收益为1*175%=1,总收益就是6

但是很遗憾的是,游戏里面就是Khyron所说的算法.
 楼主| 发表于 2008-8-3 19:36:25 | 显示全部楼层
已修改
发表于 2008-8-4 13:40:29 | 显示全部楼层
一般来说,重商主义是鼓励出口限制进口吧,不过在bts里显示不出来出口和进口的区别
发表于 2008-8-4 14:07:20 | 显示全部楼层
什么叫洲际商路啊
是必须两个城市之间由大洋隔开吗?
比如几个岛和大陆之间是海滨连接,没有完全被大洋隔开,这时候岛上城市和大陆上城市之间有洲际商路吗?
海关起作用吗
发表于 2008-8-4 14:16:02 | 显示全部楼层

回复 #117 heyeshan 的帖子

海关只要是对外贸易就能起作用,跟是否洲际商路无关,以前的文明百科貌似错了
发表于 2008-8-4 15:05:20 | 显示全部楼层
原帖由 西艾薇.R.Tita 于 2008-8-4 14:16 发表
海关只要是对外贸易就能起作用,跟是否洲际商路无关,以前的文明百科貌似错了


那这样说来,随着敌人逐渐被灭,外贸商路的收益会不断减少啊
发表于 2008-8-4 20:53:37 | 显示全部楼层

回复 #119 heyeshan 的帖子

反正都是敌人了,你也没法从敌人那里获得收益
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 12:46

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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