跨平台游戏开发:易于开发与安全性

alc*_*ado 2 security cross-platform

我是Argentum Online(AO)社区的成员和贡献者,这是来自阿根廷的第一个MMORPG,即自由软件 ; 虽然它不是3D,但它确实令人上瘾,并且拥有数十万用户.

真的很不幸的是AO是用Visual Basic开发的(是的,你可以笑)但是前社区,所以想象一下,代码不仅糟透了,它还具有零可移植性.

我正在计划,有些朋友要改写客户端,而作为GNU/Linux疯狂,想要跨平台做.其他一些人也在使用Java中的服务器.

所以我最大的问题是我们想要使用快速开发语言(如Java,Ruby或Python),但客户端会非常不安全.Ruby/Python版本可以使用它的所有代码,Java可以很容易地解密(是的,我们在社区中有一些破解者)

我们已经考虑将C/C++中的安全模块实现为动态库的选项,但它可以替换为自定义库,因此它不是很安全.

我们还在考虑使用C++和Ruby/Python中的GUI来执行核心应用程序.但还没有分析它的所有含义.

但是我们真的不想用C/C++编写整个游戏,因为它不需要那么多的性能(游戏平均以18fps的速度播放),我们希望尽可能快地开发它.

那么在我的案例中你会选择什么?

谢谢!

And*_*gor 8

有一句古老的格言:"默默无闻的安全感并不安全".

不要担心代码可用,这根本不会有任何区别.相反,设计网络协议使其难以破解,这意味着对重要事务的真正强大的身份验证.

实际上,我要做的是尝试将游戏移植到Mono,从现在的VB源开始,然后逐渐在C#或IronPython中编写新代码.


kyo*_*ryu 5

理想情况下,客户端是否"安全"应该不是问题.如果这是一个问题,那么游戏架构就会出现问题.

客户能够"做任何想做的事"是无关紧要的.在架构良好的多人游戏中,客户端只拥有绝对需要的数据,并且所有操作都由服务器授权.

让我们说有人嘲笑客户说他们的对手已经死了.精细.他们可以整天在客户端破解它,甚至可能欺骗渲染器让对手摔倒.但是,他们没有权力说出对手是否死了 - 这取决于服务器.所以服务器收到一条消息"对手X已经死了".服务器应该足够智能,以"嗯,不",对手愉快地继续活着并做任何他想做的事情.

当然,这是理想的,并且通常需要对游戏玩法和/或服务器负载的流动性做出一些妥协.但是,对于重要的事情,一切都应该由服务器验证.特别是在MMO中​​.

将您的游戏视为您的客户是开源的.