针对.NET Facebook游戏的推荐架构

4
什么样的架构适合实现一个基于Silverlight的实时多人游戏,该游戏旨在与Facebook集成并从中运行?
这个想法是建立一个基于Silverlight的游戏,利用Facebook的社交网络信息作为其游戏环境的一部分。
具体来说,
  • 游戏规则应该在客户端还是服务器上实现?
  • 游戏应该如何从Facebook获取凭据和会话信息?
  • 游戏中应该缓存什么(社交网络数据、互动、会话密钥等)?
  • 游戏应该如何通知玩家有关异步世界事件的信息 - 轮询?带外推送?其他技术?
  • 游戏应该如何设计以最小化被黑客攻击或恶意破坏的风险?
  • 游戏应该如何架构以最小化延迟和其他网络带宽限制?

我猜如果你把它外包给这里的专家,那么你会得到一些成果,否则我认为没有人能免费帮助你完成工作。 - Akash Kava
我的目的不是外包或让别人替我完成工作,而是学习其他人已经经历过的实践和架构,看看哪些是有意义的。 - LBushkin
我认为这是一个非常好的问题,但我打赌答案在很大程度上取决于游戏设计的具体细节。例如,当PopCap推出新版本的Bejeweled Blitz时,他们在第一周就记录了9000万次播放。我认为这并不意味着Facebook游戏需要每周处理9000万次播放。 - Robert Rossney
我想知道你是否已经找到了解决你所面临问题的好方法,因为我现在也遇到了相同的问题。希望你能帮帮我。你认为Silverlight + RIA服务怎么样? - Ben
2个回答

2
先让游戏运行起来。将东西粘在最容易完成的地方,无论是将其保留在客户端还是服务器上或其他任何地方。如果您遵循良好的编码实践 - SoCIoC,单元测试,接口 - 那么很容易对您的工作原型进行分析,并在性能优化变得明显时移动事物位置。试图预测如何提前优化是一个失败的游戏。

我的关注点并不是优化,而是会导致功能问题的结果。例如,让游戏决策逻辑存在于Silverlight客户端可能会使游戏更容易被黑客和作弊者攻击 - 但将游戏逻辑放在服务器上可能会使游戏过于啰嗦。 - LBushkin
1
@Lbushkin 确实,这就是我的意思 - 你担心客户端安全性,所以先把所有东西放在服务器上。在尝试之前,你不知道它是否会过于啰嗦。然后根据需要有选择地将事物移回客户端,并在问题出现时解决安全问题,而不是在之前。 - Rex M
1
+1 for "do not optimize first." 过早的优化是一种恶劣的反模式,特别是对于像Silverlight这样的新技术。 - Dave Swersky

2
今天在网上看到了一位前微软Silverlight项目经理发布的这个提示总结:Silverlight对于每个人来说都是新的,我们需要花费大量时间去弄清楚如何最好地进行这项工作,因此要做好放弃很多代码的准备。 根据你的要求,我认为你的游戏非常有雄心壮志,将推动Silverlight所能实现的极限(我提到过我很羡慕你因此而得到报酬吗?)。
Silverlight不到三年前才首次发布,现在才开始展现出其优势。如果你要开始像你描述的那样的项目,你将处于社区学习曲线的前沿。祝你一路顺风!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接