[:zh]BC2后期,国外EmulatorNexus(E组)出了自研主服务器后,国内BC2玩家就有多个人找过我,问我能不能做一个国内版本,因为E组的版本当时稳定性欠佳,而且毕竟是在国外。最初我没有答应,一方面人懒,另一方面当时我在正版玩的也挺好的,对国内服没啥需求。其实E组2010年左右是开源的,后来不知为什么不开源了,但其最后一个开源的10.0版其实已经实现了部分功能,我也早就到他们的项目网站下载了代码看过,事实上他们开发了客户端、服务端的注入补丁以后,分析协议其实只是工作量的问题,因为EA战地系列通讯都是字符串明文的。再后来又有人找到我,这个时候正版已经没几个ping好有人的服务器了,恰好当时工作不是很忙,所以我就动手开始了。当时用作参考的有E组的10.0和一个俄罗斯人写的开源php版,一周左右我就做出了首个版本,用C#,基于江大渔的SuperSocket,因为当时我设计的公司的游戏服务端就是采用了SuperSocket,故直接拿这套架构套用,省了很多工作。第一个版本出来以后我把编译后的二进制代码交给此人测试,后来他说想自己开主服务器,我没有同意,所以那之后也没再公开过代码或二进制版本了。最初的版本问题多多,但基本可用,早期的也谈不上架构,基本是赶时间实现功能而已。后来更新了架构,修正了积分Bug后,就有了目前的1.5稳定版。可我没想到的是后面的事……
可是前几天我偶然浏览很早去的那个俄罗斯论坛,赫然发现了此人发帖说他有C#+SuperSocket做的主服务器源代码,想请人帮忙一起开发,我马上想到是那个早期版本被反编译盗用了,索性把文章中的鸣谢删除,做小偷我也没必要谢他什么了。今天一个运营游戏服务器的玩家跟我提起网上有开源的C#版本主服务器的事,我说这是抄的,懒得管,抄去吧,不知怎么就被拉进群跟抄袭者对质。我没想到的是一个好几十岁,孩子都多大的人,竟然会说是因为我没有对二进制代码做混淆加壳,所以他才反编译拿到代码……可笑的逻辑,我没锁门,你就进来偷东西,就是合法的了?其实如果早跟我说,注明代码来源是我,我根本不会管这事,既然给你未混淆的.Net二进制代码,说明我信任你不会做这种事。转帖不注明原帖作者,论坛的小白都不干这事,后来竟然还说让我去法院告他,索赔……真是比小学生都不如的脑子。我早就说明,抄了就抄了,这只是你自己的良心问题,我不靠运营主服务器盈利,你抄的东西自然也不会跟我产生利益冲突,我根本也就没必要去争论什么,只是没想到人没脸皮可以到这个程度而已。
说我没看过源码,我是没看过,我也没必要看,早期版本功能并不全,做注册发邮件、排队,OK,这是你们做的,但架构与其他代码必然是抄袭的,看图~
下面的是抄袭版本:
下面的是我的早期版本
可以看到,抄袭者把项目目录改了个名,大部分代码连文件名都没改,还不知廉耻的把自己的名号放上。用红框标注的几个文件在我的项目中不存在,因为在我的项目中,这都是引用了Sylphia.Lib的代码,抄袭者一旦引用这个库,就露馅了,索性都反编译,直接把需要用到的Base64、Md5以及扩展方法类拿出来用。而且从抄袭版的项目中有Global.cs ,并且把AssembleInfo.cs放到根目录的情况看,这就是用Reflector反编译的代码而已。下面的图是Sylphia.Lib代码:
懂编程的人一看便知,两个人各自独立开发同一个项目,哪有那么巧所有文件命名一模一样,连所用的第三方库都一样(SuperSocket、ServiceStack)?
国内开源项目少,托了这些无良抄袭者的福啊。您继续抄,高手!不过话说回来,说到稳定性,我这个主服务器可能是目前所有项目中最高的,不然小偷怎么不去用那个PHP版本的?阿Q一下。[:]