我正在考虑开发在线多人社交游戏.世界的共享状态在后端需要快速的东西,所以潜在的解决方案似乎是:
服务器上的快速游戏引擎(例如c ++)和一些前端语言(php/python/ruby)+ flash
python中的整个堆栈(使用twisted或stackless python)+ flash
.NET(asp.net或asp.net mvc)+ flash
.NET + silverlight
从生产力的角度来看,第一个可能是过度杀手(3个异质层)
NR.4可能是程序员的天堂(所有层的共同环境),但是:
没有用Silverlight构建这样的东西,也许有一些隐藏在角落里的showstoppers
可能很难找到银光设计师
尽管与SL完全OO架构相比,Flash电影/剪辑模型受到批评,但在外部设计师设计虚拟世界的其他部分时,这不是一个优势吗?他们可以用例如准备.swf.4个项目的4个视角 - SL会不会更难?
Silvelight显然缺乏某些游戏功能(如碰撞检测)
你怎么看?
[编辑]游戏本身将成为更大的门户网站的一部分 - 因此将引擎与某些Web框架集成将是一件好事.
我花了一年的时间研究大型多人在线游戏,使用Silverlight作为前端,使用Python作为后端(我实际上在Silverlight中使用IronPython以简化开发)
Silverlight非常适合这个,我不会做任何其他的严肃的在线游戏.它已占有35%的市场份额,当你完成开发时,它应该足够高,不再重要.对于严肃游戏,大多数人真的不介意安装4MB浏览器插件.如果你只想要一个小小的克隆,请使用flash.
如果我不得不这样做,我想我会为服务器保留Python,因为它是我最熟练的服务器技术,但我想我会在前端使用C#并使用JSON传递数据.
我能给你的最好建议是:
尽可能地利用现有的库和代码
不要过早考虑性能
最艰难的部分是完成游戏,使用你熟悉的技术,并优化你的时间,而不是代码.希望你能做我不能做的事 - 完成该死的游戏:)
编辑
关于为什么我要使用C#,如果我不得不这样做:
IronPython有它的优点和缺点.很高兴我可以跨服务器和客户端共享代码文件(常量,模型等).进行更改并刷新浏览器以查看它非常棒.调试不如C#友好.
但在某些方面它是C#的二等公民,数据绑定不起作用,你不能在xaml中使用IronPython类.加载时间是一个问题,所以我花了很多精力在后台线程上并行设置导入以加快速度.由于涉及xaml的第二个公民身份,我使用模板语言生成xaml,好像它是html,实际上比数据绑定更好,但是没有python模板语言在IronPython中工作,所以我自己编写了(另一次下沉.)
要启用共享模型,我必须编写自己的ORM.这很容易.但为了转移它们,我传递了JSON并制作了一个优化的二进制格式,而不是在IronPython和Python之间工作.那是另一个时间的下沉.
事后来看,我不应该被所有这些兔子小径分心.
Twisted已成功用于此目的.基于asynchronius调用它对于需要持久连接的应用程序非常有效.此外,它还有一个很好的RTMP实现,可用于flash.检查国际象棋,它是用Twisted构建的:
http://www.chesspark.com/
此外,游戏引擎并不一定要在c/c ++中.取决于游戏的复杂性和类型.但是还有pygame库非常好.
就个人而言,我不鼓励你使用silverlight.Flash插件更好地采用,并将继续在可预见的未来,特别是在非ms操作系统上.不要把它放在心上,但我不会为了看你的游戏而安装silverlight.