如何编写基于Web浏览器的多人游戏?

时间:2010-06-30 18:18:56

标签: c# java flash xna online-game

如果我想编写一个基于桌面的游戏,我可以拉一些XNA代码和UDP套接字并制作一个不错的多人游戏。我非常清楚如何编写我想要的游戏。

但如果我想编写一个基于浏览器的在线多人游戏,我该怎么做呢?你不能使用XNA ....我一直在寻找一些问题,我看到PHP和ASP.NET以及Silverlight和Flash以及Java作为替代语言...我真的不明白它是如何工作的。我的意思是,对于基于桌面的游戏,您打开UDP套接字并接受客户端并传输数据,更新播放器状态,使用XNA绘制结果。但是在浏览器中,你如何打开套接字和东西?这个概念如何运作,通过网络浏览器实时与人们沟通。任何方向?我熟悉C#,熟悉Java。从未做过任何Flash,ASP.NET或Silverlight。

6 个答案:

答案 0 :(得分:4)

范式有点不同。在基于浏览器的游戏中,在服务器上存储和计算游戏状态。所有用户看到的都是一个用户界面,可以从这个单一游戏状态中提取数据。

玩家1在位置34,29处有一艘宇宙飞船。他向前推进并前往35,30。这会像AJAX一样发送到服务器。其他玩家在向Web服务器查询其他玩家的位置时会看到此更改。此位置需要存储在该服务器上的某个位置才能实现。

考虑Google文档和Microsoft Word之间的区别。一个在您的计算机上有文档,另一个是在线存储文档,您只是与一些远程HTTP服务器进行交互。

答案 1 :(得分:2)

对于UI,您可能会使用Silverlight或Flash获得最佳结果,然后使用Java。就多人交互而言,您可以使用Web服务来发送和接收数据,而不是UDP /套接字通信。

由于您已经熟悉C#,因此可以将这些知识用于Silverlight和Web服务,因此学习的内容较少。

答案 2 :(得分:0)

基于浏览器的游戏几乎和解决方案一样多。 Flash可以做到这一点,它可能是使用php和ajax,你总是可以使用Java。这取决于你已经熟悉的内容。

答案 3 :(得分:0)

当您编写桌面游戏时,游戏就在玩家的计算机中。当您编写基于Web浏览器的游戏时,游戏不在玩家的计算机中,而是在您的服务器中。所有玩家都可以在她的浏览器中看到UI。因此,您必须在服务器端编程游戏的所有逻辑,并且只编写客户端的接口。

如果您将浏览器视为类固醇监视器,这会有所帮助。

关于UDP /套接字......在网络应用程序中没有这样的东西,但你仍然可以通过AJAX或FLASH使用异步请求(我不确定闪存是否可以执行异步,我是机器人打赌它可以)。

因此,您需要keyboard -> program -> monitor流,而不是keyboard -> browser-scripts -> AJAX request -> server-scripts -> monitor流。

答案 4 :(得分:0)

由于您熟悉C#并且熟悉Java,我最好的猜测是Unity3D用于客户端代码(在浏览器中运行)和SmartfoxServer用于服务器端代码。

Unity3D 是一款功能强大的游戏引擎,可用于制作在浏览器中运行的游戏。您可以使用Javascript或C#编写游戏代码。 SmartfoxServer 是一款用Java编写的多人游戏服务器,提供简单灵活的通信API。

将两者结合起来,您可以创建出色的2D / 3D多人游戏。

答案 5 :(得分:0)

您可能需要查看HTML5中的web sockets。根据你想要制作的游戏类型,使用Canvas的纯HTML5和像JQuery这样的javascript库可能就是你想要的。

相关问题