Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 游戏中事件记录的适当体系结构_C++_Mysql_Events_Game Engine - Fatal编程技术网

C++ 游戏中事件记录的适当体系结构

C++ 游戏中事件记录的适当体系结构,c++,mysql,events,game-engine,C++,Mysql,Events,Game Engine,我试图修改一个游戏引擎,使其记录事件(如按键),并将这些事件存储在远程服务器上的MySQL数据库中。游戏引擎是用C++编写的,我现在有以下的直截了当的架构,使用MySQL +直接将代码>插入< /COD>记录到适当的数据库: 不幸的是,当连接到MySQL服务器时,会有很大的开销,游戏会停止很长一段时间。将一批Xs值的事件推送到服务器会导致游戏性的显著延迟(60秒值的事件可能需要12秒才能同步)。让MySQL端口公开访问显然也存在安全问题 我正在考虑另一种选择,而不是向服务器发送命令,服务器可以

我试图修改一个游戏引擎,使其记录事件(如按键),并将这些事件存储在远程服务器上的MySQL数据库中。游戏引擎是用C++编写的,我现在有以下的直截了当的架构,使用MySQL +直接将代码>插入< /COD>记录到适当的数据库:

不幸的是,当连接到MySQL服务器时,会有很大的开销,游戏会停止很长一段时间。将一批Xs值的事件推送到服务器会导致游戏性的显著延迟(60秒值的事件可能需要12秒才能同步)。让MySQL端口公开访问显然也存在安全问题

我正在考虑另一种选择,而不是向服务器发送命令,服务器可以在自己的时间内与数据库交互:

在这里,游戏只发送必要的信息(例如,要更新的表和要插入的数据)。我不确定速度提升是否足够,或者什么系统适合管理游戏中发送的命令


,但显然我需要一个C++解决方案。是否有合适的现有框架来实现我想要的功能?

大多数收集用户界面交互数据(在您的例子中是击键)的应用程序都将其放入某种本地文件中

然后在适当的时间(例如在游戏结束或另一个游戏开始时),他们将该文件(通常以压缩形式)发布到可公开访问的web服务器。web服务器上的软件解压缩数据并将其加载到分析系统(在您的情况下是MySQL服务器)中进行处理

因此,我建议如下

  • 停止让你不认识和不信任的人使用你的MySQL服务器端口
  • 让游戏以某种方式在本地收集击键
  • 当你的游戏不是在实时模式下时,让它以大束的形式上传数据
  • 编写一个web服务来接收和解释这些文件

  • 这样,您将建立一个更安全的分析系统和一个响应更快的游戏。

    我支持这一点。此外,如果游戏已经有了客户机-服务器体系结构,那么服务器无论如何都应该验证用户命令,因此它也可以在过程中记录这些命令。除非目标是记录本地输入,而不是从输入生成的命令。在这种情况下,仅使用时间戳记录输入状态中的更改,以将记录保持在最小值。