原帖由 优化伴侣 于 2010-5-30 21:46 发表
关于进攻关系,我建议按距离的长短来确定。(这样子改比较通用,这样子就不用去管那些什么都市进攻表、地域所属性,也可以适应剧本作者的地域互换的剧本等。)
当距离小于所要出动的阵形的5旬的地方/部队,就考虑进攻。(距离越远,就比对方屯集越多的兵才会去进攻。)
另外关于支援关系,我也建议增加一项按距离的长短来支援。
距离已方要支援的地方/部队比较近时,就出动部队救援/入驻(以救援/行军/输送等方式支援)。
(原来的支援函数没必要改了,现在用一个else\and\of\or这样的函数,增加一个支援的条件。)
例如:羌与汉中不会相互救援,得想办法让这两城可相互救援。又比如,我们做剧本用地域互换,把南方多余的据点A移至河北,那河北的据点B不会向A出动援军,也是很大的遗憾。(这不解决的话,地域互换在剧本制作中也就形同虚设了。)
---------------------
事情不是像你说得那么简单。39里如果有空军,直线距离就能解决问题。
所以,只能使用“行进距离”。比如西城和汉中,直线距离很短,但是行进距离很长。
而计算“行进距离”的运算量很大,涉及到寻路算法的问题。
如果再不使用都市进攻关系表,进行全都设遍历,呵呵,游戏会慢成啥样呢?
直线距离就能解决问题。这就好办了:直线距离不远,那么“行进距离”也不会大到哪里去。
那建议这样子好不好呢?
三国志9共有200X200=40000个点,
这四万个点的座标是,如点A: A=X+200Y(X为东西纵向坐标值,Y为南北方向坐标值。)
第一个点:0=0X0+0X200(即武威的最西北处那个角点)
最后一个点:40000=200+199X200(即南海最东南处那个角点。)
同一个地方的各个X值,同一个地方的各个Y值,是相差不大的。即两个点的距离可按(X1-X2)和(Y1-Y2)来表示。
(既然“行进距离”很费CPU,那就不用考虑“行进距离”了,因为(X1-X2),和(Y1-Y2)的值相差不大的话,那么“行进距离”也不会大到哪里去。)
这样子的话,应不会怎么费CPU吧。
或者在原来的基础上用一个else\and\of\or这样的函数来处理两个点之间的进攻支援关系。[如两个点:A(X1,Y1),B(X2,Y2)]
X1-X2(或Y1-Y2)的差值,最好不要超过30。
这样子的话,就比较通用了,就能解决许多的问题。
[ 本帖最后由 E世飞将 于 2010-5-31 00:01 编辑 ]