1234567Basics:
Player has a time machine. On e"/>

关于 opengl:使用并行处理在 C 中制作游戏

关于 opengl:使用并行处理在 C 中制作游戏

Making a game in C++ using parallel processing

我想用 C 语言"模拟"流行的 Flash 游戏 Chrontron,需要一些帮助才能开始。 (注:不是为了释放,只是为自己练习)

1
2
3
4
5
6
7
Basics:
Player has a time machine. On each iteration of using the time machine, a parallel state
is created, co-existing with a previous state. One of the states must complete all the
objectives of the level before ending the stage. In addition, all the stages must be able
to end the stage normally, without causing a state paradox (wherein they should have
been able to finish the stage normally but, due to the interactions of another state,
were not).

所以,这可以解释游戏的运作方式。你应该玩一下
了解我的问题是什么。

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

实际问题:

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

编辑(澄清更多):
操作系统——Windows(因为这是一个爱好项目,以后可能会在 Linux 中这样做)
图形——2D
语言——C(必须是C——这是下学期class的练习)

未回答问题:SDL:OpenGL:Direct X
问:避免并行处理
Q-Answered:使用 STL 实现时间步操作。

1
2
3
4
5
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).

附加问题,我以前主要使用过 C#、PHP 和 Java,所以我不会将自己描述为能手程序员。哪些 C 特定知识可以帮助我更轻松地完成这个项目? (即向量?)


n


n


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

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


除非您迫切希望将 C 用于自己的教育,否则您绝对应该将 XNA 用于您的游戏


并行处理不是答案。您应该简单地"记录"玩家的动作,然后为"之前的动作"回放它们

因此,您创建了一个包含动作的向量(单链表)。只需存储执行该操作的帧号(或增量),然后在该特定实例中代表玩家的"虚拟机器人"上完成该操作。您只需遍历状态并一个接一个地触发它们。

当状态悖论仅仅因为下一个动作失败而发生时,你会得到很容易"破坏"游戏的副作用。


一个非常有趣的游戏创意。我认为你是对的,并行计算将有利于这种设计,但不比任何其他高资源程序。

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

所以基本上我们需要更多的信息。


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

至于图形API,我只用过opengl,可以说它很强大,有很好的C/C API,opengl也可以跨平台,你可以使用*Nix上的messa库电脑。


推荐阅读

    linux命令行设置语言?

    linux命令行设置语言?,系统,管理,环境,国家,工具,电脑,软件,文化,底部,语言,l

    linux使用命令改语言?

    linux使用命令改语言?,系统,工作,管理,电脑,设备,字符集,中文,命令,语言,虚

    linux释放地址命令?

    linux释放地址命令?,地址,系统,工作,信息,网络,命令,目录,基础,工具,管理,lin

    linux变量释放命令?

    linux变量释放命令?,系统,环境,名称,工具,官网,简介,变量,环境变量,命令,内

    c语言写linux命令?

    c语言写linux命令?,系统,工具,代码,智能,工作,环境,情况,位置,命令,文件,如何

    linux汇编语言命令?

    linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

    linux汇编语言命令?

    linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

    linux模拟请求命令?

    linux模拟请求命令?,地址,工作,系统,工具,信息,标准,命令,目录,发行,数据,lin

    linux释放文件命令?

    linux释放文件命令?,数据,系统,管理,地址,命令,文件,位置,通信,标准,设备,如

    linux命令是什么语言?

    linux命令是什么语言?,系统,环境,代码,传播,管理,语言,操作系统,源码,自由,

    linux释放权限的命令?

    linux释放权限的命令?,系统,档案,代码,地址,密码,命令,管理,工具,工作,简介,L

    linux改语言命令行?

    linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,lin

    linux命令行c语言?

    linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linu

    c语言在linux命令?

    c语言在linux命令?,系统,工作,管理,命令,保险,基础,环境,信息,文件,语言,linu

    linux编写c语言命令?

    linux编写c语言命令?,系统,基础,环境,代码,盘面,保险,百度,情况,数据,工具,在

    linux模拟命令ls?

    linux模拟命令ls?,系统,地址,工作,命令,时间,基础,标准,信息,文件,目录,LS(LI

    linux改变语言命令?

    linux改变语言命令?,系统,管理,网上,官方网站,情况,服务,中文,语言,命令,终

    linux端口释放命令?

    linux端口释放命令?,网络,系统,信息,服务,情况,端口,命令,灵活,地址,工作,lin

    c语言编译linux命令?

    c语言编译linux命令?,代码,工具,环境,系统,基础,保险,百度,语言,源程序,文件

    linux释放分区命令?

    linux释放分区命令?,工具,系统,信息,环境,情况,电脑,分区,命令,数据,第一,lin