恶狼战役: “时钟要保障每台不同的机器有相同的运算结果” 的进一步解释

1 view
Skip to first unread message

老范

unread,
Jul 3, 2009, 10:49:11 PM7/3/09
to erlang...@googlegroups.com, ECUG~erlang中文用户组
关于我在多篇文章中都隐晦含糊的提到: “时钟要保障每台不同的机器有相同的运算结果”  这个问题进一步解释一下,希望能讲明白。

比如对战的双方 P1, P2  各自采用了不同的算法。  P1 需要运算 10000 次(CPU 频率) 可以得出结论,并发出行动指令。 而P2 要运算500000次 可以得出结论,并发出行动指令

如果我们固定使用1秒的时间节拍情况下:

慢的机器可能 P2 没有算完,时钟节拍就到下一拍了。 这个时候相当于 P1 开始行动,而P2 原地没动。 当P2 在若干拍后算完,此时已经时过境迁,P2 开始运算前考虑的战场环境已经完全变了,P2 算出来的结果已经无用,需要重新算了。所以 P1 痛宰P2.

而如果用一台快的机器,P1, P2 都能在1秒内算完。 此时虽然P1 提前算完,但是还是要等节拍到了才能生效。 因此P1,P2 就正常对战起来。 而由于P2 考虑因素更多, P2 获胜了

这种比赛结果的不确定性,显然不利于大家积极参加游戏。


这就是所谓   “时钟要保障每台不同的机器有相同的运算结果” ; 我的初步构想是要在系统启动后,对于机器运算速度进行测速(比如运行一些标准的复杂运算),  也就是获得比如该机器进行10000万次标准运算的时间。  并以此为基准,确定该机器上的每次时钟节拍应该是多少毫秒. 当然也不可能100% 相同,但是至少相对公平些。



Zoom.Quiet

unread,
Jul 4, 2009, 1:09:43 AM7/4/09
to fanyu...@gmail.com, erlang...@googlegroups.com, ECUG~erlang中文用户组
2009/7/4 老范 <fanyu...@gmail.com>:
> 关于我在多篇文章中都隐晦含糊的提到: “时钟要保障每台不同的机器有相同的运算结果”  这个问题进一步解释一下,希望能讲明白。
>

直接说,这个时钟,就是战场中行动允许的令牌好了!
- 双方不论实际运算用的CPU时钟也好,自然的太阳历时间也好,在EB 中都不存在!
- 双方只有获得EB时钟的授权才可以给出行动指令
- EB时钟单位是"秒",即EB根据内部约定的固定节拍,定期统一向双方发送"秒"通告
- 每EB“秒”的开始由EB决定发布,
* 结束~俺建议是收到双方的一次行动指令为结束
* 这样可以确保将来分布式对战时,EB时钟的统一性
* 但是有个上限,比如说 13自然秒,以避免网络等问题时,EB无限等待下去...
是也乎?

> 比如对战的双方 P1, P2  各自采用了不同的算法。  P1 需要运算 10000 次(CPU 频率) 可以得出结论,并发出行动指令。 而P2
> 要运算500000次 可以得出结论,并发出行动指令
>
> 如果我们固定使用1秒的时间节拍情况下:
>
> 慢的机器可能 P2 没有算完,时钟节拍就到下一拍了。 这个时候相当于 P1 开始行动,而P2 原地没动。 当P2 在若干拍后算完,此时已经时过境迁,P2
> 开始运算前考虑的战场环境已经完全变了,P2 算出来的结果已经无用,需要重新算了。所以 P1 痛宰P2.
>
> 而如果用一台快的机器,P1, P2 都能在1秒内算完。 此时虽然P1 提前算完,但是还是要等节拍到了才能生效。 因此P1,P2 就正常对战起来。
> 而由于P2 考虑因素更多, P2 获胜了
>
> 这种比赛结果的不确定性,显然不利于大家积极参加游戏。
>
>
> 这就是所谓   “时钟要保障每台不同的机器有相同的运算结果” ;
> 我的初步构想是要在系统启动后,对于机器运算速度进行测速(比如运行一些标准的复杂运算),  也就是获得比如该机器进行10000万次标准运算的时间。
> 并以此为基准,确定该机器上的每次时钟节拍应该是多少毫秒. 当然也不可能100% 相同,但是至少相对公平些。
>
>
>
>
> >
>

--
http://zoomquiet.org 人生苦短,Pythonic!-)
Time is unimportant, only life important!

老范

unread,
Jul 4, 2009, 3:30:11 AM7/4/09
to Zoom.Quiet, erlang...@googlegroups.com, ECUG~erlang中文用户组
 谈一下我们的worldClock 和令牌 的差别。

从令牌角度而言,系统会如下面方式运行:(大概这个意思)

1.  world clock 向战场程序发出令牌。
2.  战场程序更新战场状态,后向决策程序发出令牌
3.  决策程序在收到令牌后开始计算, 并在若干秒内完成决策,并向战场程序发出任务指令。令牌又转到战场程序
4.  战场程序收到令牌后,更新战士动作
5.  战场程序将令牌传回给world clock
6.  wolrd clock 休息若干秒后重复。

这种令牌模式有一个问题,就是要求“决策程序自律”, 必须收到令牌后才可以开始计算。 并且没有收到令牌不允许向战场程序发消息。 发消息的话,不能狂发,必须每个战士只能发一个。。。。

另一个问题是这样的一种令牌传递,让整个系统不再是一个并行的erlang 程序了,而是一个串行/准串行的程序。不能体现erlang 的优势了。


eb0 构想的运行模式不同:

1. 战场独立运行, 每次接收到world clock 指令的时候,计算一次战场状态。 然后对于处于wait 状态的战士,去指令队列中取下一个指令。 如果有指令的话就开始下一个动作。 没有的话就继续wait.

1. 决策程序独立运行。 自己看着战场时间和战场状态最新情况; 按照自己的决策,发出自己的指令。 如果前面有未执行的指令,就冲掉老指令。 如果指令发的时机不对,错过了这个节拍,那么战士空等一拍,下拍执行这个指令

(注意两个 1 不是笔误, 他们是并行的没有先后关系)

这样玩家编写决策程序的时候,没有任何限制。没有限制就不会违反限制。狂发消息只会堵塞自己,不会干扰战场的运作和别人的指令。

大家都是real time 进行决策(在战场运算状态的时候,也可以同时算自己的方案), 而不是回合制的决策。 如果按照上述令牌制的话,由于决策程序是大家自己写的,狡猾的指挥官仍然会在没有令牌的时候去偷偷的提前算方案。



2009/7/4 Zoom.Quiet <zoom....@gmail.com>

Zoom.Quiet

unread,
Jul 4, 2009, 4:16:34 AM7/4/09
to 老范, erlang...@googlegroups.com, ECUG~erlang中文用户组
2009/7/4 老范 <fanyu...@gmail.com>:

>  谈一下我们的worldClock 和令牌 的差别。
>
> 从令牌角度而言,系统会如下面方式运行:(大概这个意思)
>
> 1.  world clock 向战场程序发出令牌。
> 2.  战场程序更新战场状态,后向决策程序发出令牌
> 3.  决策程序在收到令牌后开始计算, 并在若干秒内完成决策,并向战场程序发出任务指令。令牌又转到战场程序
> 4.  战场程序收到令牌后,更新战士动作
> 5.  战场程序将令牌传回给world clock
> 6.  wolrd clock 休息若干秒后重复。
>
> 这种令牌模式有一个问题,就是要求“决策程序自律”, 必须收到令牌后才可以开始计算。 并且没有收到令牌不允许向战场程序发消息。
> 发消息的话,不能狂发,必须每个战士只能发一个。。。。
>

应该是令牌这词儿,原先代表的技术的误解,
不过,用这词儿,容易理解;

> 另一个问题是这样的一种令牌传递,让整个系统不再是一个并行的erlang 程序了,而是一个串行/准串行的程序。不能体现erlang 的优势了。
>
>
> eb0 构想的运行模式不同:
>
> 1. 战场独立运行, 每次接收到world clock 指令的时候,计算一次战场状态。 然后对于处于wait 状态的战士,去指令队列中取下一个指令。
> 如果有指令的话就开始下一个动作。 没有的话就继续wait.
>
> 1. 决策程序独立运行。 自己看着战场时间和战场状态最新情况; 按照自己的决策,发出自己的指令。 如果前面有未执行的指令,就冲掉老指令。
> 如果指令发的时机不对,错过了这个节拍,那么战士空等一拍,下拍执行这个指令
>
> (注意两个 1 不是笔误, 他们是并行的没有先后关系)
>
> 这样玩家编写决策程序的时候,没有任何限制。没有限制就不会违反限制。狂发消息只会堵塞自己,不会干扰战场的运作和别人的指令。
>
> 大家都是real time 进行决策(在战场运算状态的时候,也可以同时算自己的方案), 而不是回合制的决策。
> 如果按照上述令牌制的话,由于决策程序是大家自己写的,狡猾的指挥官仍然会在没有令牌的时候去偷偷的提前算方案。
>

俺解释的和 老范的没有冲突,还是描述问题哪!
俺同意, EB 的令牌机制必须是面向 erlang 的 ;-) 即,并发,无状态,无依赖!

那么,对于 EB 时钟的疑问其实已经引发了相关文档的需求,
什么是 EB 时钟/节拍/行动令牌?...

俺是建议,就战场守护神程序来说,应该作到:
- 和EB时钟配合,根据当前配置的节拍来接收行动命令并处理
- 忽略双方非法行动命令
- 输出规范的对战进程日志

这里的`非法行动命令` 就是基于当前所谓 "秒令牌" 的概念
+ EB时钟按照当前配置,定期发布 "秒令牌"
- 不是发布给特定的战士或是"决策程序"(所谓,红军/兰军; 战队)
- 俺建议是种广播
- 真正的定向发布目标,只有战场守护神
+ 双方"决策程序"(所谓,红军/兰军; 战队) 可以根据自身资源,自由进行任意计算,不受此 "秒令牌" 影响
+ 战场守护神 根据 "秒令牌" 的节拍接收双方"决策程序"(所谓,红军/兰军; 战队)的行动命令,并进行胜负核算,以及战报日志更新
- 所谓`非法行动命令`的判定就在这时可能发生:
1. 在每次 "秒令牌" 广播后,双方都只能有一组合法行动指令,即针对所有现存战士的行动指令一次
1. 在每次 "秒令牌" 广播后,批量行动指令提交,战场守护神将仅接收第一组,其它的认为是非法,忽略之!
1. 在每次 "秒令牌" 广播后,直到下一次 "秒令牌" 广播,若哪一方,一直没有行动指令提交,则:
- 建议 战场守护神 就当"决策程序"(所谓,红军/兰军; 战队) 发出了同样的指令,重复上次指令进行核算
- 因为,这和真实战争类似, 如果没有新的命令到来,部队一般就是依照老命令行动的!


以上!

PS:
- 刚刚老范已经自爆了个 允许的Hacking 方向 ~ 可以自行计算,不管 EB 时间节拍的!
- 其实,既然EB 中的行动规则是既定的
- 既然EB 中可以获得当前双方的整体位置
- 那么就可以如象棋程序一样,可以进行预演,推导出最合理的行动了!!!!!!!! ~ 真正的AI 领域了!

--
http://zoomquiet.org 人生苦短,Pythonic!-)
usage 7-zip to replace WinRAR/WinZip; You can get the truely Freedom 4 software.

Max Fung

unread,
Jul 4, 2009, 5:01:47 AM7/4/09
to zoom....@gmail.com, 老范, erlang...@googlegroups.com, ECUG~erlang中文用户组
ok,我们先不用"程序性语言"讨论~

允许我用"口头语言"描述一下

某一天,max,老范,zoom三人使用EB的“真人”方式进行了一场惊心动魄的战斗。

角色分配:
max:时间管理者
老范:红方
zoom:蓝方
棋盘:4x4
棋子:每人4个

战斗在一个月黑风高的夜晚开始了,深夜花园里四处静悄悄~,只有三个怪叔叔蹲在地上,咬着手电筒玩游戏。

第0轮
【max拿这计时器】
『计时器 = 节拍管理器』
『max = 战场守护神』
max:战斗开始吧!每轮的执行时间是1分钟。

第1轮
【老范与zoom在纸上挥笔疾书,写下了他们对四个棋子的操控(移动,战斗……)】
『纸条 = 信息传递』
【max的计时器时间到了】
max:时间到,两位,上交纸条吧。
【max根据纸条上的指令,移动棋盘上的棋子】
【max移动完棋子,将纸条放到了一个盒子里】
『盒子 = 战场情况记录器』

第2轮开始
【老范和zoom看着棋盘上的棋子,各怀鬼胎,时而苦思冥想,时而奋笔疾书,在计时器的滴答中,第2轮结束了】
max:时间到,两位,上交纸条吧。
【max移动棋子中~】
老范:靠,我要执行最前面一行的。
max:shit,我只按你最后写的来做,你第一个棋子写了两条指令,我只按最后一条来弄。
『信息之按最后的为准』
zoom:哇!!!!(惨叫ing)
【zoom偷偷摸摸的想抽回纸条,挨了max一板砖】
max:干哈?写了就不可以修改
『信息不能修改』
zoom:漏写了~(zoom捂着血如泉涌的脑袋,呻吟道)
max:那就按棋子为不动处理。
『没有指令的角色按站立处理』

n轮后:
zoom面带微笑躺在血泊中(经常想偷回纸条,挨了不少板砖,但是奇迹性的胜利了)。
老范捶胸顿足(多写了很多指令,经常性的决策失误,败了~)
max躺在床上,睡觉ing(做这种移动棋子的体力活,太累了!)


以上
有什么描述不对的请修改。

Zoom.Quiet

unread,
Jul 4, 2009, 5:34:38 AM7/4/09
to Max Fung, 老范, erlang...@googlegroups.com, ECUG~erlang中文用户组
2009/7/4 Max Fung <honeygi...@gmail.com>:

> ok,我们先不用"程序性语言"讨论~
>
> 允许我用"口头语言"描述一下

咔咔咔!好故事,应该整理到维基中!
这是讲给玩家,理解实时,以及分布式的好故事!

>
> 某一天,max,老范,zoom三人使用EB的“真人”方式进行了一场惊心动魄的战斗。
>

既然是故事剧本,俺推荐以后类似 口头解说系列的文章,使用统一的规格;
参考:
http://wiki.woodpecker.org.cn/moin/PkmPlatfromStory

() => 场景说明;
{} => 设定说明;
<> => 分镜,导演立旨说明等等;

> 角色分配:
> max:时间管理者
应该追加一个:
比如说 karlcpp: 主持人(战场守护)
> 老范:红方
盲人

> zoom:蓝方
聋子

> 棋盘:4x4
> 棋子:每人4个

围观的: 1~1000000

>
> 战斗在一个月黑风高的夜晚开始了,深夜花园里四处静悄悄~,只有三个怪叔叔蹲在地上,咬着手电筒玩游戏。

(真实场景是这样的:
karlcpp:在天安门广场上搭了个台子,用一些旧电视拼了个大屏幕,
+ 免费组织EB游戏
+ 并讲解给过路打酱油的;
+ 通过各种渠道,定期通报对战双方的行动指令,并立即计算哪个棋子没有血了,挂了!
max: 在昆明家中,因有只巨高级的劳力士手表,所以,指定为本次对战的 "时钟",所作的事儿,
+ 就是根据karlcpp这次比赛的规定:
+ 每隔 1分钟 面对摄像头,吼一声:“又一秒!”
+ 并同时举一下写着"又一秒"的牌子
老范: 在成都家里,摸着自制的EB对战棋盘,听着电脑里的声音,将自个儿想走的棋路对麦克风说出来
zoomq: 在珠海公司里,用3屏电脑参战:
+ 一个播放 max 的网络表演(每隔 1分钟 举一下写着"又一秒"的牌子)
+ 一个播放 karlcpp 在天安门那儿主持进行的战场说明
+ 一个运行自个儿写的程序,根据 karlcpp 通报的棋盘和棋子的行动,不断输入自个儿的程序,
+ 并将结果(自个儿棋子的行动)通过邮件发送给 karlcpp
)

>
> 第0轮
> 【max拿这计时器】
> 『计时器 = 节拍管理器』
> 『max = 战场守护神』
> max:战斗开始吧!每轮的执行时间是1分钟。
>
> 第1轮
> 【老范与zoom在纸上挥笔疾书,写下了他们对四个棋子的操控(移动,战斗……)】
> 『纸条 = 信息传递』
> 【max的计时器时间到了】
> max:时间到,两位,上交纸条吧。
> 【max根据纸条上的指令,移动棋盘上的棋子】
> 【max移动完棋子,将纸条放到了一个盒子里】
> 『盒子 = 战场情况记录器』

战场守护神 ;-)

>
> 第2轮开始
> 【老范和zoom看着棋盘上的棋子,各怀鬼胎,时而苦思冥想,时而奋笔疾书,在计时器的滴答中,第2轮结束了】
> max:时间到,两位,上交纸条吧。
> 【max移动棋子中~】
> 老范:靠,我要执行最前面一行的。
> max:shit,我只按你最后写的来做,你第一个棋子写了两条指令,我只按最后一条来弄。
> 『信息之按最后的为准』
> zoom:哇!!!!(惨叫ing)
> 【zoom偷偷摸摸的想抽回纸条,挨了max一板砖】

zoomq 再次写个纸条给max 或是 邮件给karlcpp;
- 被无视

老范

unread,
Jul 4, 2009, 8:37:00 AM7/4/09
to Max Fung, zoom....@gmail.com, erlang...@googlegroups.com, ECUG~erlang中文用户组
佩服,佩服,我从项目开始不断在用各种方式唠叨的eb, 终于被max 换了种方式讲清楚了。 稍微改下:


战斗在一个月黑风高的夜晚开始了,深夜花园里四处静悄悄~,
只有三个超级帅叔叔蹲在地上,咬着手电筒玩游戏。另外一个黑影藏在角落里,是karlcpp.


第0轮
【max拿这计时器】
『计时器 = 节拍管理器』
『max = 战场守护神』
max:战斗开始吧!每轮的执行时间是1分钟。

第1轮
【老范与zoom在纸上挥笔疾书,写下了他们对四个棋子的操控(移动,战斗……),然后快速扔进一个自己面前的一个神秘盒子(指令多列)】
『纸条 = 信息传递』
【max的计时器时间到了】
max:到盒子里抓出一把纸条, 仔细分辨,把老范填的第5轮执行的一张单子扔回盒子, 有病啊, 这么早就把5轮的扔进来!到时候再说
老范:我就是爱早点扔,你管的着吗? 我的盒子我做主。万一第五轮的时候我起如厕呢?
【max根据纸条上的指令,移动棋盘上的棋子】
角落里的karlcpp 偷偷的开始用sony 录像机对准棋盘(狠狠,我拍)


第2轮开始
【老范和zoom看着棋盘上的棋子,各怀鬼胎,时而苦思冥想,时而奋笔疾书,在计时器的滴答中,第2轮结束了】
max:又去掏那个盒子,拿到了老范的两张纸条,max 看看了, 冷笑两声,撕掉一张
【max移动棋子中~】
老范:靠,我要执行最前面一行的。
max:shit,我只按你最后写的来做,你第一个棋子写了两条指令,我只按最后一条来弄。前面那张作废。

『信息之按最后的为准』

zoom:哇!!!!(惨叫ing)
【zoom偷偷摸摸的想抽回纸条,挨了max一板砖】
max:干哈?写了就不可以修改; 你要改?  你和老范那样再扔张新的进来啊,我不就把前面那张废掉了, 笨!
『信息不能修改,但是可以冲掉』

zoom:漏写了~(zoom捂着血如泉涌的脑袋,呻吟道)
max:那就按棋子为不动处理。
『没有指令的角色按站立处理』

zoom:哇!!!!(惨叫ing) 为什么又打我
【zoom偷偷摸摸的想看老范盒子里的纸条,又挨了max一板砖】
max: 别人的神秘盒子是私有的,你偷偷摸摸干嘛?



n轮后:
zoom面带微笑躺在血泊中(经常想偷回纸条,挨了不少板砖,但是奇迹性的胜利了)。
老范捶胸顿足(多写了很多指令,互相冲突,最后自己都搞不清楚自己要怎么动了,经常性决策失误,败了~)
max躺在床上,睡觉ing(做这种移动棋子的体力活,太累了!)
karlcpp 在家看录像, 呵呵,老范,zoom 你们的套路我都明白了, 明天看我怎么收拾你们。




Zoom.Quiet

unread,
Jul 4, 2009, 8:42:32 AM7/4/09
to 老范, Max Fung, erlang...@googlegroups.com, ECUG~erlang中文用户组
2009/7/4 老范 <fanyu...@gmail.com>:

只有这个俺有意见,最好可以按照上次的指令复用;

>
> zoom:哇!!!!(惨叫ing) 为什么又打我
> 【zoom偷偷摸摸的想看老范盒子里的纸条,又挨了max一板砖】
> max: 别人的神秘盒子是私有的,你偷偷摸摸干嘛?
>

这其实是不现实的吧,
因为战场守护一直在通告战报,至少可以知道历史纸条们...

>
> n轮后:
> zoom面带微笑躺在血泊中(经常想偷回纸条,挨了不少板砖,但是奇迹性的胜利了)。
> 老范捶胸顿足(多写了很多指令,互相冲突,最后自己都搞不清楚自己要怎么动了,经常性决策失误,败了~)
> max躺在床上,睡觉ing(做这种移动棋子的体力活,太累了!)
> karlcpp 在家看录像, 呵呵,老范,zoom 你们的套路我都明白了, 明天看我怎么收拾你们。
>
>
>
>
>

--
http://zoomquiet.org 人生苦短,Pythonic!-)
Free as in Freedom! 哲思自由软件社区:http://zeuux.org

老范

unread,
Jul 4, 2009, 8:59:28 AM7/4/09
to erlang...@googlegroups.com, ECUG~erlang中文用户组

http://code.google.com/p/erlbattle/wiki/EbMaxStory

把max 原创和我修订过的都放上去了。 便于大家对比差异。

对我刚才回的,又改了一点点,节选如下。【】 里面的是改动内容


--------------------------------------------------------

max:干哈?写了就不可以修改; 你要改?  你和老范那样再扔张新的进来啊,我不就把前面那张废掉了, 笨!

『信息不能修改,但是可以冲掉』


zoom:漏写了~(zoom捂着血如泉涌的脑袋,呻吟道),【 那我现在再扔一张进来可不可以,你帮我处理下。

max:不行,这轮我都拿过了,你现在扔进来的等下次吧。 这颗棋子按不动处理。】

『没有指令的角色按站立处理』

--------------------------------------------------------

老范

unread,
Jul 4, 2009, 9:08:48 AM7/4/09
to Zoom.Quiet, erlang...@googlegroups.com, ECUG~erlang中文用户组
> max:干哈?写了就不可以修改; 你要改?  你和老范那样再扔张新的进来啊,我不就把前面那张废掉了, 笨!
> 『信息不能修改,但是可以冲掉』
> zoom:漏写了~(zoom捂着血如泉涌的脑袋,呻吟道)
> max:那就按棋子为不动处理。
> 『没有指令的角色按站立处理』

zoom: 只有这个俺有意见,最好可以按照上次的指令复用;

老范:这个是这样考虑的,上一次比如发的是攻击指令,这轮可能前面的人都死了,或者走了, 是否有必要复用原来的指令?  可以再发一个,也是等价的。
这点我open, 大家讨论。 如果要改的话,还有种改法是发指令的时候同时发要求执行多少遍。 这样我们可以让一个战士连续攻击10次。 或者超前走8步。。



> zoom:哇!!!!(惨叫ing) 为什么又打我
> 【zoom偷偷摸摸的想看老范盒子里的纸条,
又挨了max一板砖】
> max: 别人的神秘盒子是私有的,你偷偷摸摸干嘛?
>
zoom: 这其实是不现实的吧, 因为战场守护一直在通告战报,至少可以知道历史纸条们...
老范: 这点很关键,盒子里面是别人未来计划的动作,当然要保密。 战场守护不通报战报。他只是更新battle_field 那个表。 大家通过battle_field 总是能看到别人战士的位置,以及别人战士正在做什么动作,但是看不到别人脑子里想的下一步干什么的计划(符合自然规律)。   历史纸条估计都已经过去时了,对于进一步战斗决策没有用了。

Zoom.Quiet

unread,
Jul 4, 2009, 9:22:25 AM7/4/09
to 老范, erlang...@googlegroups.com, ECUG~erlang中文用户组
2009/7/4 老范 <fanyu...@gmail.com>:
..

>> 『没有指令的角色按站立处理』
>
> zoom: 只有这个俺有意见,最好可以按照上次的指令复用;
>
> 老范:这个是这样考虑的,上一次比如发的是攻击指令,这轮可能前面的人都死了,或者走了, 是否有必要复用原来的指令?  可以再发一个,也是等价的。
> 这点我open, 大家讨论。 如果要改的话,还有种改法是发指令的时候同时发要求执行多少遍。 这样我们可以让一个战士连续攻击10次。 或者超前走8步。。
> 。
>

好的! 为了 EB 核心程序的简单,俺认为应该当没有指令;

但是这也提醒所有 战队开发者,应该将历史指令保留,以便减少决策运算,,,,可以简单复用!

对于战场守护神,如果战队程序白痴的想对已经死亡的战士下令,,,,
那个在现实战争中,这也是常见的,
作为EB 中高于世人的存在, 守护神,就当放了个屁,不管就好了...

当然的,未来,如果大家的决策程序,对战时,经常战平时,这种狗屁指令,就可以视作指挥力不足,
可以考虑记入胜利核算公式了.... ;-)

..


>> max: 别人的神秘盒子是私有的,你偷偷摸摸干嘛?
>>
> zoom: 这其实是不现实的吧, 因为战场守护一直在通告战报,至少可以知道历史纸条们...
> 老范: 这点很关键,盒子里面是别人未来计划的动作,当然要保密。 战场守护不通报战报。他只是更新battle_field 那个表。
> 大家通过battle_field 总是能看到别人战士的位置,以及别人战士正在做什么动作,但是看不到别人脑子里想的下一步干什么的计划(符合自然规律)。
> 历史纸条估计都已经过去时了,对于进一步战斗决策没有用了。
>

明确,可以看到的消息范畴是明确的,
只是对于已知数据的可能性,有不同想象...


--
http://zoomquiet.org 人生苦短,Pythonic!-)
过程改进乃是催生可促生靠谱的人的组织! (PE keeps evolving organizations which promoting
people be good!)

Karl Ma

unread,
Jul 5, 2009, 4:32:20 AM7/5/09
to erlang...@googlegroups.com
这几天事多,没上来,尽然发生这么大的事,让我当演员啦,哈哈,有出场费吗?
Max 这个故事太好了,你太有才了。

2009/7/4 Zoom.Quiet <zoom....@gmail.com>



--
Karl Ma

郎咸武

unread,
Jul 6, 2009, 11:30:57 AM7/6/09
to erlang...@googlegroups.com
我记得有个文档中明确说明一点,当战士发起攻击的时候不是针对的人,而是针对的“格子”。文档中还明确说明这样攻击会造成误伤,因为在发起攻击到生效,格子的敌人可能走了,也有可能换了新的敌人。
以上回答针对( 老范:这个是这样考虑的,上一次比如发的是攻击指令,这轮可能前面的人都死了,或者走了, 是否有必要复用原来的指令?  可以再发一个,也是等价的。



在2009-07-05,"Karl Ma" <kar...@gmail.com> 写道:
-----原始邮件-----
发件人:"Karl Ma" <kar...@gmail.com>
发送时间:2009年7月5日 星期日
收件人:erlang...@googlegroups.com
主题:[erlang-china:2220] Re: [ECUG:469] Re: 恶狼战役: “时钟要保障每台不同的机器有相同的运算结果” 的进一步解释



200万种商品,最低价格,疯狂诱惑你

老范

unread,
Jul 6, 2009, 9:02:34 PM7/6/09
to erlang...@googlegroups.com, ECUG~erlang中文用户组
咸武:

攻击格子和攻击人这个约定也是和自然界法则相同的。 (我们游戏中大部分规则都是按照自然法则,或者物流定律来定的)

当你向前挥出一刀, 敌人可能跑了,就没砍到; 现在一般的网游都是只要挥刀的时候对方在,就算砍到。 我们是刀落下的时候,对方在才算砍到。。


Regards

老范


2009/7/6 郎咸武 <langx...@163.com>

老范

unread,
Jul 6, 2009, 9:08:47 PM7/6/09
to erlang...@googlegroups.com, ECUG~erlang中文用户组
回答咸武的邮件的时候,我突然想到我们规则的一个可以用于战斗的点。

攻击: 2拍
转身: 1拍。

比如20秒的时候, a 向b 挥出一刀,b 背对着a 。 攻击到22秒生效。  在a 挥刀的时候,这时b 可能可以及时(20秒,21秒)看到这一刀, 就完全可以立刻发出转身指令,这个指令有可能在20秒或者21秒被 接受。 转身就会在 21秒或者22秒发生。 

如果21 秒发生的话, b 可以将正面对a , 减少损失。 如果22 秒发生,看运气, 如果主程序先执行b ,就转过来了。 先执行a ,就没转过来。

因此及时看到别人的攻击, 并及时采取行动,可以某种程度减少损失。



Regards

老范。


2009/7/7 老范 <fanyu...@gmail.com>

郎咸武

unread,
Jul 6, 2009, 10:22:18 PM7/6/09
to erlang...@googlegroups.com
老范:有些问题后面再和你讨论
在2009-07-07,"老范" <fanyu...@gmail.com> 写道:
-----原始邮件-----
发件人:"老范" <fanyu...@gmail.com>
发送时间:2009年7月7日 星期二
收件人:erlang...@googlegroups.com, "ECUG~erlang中文用户组" <ec...@googlegroups.com>
主题:[erlang-china:2236] Re: [ECUG:469] Re: 恶狼战役: “时钟要保障每台不同的机器有相同的运算结果” 的进一步解释



200万种商品,最低价格,疯狂诱惑你

Zoom.Quiet

unread,
Jul 6, 2009, 10:26:23 PM7/6/09
to erlang...@googlegroups.com, ECUG~erlang中文用户组
2009/7/7 郎咸武 <langx...@163.com>:
> 老范:有些问题后面再和你讨论

讨论请公开;
这是公共智力资产了!

建议使用 IRC

--
http://zoomquiet.org 人生苦短,Pythonic!-)

老范

unread,
Jul 6, 2009, 10:28:57 PM7/6/09
to zoom....@gmail.com, erlang...@googlegroups.com, ECUG~erlang中文用户组
Zoom:

你看我们是否约个时间,组织一次EB 参与者 IRC 讨论会。 把大家关心的问题再充分讨论一下?

由于大家都是业余玩的最好是找个晚上的时间。

你组织一下好吗?


Regards

老范



2009/7/7 Zoom.Quiet <zoom....@gmail.com>

Zoom.Quiet

unread,
Jul 6, 2009, 10:31:30 PM7/6/09
to 老范, erlang...@googlegroups.com, ECUG~erlang中文用户组
2009/7/7 老范 <fanyu...@gmail.com>:
> Zoom:
Zoomq 是也乎 ;-)

>
> 你看我们是否约个时间,组织一次EB 参与者 IRC 讨论会。 把大家关心的问题再充分讨论一下?
>

关心的问题,请老范先代为列出来,在专门维基中,并给出参考链接,以便大家先预习;

> 由于大家都是业余玩的最好是找个晚上的时间。

具体时间,俺建议是 固定到周521:00~22:00 定时,定议題不拖时间;
在此之前,请大家先练习加入 #erlbattle 房间,使用 IRC ;-)

--
http://zoomquiet.org 人生苦短,Pythonic!-)
KM乃是培育可催生自学习型组织的文化氛围!

郎咸武

unread,
Jul 6, 2009, 10:38:26 PM7/6/09
to erlang...@googlegroups.com
看来有些误解,我说的后面讨论肯定会在邮件列表里面讨论了
 
 
 > -----原始邮件-----
> 发件人: "Zoom.Quiet" <zoom....@gmail.com>
> 发送时间: 2009年7月7日 星期二
> 收件人: erlang...@googlegroups.com, "ECUG~erlang中文用户组" <ec...@googlegroups.com>
> 抄送: 
> 主题: [erlang-china:2248] Re: [ECUG:469] Re: 恶狼战役: “时钟要保障每台不同的机器有相同的运算结果” 的进一步解释
> 
> 2009/7/7 郎咸武 <langx...@163.com>:
> > 老范:有些问题后面再和你讨论
> 
> 讨论请公开;
> 这是公共智力资产了!
> 
> 建议使用 IRC
> 
> > 在2009-07-07,"老范" <fanyu...@gmail.com> 写道:
> >
> > -----原始邮件-----
> > 发件人:"老范" <fanyu...@gmail.com>
> > 发送时间:2009年7月7日 星期二
> > 收件人:erlang...@googlegroups.com, "ECUG~erlang中文用户组"
> > <ec...@googlegroups.com>
> > 主题:[erlang-china:2236] Re: [ECUG:469] Re: 恶狼战役: “时钟要保障每台不同的机器有相同的运算结果”
> > 的进一步解释
> >
> > 咸武:
> >
> > 攻击格子和攻击人这个约定也是和自然界法则相同的。 (我们游戏中大部分规则都是按照自然法则,或者物流定律来定的)
> >
> > 当你向前挥出一刀, 敌人可能跑了,就没砍到; 现在一般的网游都是只要挥刀的时候对方在,就算砍到。 我们是刀落下的时候,对方在才算砍到。。
> >
> >
> > Regards
> >
> > 老范
> >
> >
> > 2009/7/6 郎咸武<langx...@163.com>
> >>
> >>
> >> 我记得有个文档中明确说明一点,当战士发起攻击的时候不是针对的人,而是针对的“格子”。文档中还明确说明这样攻击会造成误伤,因为在发起攻击到生效,格子的敌人可能走了,也有可能换了新的敌人。
> >> 以上回答针对(老范:这个是这样考虑的,上一次比如发的是攻击指令,这轮可能前面的人都死了,或者走了, 是否有必要复用原来的指令?
> >> 可以再发一个,也是等价的。)
> >>
> >>
> >>
> >> 在2009-07-05,"Karl Ma" <kar...@gmail.com> 写道:
> >>
> >> -----原始邮件-----
> >> 发件人:"Karl Ma" <kar...@gmail.com>
> >> 发送时间:2009年7月5日 星期日
> >> 收件人:erlang...@googlegroups.com



200万种商品,最低价格,疯狂诱惑你

老范

unread,
Jul 6, 2009, 10:43:28 PM7/6/09
to Zoom.Quiet, erlang...@googlegroups.com, ECUG~erlang中文用户组
周五晚上可能不大好。 我们老年人没关系, 年轻人可能要出去happy. 


大家投票吧。

钟伟

unread,
Jul 7, 2009, 9:53:27 AM7/7/09
to erlang...@googlegroups.com
老范只是昵称中有个“老”字。其实你年轻着呢。
 
同意周五晚上哈。
对了,我就是 小钟,以前那个weber...@gmail.com垃圾邮件实在太多,换成现在这个了。
Reply all
Reply to author
Forward
0 new messages