Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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++中“模仿”一个流行的Flash游戏,CalthCon,需要一些帮助来开始。(注意:不是为了放松,只是为了自己练习) 基本知识: 玩家有一台时间机器。在使用时间机器的每次迭代中,一个并行状态 已创建,与以前的状态共存。其中一个州必须完成所有测试 阶段结束前的级别目标。此外,所有阶段都必须能够 正常结束阶段,而不会导致状态悖论(他们应该有 能够正常完成该阶段,但由于另一个状态的相互作用, 没有)。_C++_Opengl_Graphics_Directx_Sdl - Fatal编程技术网

用C+制作游戏+;使用并行处理 我想在C++中“模仿”一个流行的Flash游戏,CalthCon,需要一些帮助来开始。(注意:不是为了放松,只是为了自己练习) 基本知识: 玩家有一台时间机器。在使用时间机器的每次迭代中,一个并行状态 已创建,与以前的状态共存。其中一个州必须完成所有测试 阶段结束前的级别目标。此外,所有阶段都必须能够 正常结束阶段,而不会导致状态悖论(他们应该有 能够正常完成该阶段,但由于另一个状态的相互作用, 没有)。

用C+制作游戏+;使用并行处理 我想在C++中“模仿”一个流行的Flash游戏,CalthCon,需要一些帮助来开始。(注意:不是为了放松,只是为了自己练习) 基本知识: 玩家有一台时间机器。在使用时间机器的每次迭代中,一个并行状态 已创建,与以前的状态共存。其中一个州必须完成所有测试 阶段结束前的级别目标。此外,所有阶段都必须能够 正常结束阶段,而不会导致状态悖论(他们应该有 能够正常完成该阶段,但由于另一个状态的相互作用, 没有)。,c++,opengl,graphics,directx,sdl,C++,Opengl,Graphics,Directx,Sdl,所以,这就解释了游戏是如何运作的。你应该把它弹一弹,真的 了解我的问题是什么 我想解决这个问题的一个好方法是使用链表来存储每个状态, 它可能是一个基于时间的哈希映射,或者是一个迭代的链表 基于时间。我还是不确定。 实际问题: 现在我已经有了一些粗略的规范,我需要一些帮助来决定使用哪些数据结构以及为什么。另外,我想知道我应该使用什么图形API/层来实现这一点:SDL、OpenGL或DirectX(我当前的选择是SDL)。我将如何实现并行状态?用平行线 编辑(以澄清更多内容): OS--Window

所以,这就解释了游戏是如何运作的。你应该把它弹一弹,真的 了解我的问题是什么

我想解决这个问题的一个好方法是使用链表来存储每个状态, 它可能是一个基于时间的哈希映射,或者是一个迭代的链表 基于时间。我还是不确定。

实际问题:

现在我已经有了一些粗略的规范,我需要一些帮助来决定使用哪些数据结构以及为什么。另外,我想知道我应该使用什么图形API/层来实现这一点:SDL、OpenGL或DirectX(我当前的选择是SDL)。我将如何实现并行状态?用平行线

编辑(以澄清更多内容):
OS--Windows(因为这是一个爱好项目,以后可能会在Linux中完成)
图形——二维 语言——C++(必须是C++——这是下学期的一门课程)

未回答的问题:SDL:OpenGL:Direct X
回答:避免并行处理
问题解答:使用STL执行时间步动作。

So far from what people have said, I should: 1. Use STL to store actions. 2. Iterate through actions based on time-step. 3. Forget parallel processing -- period. (But I'd still like some pointers as to how it could be used and in what cases it should be used, since this is for practice). 与人们所说的相去甚远,我应该: 1.使用STL存储操作。 2.根据时间步长迭代操作。 3.忘记并行处理——周期。(但我还是想知道它是如何运作的 可以使用,以及在什么情况下应该使用,因为这是为了实践)。
除了这个问题之外,我以前主要使用过C#、PHP和Java,所以我不会把自己描述成一个优秀的程序员。C++特定的知识有助于使这个项目更容易吗?(即向量?)

我以前玩过这个游戏。我并不认为并行处理是一种可行的方法。您在游戏中共享了需要在进程之间共享的对象(杠杆、盒子、电梯等),可能是每个增量,从而降低了并行性的有效性


我个人只需要保留一个操作列表,然后在后续的每次迭代中开始将它们交错在一起。例如,如果列表的格式为,则第三次通过将执行操作1.1、2.1、3.1、1.2、2.2、3.3等。

在简要介绍了描述之后,我认为您的想法是正确的,我将有一个保存状态数据的状态对象,并将其放入链接列表中……我认为您不需要并行线程


对于图形API,我只使用OpenGL,可以说它是非常强大的,并且有一个很好的C/C++ API,OpenGL也会更跨平台,因为你可以在*NIX计算机上使用MISA库。p> 一个非常有趣的游戏创意。我认为你是对的,帕雷尔计算将有利于这种设计,但不超过任何其他高资源的计划

这个问题有点模棱两可。我看到你要用C++写这个,但是你在为什么编码呢?你是否打算让它成为跨平台的,你想要什么样的图形,即3D、2D、高端、基于web的


因此,基本上我们需要更多的信息。

并行处理不是答案。你应该简单地“记录”玩家的动作,然后为“以前的动作”播放它们

因此,您创建了一个向量(单链接列表)来保存操作。只需存储执行操作的帧号(或增量),并在代表该特定实例中的玩家的“虚拟机器人”上完成该操作。您只需循环遍历这些状态并一个接一个地触发它们


<> P>你会因为当下一个动作失败而轻易的“打破”游戏的副作用。

< P>除非你迫切地想用C++来进行你自己的教育,你应该明确地看你的游戏和图形框架(它使用的是C)。它是完全免费的,它为你做了很多事情,很快你就可以在Xbox Live上销售你的游戏了


为了回答您的主要问题,您在Flash中已经可以做的任何事情都不需要使用多个线程。只需将位置列表存储在一个数组中,并为每个机器人循环不同的偏移量。

这听起来非常类似于。你真的不想为此进行并行处理——并行编程很难,对于这样的事情,性能不应该是一个问题

由于游戏状态向量的增长速度非常快(可能是每秒几千字节,取决于帧速率和存储的数据量),因此您不需要链表,因为链表在空间方面有很大的开销(如果布局不好,可能会因缓存未命中而导致巨大的性能损失)。对于每个平行时间线,您需要一个向量数据结构。您可以将每个平行时间线存储在链接列表中。每个时间轴都知道它开始的时间


要运行游戏,您需要遍历所有活动的时间线,并在lockstep中从每个时间线执行一帧的动作。不需要并行处理。

您应该首先阅读并理解“固定时间步长”游戏循环(这里有一个很好的解释:)

然后,您要做的是保留帧计数器和操作对的列表。STL示例:

std::列表状态;
或者可能是成对列表的向量。要创建状态,请为每个动作(玩家交互)存储帧编号和 So far from what people have said, I should: 1. Use STL to store actions. 2. Iterate through actions based on time-step. 3. Forget parallel processing -- period. (But I'd still like some pointers as to how it could be used and in what cases it should be used, since this is for practice).