如何在我的 cocod2d-x (C++) 游戏中集成 Node.js 服务器

问题描述

我是多人游戏开发的新手,我已经开发了一个离线游戏,现在我想把它做成多人游戏,所以在我朋友的帮助下,我们在 node.js 中创建了一个服务器端脚本,但我没有知道如何将其集成到我的 C++ 项目中,

我用谷歌搜索过,但找不到任何有用的东西。 任何人都可以推荐任何教程。

谢谢

解决方法

你问了一个很大的开放式问题。正如 Allern 所说,您可以使用联网程序做很多事情,这些程序可以将其扩展到远远超出单用户游戏的范围。例如,在我当前的游戏中,可以访问 html 版本的欢迎页面。可以下载广告系列/用户地图的文件,还可以连接到 Firebase 以获取排行榜和其他网络资源(如广告)。

但是,我怀疑您指的是多个独立的用户机器之间的通信,所有这些机器都同步以保持它们的协调。为此,您需要编写一些序列化代码来传输和接收来自中央服务器的数据包。通常需要像 flatbuffers 这样的序列化包来将信息从数据结构移动到数据包,反之亦然。

您可能还需要通信/网络软件来异步发送和接收这些数据包(这可能包含在您可能使用的任何游戏引擎中)。 Boost.asio 否则可能会有所帮助。还有许多其他网络包和库,一直到基本的 unix/POSIX 调用(或 Windows 操作系统调用)。

您还需要服务器端的软件来登录用户,处理玩家断开连接并完成传递游戏数据包的主要工作。该软件还可以实现您的游戏逻辑(游戏规则),如果您希望用户能够在多个会话中玩游戏(如大地牢爬行),则可能会保存数据。可能有一些软件包可以完成大部分服务器端的工作。如果是这样,请发布您发现的内容。

Cocos2dx 确实内置了一些网络软件,但就我而言,它的功能不是很强大。它确实具有相当容易显示网页和下载文件的功能,但异步通信似乎有点弱。您可以尝试 API Docs 中的 Network 模块,其中可能包含您要查找的内容。

由于游戏类型以及您希望如何实现玩家交互将决定软件的构建方式,恐怕这个答案有点含糊。祝你好运。分享您的见解。

,

可以使用公共工具,以websocket为例,支持C++和javasc

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...