3

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

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

4

6 回答 6

4

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

玩家 1 在位置 34,29 有一艘宇宙飞船。他向前推进并到达 35,30。这通过 AJAX 之类的东西发送到服务器。其他玩家在向网络服务器查询其他玩家的位置时会看到这种变化。此位置需要存储在该服务器上的某个位置才能发生。

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

于 2010-06-30T18:31:45.070 回答
2

对于 UI,您可能会使用 Silverlight 或 Flash 获得最佳效果,其次是 Java。至于多人交互,您可以使用 Web 服务来发送和接收数据,而不是使用 UDP/socket 通信。

由于您已经熟悉 C#,因此您可以在 Silverlight 和 Web 服务中利用这些知识,因此要学习的东西会少一些。

于 2010-06-30T18:31:31.793 回答
0

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

于 2010-06-30T18:28:04.773 回答
0

您可能想看看HTML5 中的Web 套接字。根据您想要制作的游戏类型,使用 Canvas 的纯 HTML5 和一些 JavaScript 库(如 JQuery)可能正是您想要的。

于 2010-09-03T11:42:45.793 回答
0

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

如果您将浏览器想象成类固醇上的监视器,它会有所帮助。

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

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

于 2010-06-30T18:44:36.777 回答
0

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

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

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

于 2010-08-29T22:02:32.743 回答