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

问题描述 投票:3回答:6

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

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

c# java flash xna online-game
6个回答
4
投票

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

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

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


2
投票

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

由于您已经熟悉C#,因此可以将这些知识与Silverlight和Web服务结合使用,因此学习起来要少一些。


0
投票

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


0
投票

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

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

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

因此,而不是keyboard -> program -> monitor流程,你有一个keyboard -> browser-scripts -> AJAX request -> server-scripts -> monitor流程。


0
投票

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

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

结合两者,您可以创建惊人的2D / 3D多人游戏。


0
投票

您可能想看看HTML5中的Web套接字 。 根据你想要制作的游戏类型,使用Canvas的纯HTML5和一些像JQuery这样的javascript库可能就是你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.