这个月,这个blog竟然为我带来了330多块钱的收入,这比我大学时期一个月的生活费还多30多块钱.非常之不可思议,一个几个月才更新寥寥几篇日志的blog,竟然….是买这里广告的人太傻,还是这里真有广告价值?或者是text-link广告的一个弊端?
既然如此,那我就只有推荐朋友们,如果你们也写blog,也想顺便赚点烟钱,可以是试试text-link,也就是几个文字链接,不影响美观.
回昆腾王。虽然我信什么回答了再点8个人就一定会幸福,但是我还是想玩,人都快被你们点完了,我就点:老婆,东川,还有正在看这篇文章的你,你,你,你,你还有你,一共八个,别往后望了,就差你了,要么留言,要么被点。
(注意规则:除去一个你不想回答的问题,回答剩余所有问题,加上一个你想问的问题,然后点名)
1.你認為分手後的男女朋友还能做普通朋友嗎?
能,只要想,只要愿意,就能。
2.你最希望从朋友(不包括爱人)那里得到的 ?
共振!
3.最近最开心的事?
回了趟长沙,虽然忙着办麻烦的证件问题,但见到了叶大师,郭眉,见到了阔别已久的瓜票山重建地。
4.假设你丈夫(或妻子,爱的人)在外面有其他相好的人,你会怎么做?
我会鼓励她去追求她的幸福,如果我认同她相好的那个人,我会自动退出,如果我不认同,那么我希望能和她坦诚的交流,确认他们都是真心的并且比对我还真心之后,祝福他们后退出。如果他们的相好只是玩玩,那么我离开,等她玩够了,再说。
5.说出点你名的人的3个优点(不可删除题)
常微笑,泰然自若,深邃而可爱。
6.你最想和你最爱的人去的地方是哪里?
周游四海,每个喜欢的地方住上一段日子。
7.当你发现自己陷入了无法改变不可挽回的境地,你会怎么办?
干别的事儿去。
8.对你来说,最美好的东西是什么?
最美好的东西,其实是你已经失去的东西。
9.如果可以選擇,下輩子你希望自己是什麽?
下辈子,我完全不信有下辈子,不过如果真有,我还可以选择,那么我希望我下辈子是——什么都可以(哈哈,我还是不信这东西)。
10.如果喜欢的人欺骗你...你会怎么做?
看是哪种欺骗,如果是善意的,那么很感动。如果是恶意的,那么这人可是在磨炼我?我会分析,然后才会怎么做。
11.在你眼里,爱是什么?
爱是迷幻,爱是共振,爱是幸福。
12.当你的朋友背叛你时,你怎么面对?
反思。
13.心情不好时的减压方法是什么?
我就选此题不作答。
14.崇拜的人?
所有伟大的人,也不算崇拜吧,太严重了,崇敬差不多。
15.如果你喜欢的人喜欢上你的好朋友怎么办?
那简直太好了,好朋友们就又多了个好朋友,就一起玩咯。
16.你觉得什么样的生活是你想要的?
抽象的说的话,就是非物质的生活。具体的说,就是有那么一个大庄园,我住在那里,所有我爱的,喜欢的人,都可以随意的使用这个庄园里的任何物品,这里有画室,这里有乐队排练场地,这里有顶级的计算机室,这里还有烟又酒有零食,有五英里长五英里宽的白色大床。在这里可以自由创作和玩乐。当然这个有点夸张了,不太现实,现实一点的话,就是能够有点小钱,然后做做自己喜欢的创作,能出一些比较牛逼的作品,自由自在地,还总有饭吃。
17.你最大的愿望是什么?
哇靠,上面说的那些不就是吗?
18.被我点到名字的感受是什么?
有好事发生了,原来是答题,很久没答题了,毕业后就一直没机会答题了,总算给我逮到一个机会。
19.在你的眼里,什么是永恒的?
宇宙中永远不变的是变化,没有绝对的静止,只有无休止的运动。永恒的是回忆,是憧憬,也是现在。
替代11的问题:你想要创造些什么?
如果你是一个Flash ActionScript程序员,我想你一定听说过或者使用过Xray,如果没听说过Xray那你也一定听说过Papervision3D,也许你不关心什么3D从而也没听说过Papervision3D,那你至少也听说过Red5,如果你都没听说过,那么你实在不能算上一个活跃的Flash程序员,接下来的文字可能你也不会关心了(不过看看也没什么,看了帖就要记得回帖!):P。
约翰·戈登(John Grden),同时是这三个项目的开发人员,并且同时还是一个摇滚鼓手(偶尔也表演下吉他), 在他的blog上,也许你还能找到他在一些聚会上的演奏视频。就这样一个牛逼的人物,并且还是在富裕的美国生活,竟然没有钱购买一个程序员必备的工具——苹果电脑(他希望是一台Macbook pro),我想也许他把大部分精力都奉献在了这些免费的开源项目上,如果你曾经或者现在使用了他们所开发的项目,那么,是否应该帮助一下这位牛人让他拥有一台牛机器呢,如果有这样的想法,点击这里看看吧,或许你能帮上忙。
AsWing到目前为止收到的捐赠刚好100美元左右(最近集资购买UI art design的钱除外,那个是要给出去的。在这里我要感谢AsWing群里面的朋友们的慷慨帮助,那天你们着实让我感动了。),但是网站空间和域名就已经花掉了我差不多300美元(两年多),本来还打算收到捐赠向其他成员分一些的,但是目前是总收入是-200美元,没办法分了。虽然我听说并看到过Xray, Papervision3D和Red5,但由于自己的项目还用不到,所以一直没有使用。但是,还是决定以AsWing的名义向约翰捐赠了50美元,我想很多人看到osflash世界里如此多的开源项目,可能有人认为这些人都不缺吃穿了吧,有那么多时间来开发开源项目,约翰的经历再次向我们说明(尼古拉斯(Nicolas Cannasse)是上一次证明),这群人并不是什么富翁,他们甚至连一台电脑都买不起,他们拥有是高超的技艺和伟大的自由分享精神。这样说可能让人觉得我在间接赞美我自己,对,你猜对了,我就是在赞美所有开源人士,包括我自己。如果一些开源项目帮助到了你或者你公司,说服你自己或者公司老板,向这些开源项目捐赠一些美元吧,哪怕是一瓶酒钱,对他们也是帮助且鼓励很大的。
给约翰的捐赠到目前才达到1400多美元,离买苹果还很远, 如果愿意,记得点击这里帮助约翰,让约翰·戈登吃上苹果吧。
http://www.aswing.org 上面放了个google的广告联盟,想不到广告的点击率如此之低,叶面被浏览了1千好几百次,广告竟然才被点击了一次。那些广告并不是没有吸引力阿,好几次我自己都忍不住想去点,但是怕google认为我作弊,因此不得不强忍住内心的欲望,没有去点它。为什么其它人就那么不想去点呢。非常奇怪。
After read Den Ivanov blog this post , i’v never placed any ads on my any site, but now i want to take a try, maybe i will not need to pay for the host any more. :)
I placed a text-link-ads ads on my site, there’s has no one bought a ads on my site yet, maybe my blog is not very active these months, well, maybe i need to keep posting from now on. :)
And, i also placed a ads on aswing site, with another method, no one bought yet too. :)
Just a try, let’s wait and see.
我考上研究生了马上就要启程去学校了
但是还是很怀疑
真的就考上了?
自己反复的确认了几遍
的确是参加了考试
考场的情景记忆犹新,还在考场教室外面的树下抽了根烟,乱丢了烟头在数脚下
学校的通知书也在桌子上
上面盖着学校的章
真的是马上就要去学校了吗?
真的吗?
不用复试吗?
复试好像也都已经通过了
而且还在另一个学校补习过
我开始准备东西要出发了
但是还是有些不太确定
真的,妈妈说
真的,同学也说
真的是真的,我非常兴奋
又要开始旅行了
旅行到从前的地方
那个山脚下的大学
等完全醒来过来的时候
再确认一遍
惆怅而伤寒,原来我又做了这个梦
我不可能回学校,我在广州,我得做事赚钱,得在商业泥潭中爬行
记得有次在钟杨那吃饭
钟杨突然说想靠MBA研究生,调侃说,要不我们一起考学校的研究生
再一起回到那个地方
还是原来那样的,又可以原来那样,学校以及学校周围的一切
我当时笑了下没回答,想怎么可能啊,现在都要生活
但是没过几分钟,我就很想了,很想说,好啊,一起考吧
但是理智还是战胜了情感
现在的情况,怎么可能,本科的债都还没还,事业也毫无成就
我是真的想回学校吗
也许安东尼奥尼某部电影的最后一幕,让我理解自己的心情
男主人公我背向摄影机和观众,面对苍茫的大海,左边是海中的火山,右边是冰冷厚实的混凝土墙壁。
最近有一些国内的玩家给我发邮件询问和讨论一些robocode的信息,勾起了我当年的回忆,因此在给Aspirin的回信中一发不可收拾,写下了整个回忆录,发到这里,希望对喜欢robocode的朋友有所帮助,或者权当作一篇玩家故事小品文,一笑了之。
此信如下(稍有修改):
Aspirin,
如果我们早认识几年,我们可能会在一起并肩作战。:)
我已经差不多2年没有再玩过robocode了,最后一次,也就是差不多我离开PASoft的时候。
从我的robocode生涯的开始说起吧,大概在我大二快过完的时候,也就是大概2002年的样子,我和班上几个同学遇上了robocode,刚开始大家都很感兴趣,都在玩,也就是拿例子机器人改几个参数然后编译运行一下,这东西真正入门其实并不容易,那些离散的概念对于新手来说,不容易理解并掌握(比如fire和setFire的区别),最后坚持下来的,只有我和同班的Xiemin两人(这也是为什么我和他的机器人用cx包名的原因,c即是Chen Jing,我的真名,x即是Xiemin),我在robocode上花的时间最长,有时候是整个一个多月每天8个小时甚至有时候10多个小时的编写和调试程序,有时候晚上很晚上床睡了,睡着突然想到了改进方法,于是下床编写,编写好了肯定忍不住调试,肯定就要弄到天亮才会继续爬上床了:)。终于在大概半年多以后,我们学习到了很多技巧(当然很多是通过国外优秀机器人的源代码分析学习的),在第一次IBM全世界大赛的时候,我们的技术还很初级,没有任何高超的运动/瞄准算法,但是我们合作的机器人Chick还是获得了1v1第11名,没能晋级8强,很是遗憾。就在那次比赛之后不久,我们一次无意中的对国外一个小机器人的分析,学习到了模式匹配(Pattern Matching,见http://robowiki.net/cgi-bin/robowiki?PatternMatching)算法,这种方法对于robocode的瞄准及其有用,其实在这之前Xiemin就研究出了模式匹配算法,它能几乎百发百中的射击Circle机器人,让我很是羡慕。他做的是全匹配方法,因此只对简单模式的机器人有用,比如直线,绕圈,固定S型运动模式的机器人,对于稍有变化的机器人(大多数机器都会有变化),效果不好。我认识到了模式匹配的威力,慢慢研究,Xiemin那时候有段时间没有玩了,我在继续,在一天晚上一个人在学校外的出租屋里抽烟的时候,我从嘴里吐出的烟圈突然想到一个算法,兴奋得我几乎没睡着觉,这个算法采用Wave(波,即烟圈,见http://robowiki.net/cgi-bin/robowiki?Wave)进行模式匹配并得到瞄准角度的算法,由此诞生了Cigaret(http://robowiki.net/cgi-bin/robowiki?Cigaret),我把这个算法精简,用很少的代码把它写成了一个mini-bot(http://robowiki.net/cgi-bin/robowiki?MiniBots),Cigaret一出来就在eternal-rumble上取得的不错的成绩,大概10多名,我持续调试,调试机器人是最费时间的,有时候改个小参数,就要跟若干个敌人各调试几百场,才能断定这个参数比原来的参数好还是坏,不长时间,Cigaret就跻身到了第二名,第一名是当时很出名的SandboxDT(http://robowiki.net/cgi-bin/robowiki?SandboxDT),Cigaret以mini-bot的身份持续在第二名的位置(mini-bot中排第一)大概有一年左右的时间,并且在一次运动算法升级的时候,排到过第一名,但是很快就又降到了第二名。因为SandboxDT实在太强了,他的机器人是不开源的,因此很少人知道他具体的算法。我们的大部分机器人一直保持开源,当时Cigaret引起了世界各地玩家的关注,我们也参与到国外的讨论组和世界各地的玩家讨论,就是这里http://robowiki.net ,这个wiki现在还运行着,还有不少玩家活跃在上面,因此你可以上去看看,上面也有排行榜。你们可以参与进去。几乎所有的robocode信息,算法技巧,排名历史,甚至robocode的发展历史,各阶段取得优良成绩的机器人历史,都在上面有记载。这里是目前全世界robocode玩家的聚集地:)
对了,这里要提一下RoboChina,(www.robochina.org) 是天翼·李建立的中国robocode网站和论坛,一度火热,并有比赛排行榜。PASoft的前身也是他发起,我和Xiemin加入成为开发人员。,那时候国内热心的玩家Arbow,Liuyang也写了不少不错的机器人,后来robochina域名过期没来得及续费,被国外无聊的域名公司抢注了,我们资金有限,没能买回来。后来用了ai-code.org域名,大量玩家流失。后来慢慢……没人了,哈哈,现在也想不清楚具体怎么回事了,反正就那样慢慢robochina在国内玩家心中淡漠消失了,robochina的玩家似乎也随即消失了……。
说到robowiki,那是另一个时期的来临,那个时候eternal-rumble已经不再更新了,你可以看到eternal-rumble最后一次的比赛是遥远的2003年。到了robowiki时期,机器人技巧经历了两次大的突破,在eternal-rumble时期,最牛的辉煌的广为人知的技术是模式匹配+随机运动(http://robowiki.net/cgi-bin/robowiki?RandomMovement),很多优秀的机器人都采自的这种技巧(Cigaret是其中之一),之后,由于模式匹配算法的种种缺点,比如运算速度慢,所以不能分析太多的数据,否则机器人太慢会被disabled,太慢也造成调试很费时间,效率不高。后来SandboxDT的作者公布了他的minibot SandBoxMini(http://robowiki.net/cgi-bin/robowiki?SandboxMini)机器人的算法,大家学习到了统计学算法,当时称为guess factor(http://robowiki.net/cgi-bin/robowiki?GuessFactor)技术,我也开始尝试此项技术,enternal-rumble快关闭的时候我出的CigarteST就是对此的一种尝试,你从它最后一次比赛排行第二可以看出,效果很不错。后来就出现了david alves的经典机器人,一举打败了SandBoxDT的统治。在后来kawigi也推出了不少优秀机器人,很长一段时间,大家都是在这种机器人上不断的调优,由于robocode世界,大家都崇尚相互学习,大多机器人都是开源的,所以当前最好的技术,老玩家大家都熟悉,因此也就是比拼一些小的改进,一些实现方式的不同,所造成的不同成绩,大的思路大家都是相同的(当然很多新手也是停留在很初级的技巧上),robowiki的维护者瑞典的PEZ也推出了不少优秀的机器人,还有很多,我现在不能一一记起来。当然,在这个时期,还有一些不得不提的技术,比如Virtual Guns(http://robowiki.net/cgi-bin/robowiki?VirtualGuns)技术,因为流行的好的瞄准算法是模式匹配和统计学,大多机器人都是要么采用模式匹配,要么采用统计学,Virtual Guns技术就是,具体用一种方法的设计的时候,同时还虚拟(假设)用另外一种,由此统计,对于当前的敌人,哪种效果更好,因此下一次瞄准就采用哪种。我和Xiemin合作开发的Princess好像就用了这个技术,但是效果不是很好,PEZ大量使用了此技术,取得了不错的效果。但是,终究不是大的突破,所以很难有突出的机器人诞生。不久后,一个哪个国家的作者我忘记了,通过修改我和另一个国外人合作开发的机器人Sedan的源代码,发布了一个机器人,一举排到了排行的前几名,由于新手很难会有如此成绩的,所以引起了大家的关注,大家发现了他是通过修改Sedan而来,并且没有遵守开源协议(他的机器人修改自我们的开源机器人,但他没有开源,http://robowiki.net/cgi-bin/robowiki?RWPCL),受到了大家的谴责,我也比较气愤,因为他是通过我们的机器人改来的,我反编译他的代码,并发现了一个可能会有重大突破的改进思路,就是通过自己中弹的信息来调整自己的运动,因为在此前的时间里,大家都关注在瞄准算法上,运动算法没有什么突破,还是随机运动占主流,也是最好的运动,一个调优的好的随机运动,效果很好,既能让模式匹配难以匹配,也能让统计学统计的每个角度概率都差不多。但是随机运动毕竟是死的,它不能自我调节,不能像瞄准算法的模式匹配或者统计学那样的根据敌人的情况学习。由此,我试验出了Lacrimas,采用反统计学的思路,就是当自己中弹的时候,就认为中弹的那个角度,被敌人统计为最高概率的角度,因此调整这个运动概率,再次运动。一出来,取得了很好的效果,甚至可以打败SandBoxDT,SandBoxDT的作者Paul Evans很快推出了新版SandboxDT,维持住了他的统治地位。由此Lacrimas受到关注,但当时由于什么原因我现在忘记了,一段时间没有再继续改进。后来,我再上robowiki的时候,发现大家讨论起了WaveSurfer技术。此技术的思路和Lacrimas一样,就是反统计学,此技术的倡导者abc推出了得到巨大成绩突破的机器人Shadow,引起了大家的极大兴趣,并且abc公布了此技术的思路,于是Wavesurfer迅速得到推广,很快SandboxDT被推下了统治地位,并一去不复返,再也未能像以前那样每次被大败都能很快爬起来。我后悔自己当初放出Lacrimas的时候没有开源,当时想保密思路,改进得更牛逼了能稳居第一了再分享,因此没有人讨论,没能像abc那样发展成Wavesurfer,由此看来,在对待技术上,一定要开放,不要闭塞,否则自己发展很慢,我由于自己的狭隘,错失了一次坐上冠军宝座的机会,当时怎么就没能像当初开发出Cigaret和Wave技术时那样开放呢,我很为自己的封闭狭隘而遗憾了一段时间。Wavesurfer的思路和Lacrimas的运动是一样的,但是Wavesurfer的实现方法很科学,这也是WaveSufer这个名称的由来,它把敌人击中自己的信息统计下来,根据概率形成一个个角度范围颜色深度大小不同Wave波浪,在敌人发射炮当时,假设敌人发出了这样一个Wave,让自己的机器人在Wave上根据颜色深度而作冲浪运动(我们大多都采用一些辅助工具,比如RobocodeGL来实时绘制出这些图像信息,便于实时的观察和分析Wave变化, 后来还有更方便的可以替代RobocodeGL的工具我忘了叫什么了),也就是不断往颜色深度低的地方滑动,这点改进非常有效,比起Lacrimas的点到点运动(直线往颜色深度最低的点运动),优秀很多,因为它总表现为绕敌人圆周来回运动,因此敌人的模式匹配相当于也简化为统计学了,由此同时也有效的反了模式匹配。后来我和Xiemin合作开发了Pear(http://robowiki.net/cgi-bin/robowiki?pear)机器人,采用此技术,由于此技术实现起来难度不小,我们用了差不多2个月时间开发和调优完成,代码量已经可以算是一个小程序项目大小,总共大概40多个类,Pear取得了不错的成绩,现在你到robowiki排行榜上还能看到它,已经是几年前的机器人了,现在还排在比较靠前的位置。直到现在,WaveSurfer仍是最好的运动策略,统计学瞄准,仍是最好的瞄准策略,目前排行榜前十的机器人大概都是采用的这两种技术,呵呵,后者是统计学,而前者是反统计学,虽然后来也出现了Anti-WaveSurfer瞄准策略,但是并不是什么革命性的突破,我想,老在统计学上面反来反去,不是什么好的方向,下一次重大突破,有待后来者们的努力,记住,要想登上冠军宝座,革命新的突破是唯一道路(以往的例子已证明)。
之后,我就再也没能玩robocode了,由于工作的繁忙,由于robocode机器人技术已经如此高深,现在要写一个能排到前十的机器人,就算是一个老手,没有两个月时间日以继夜的努力,也很难成功。
我们一直在等待IBM的下一次国际大赛,或者在中国举行大赛(其他很多国家都举行过),但是IBM一直没举行。
之前我介绍的,算是1v1的技术和历史,对于Melee还有Team的比赛,在我认为,从来没有过像1v1的模式匹配,统计学,WaveSufer(我和Xiemin称为反统计学)那样的辉煌技术突破,因此没有详细介绍,可以提到一些比较优秀并很有益的技术,比如反重力Anti-Gravitation,很有趣的技术,它的思路是这样的,由于在Melee混战中,你越跟大多数敌人混在一块,越死的快,因此跑到人烟稀少的区域,从远处射击人烟密集的地方,越能取得好成绩,因此Anti-Gravitation假设每个机器人都有排斥的力量,墙壁也是(避免装墙),每个tick都分析自己周围那个方向的磁力最低,因此往那个方向运动,由此,自己总能往人烟稀少的地方跑,这很有效。很多优秀的Melee机器人都采用了这种思路,虽然具体实现方式可能不同,但是都能取得不错的效果。此种思路,非常启发人,你可以从这个技术和WaveSurfer技术看到,模拟一个现实的物理现象(重力/磁力,波,冲浪),是多么的优美和有趣啊,并且总能获得很好的实战效果。还有更多的例子,我这里就不一一追述了。从生活中领悟,乃是技术突破的关键。在你编码和思考疲劳的时候,或许出去走走,你就会有更多的发现。
Team的话,我没有深究,虽然也尝试写过,但是都仅限于一些是人都想得到的简单方式把几个Melee机器人和在一起组成一个团队而已。并且,其他玩家也很少有人深入发展Team,因此,也没有什么可值得提的好思路。
由于时间仓促,事先也没有准备,就介绍到这里,时隔我最后一次写机器人,也大概2年多了,很多以前知道的东西,现在也很模糊了,因此未能全面而详细,请见谅。更详细的各种信息,你可以通过浏览http://robowiki.net 而得到。
最后,我不得不提一下在我毕业后和Xiemin还有Cairong创立的公司,PASost(http://www.ai-code.com),后来天翼·李也加入了,我们开发了类似robocode这样的游戏平台,功能更强大,支持Java,C/C++,Delphi…多种语言编写机器人,并且提供了很好的机器人编写/调试环境。我们还开发了机器人足球平台,跟国内外现有的仿真平台不同,我们没有走完全仿真的思路,而是像robocode那样的简单有趣的模拟方式。但是由于市场推广困难,我们几人在去年和今年相继离开。此产品现在由投资我们的公司继续持有并运营。对于国内玩家,如果有兴趣组织发起此类游戏比赛的朋友,我非常推荐采用我们的平台,因为它用起来更简单,功能更强大,并且有完善的工具,支持更多的语言。非常希望看到国内能有此类活动的发展,可惜无奈,我已无能再投身此业。