【问题标题】:(C++) Game Server, (Flash) Client(C++) 游戏服务器,(Flash) 客户端
【发布时间】:2008-11-04 13:53:03
【问题描述】:

我有兴趣将我的第一个使用 Flash 作为客户端的在线游戏放在一起,并用 C++ 编写一个保留实际游戏状态的后端应用程序。

在使用 SDL、SFML、Allegro 等之前,我用 C++ 完成了很多游戏,但从未使用过网络库。我只是对一些有用的方向感兴趣,哪些库最适合实际服务器没有任何图形显示(或不需要但可以有)的游戏服务器。老实说,我认为答案将是任何,一旦我掌握了套接字的窍门,来回发送数据就会变得轻而易举......但先问是无济于事的。

我在 flash 或 as3 方面的经验很少,但我喜欢能够通过浏览器访问游戏的想法 - 学习 flash 显然是一个我必须克服的难题,但我的主要兴趣再次是任何有助于通过套接字发送/接收数据或任何最有效的方法的库、源或教程的提示。

我已经阅读了 TCP/UDP 之间的争论,所以我不想在这里发动这样的战争;请提供一般有用的建议 - 我只是在寻找一些简单的东西来让我启动和运行:-p

作为旁注,我选择 C++ 的原因是因为玩家实际上是具有微型虚拟机的机器人,并且一切都将在服务器上运行,因此随着玩家数量的增加,需要模拟每个虚拟机:-p

更新:

游戏世界旨在实现实时,但玩家的互动并非必须如此。游戏的基础是您编写小机器人,这些机器人在一个持久的世界中进行交互,并且每天/每周都有目标和挑战需要满足以赚取积分。

我认为缓冲显示数据是可能的,因为玩家不需要实时视觉,因为他们无法直接控制他们的机器人。服务器会为每个连接缓冲 10 秒左右的数据,然后一次性将其发送出去 - 这样,当数据在客户端播放时,服务器会忙于缓冲更多数据。

玩家与服务器的一般交互将是上传新代码和获取统计信息,也可能有其他一次性命令来移动机器人或将其重置到起始位置。任何远程控制都是通过通信通道完成的,因此会被缓冲区延迟。这很容易解释为持久世界位于火星(行星)之类的某个地方,信号来回需要一段时间。

我计划建立一个“实验室”,您可以在其中设置机器人并在客户端上实时测试它们,这与实际游戏世界无关,因此不需要任何网络 - 尽管我不不想用两种语言编写 VM :(

我对 C++ 非常熟悉,并且已经有了一些持久化世界的工作原型 - 在网络方面我只是一个完全的新手,所以我认为最好先获得建议。

【问题讨论】:

    标签: c++ flash client-server


    【解决方案1】:

    虽然它主要是为 C 编写的,但它仍然适用于 C++:
    Beej's guide to networ programming.k
    它涵盖了所有基础知识,并有一节介绍了 Win32 所需的更改:)
    此外,我似乎记得 Flash 需要在每个数据包上终止空字节,所以不是 send(socket,szData,strlen(szData),0);使用发送(套接字,szData,strlen(szData)+1,0);发送一个字符串:)

    【讨论】:

      【解决方案2】:

      使用 boost::asio 进行网络编程

      【讨论】:

        【解决方案3】:

        使用 Flash 的 Socket 或 XMLSocket 类时,请确保您的服务器上有一个安全策略文件。否则,您将无法打开套接字。查看此SO question 了解更多信息。

        【讨论】:

          【解决方案4】:

          我不确定您的游戏是否需要实时通信,或者向服务器发出请求以加载、保存和执行游戏是否足够。

          如果是,您最好使用某种“中间件”层来处理网络部分。 Flash 很乐意制作 xml 文档并通过 HTTP 将它们发送到服务器,然后处理收到的 XML 响应。它有很多内置的东西,可以非常简单地处理所有这些事情。

          也许您可以在 c# 或 php 或 java 中使用服务器,具体取决于您的平台,该服务器在网络服务器中运行并处理请求和响应并将请求传递给您的 c++ 服务器,该服务器可以通过消息队列在服务器上独立运行或数据库或本地连接。

          在闪存和服务器端以这种方式处理网络和通信问题可能更容易,因为即使使用库,c++ 也不是最简单的网络语言。

          我不知道这是否满足您对游戏或平台的要求,我只是将其作为建议提出

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-09-19
            • 2015-03-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-12
            相关资源
            最近更新 更多