游戏开发

专业和独立游戏开发人员的问答

3
非整数速度值-是否有更干净的方法可以做到这一点?
通常,我会希望使用速度值(例如2.5)在基于像素的游戏中移动角色。但是,如果这样做,碰撞检测通常会更加困难。所以我最终做了这样的事情: moveX(2); if (ticks % 2 == 0) { // or if (moveTime % 2 == 0) moveX(1); } 每当我不得不写那封信时,我都会畏缩一次,是否有一种更清洁的方式来移动具有非整数速度值的角色,或者我会永远坚持这样做吗?

4
如何在不使用密钥的情况下加密保存文件?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为话题成为Game Development Stack Exchange。 3年前关闭。 假设我做了一个简单的程序,该程序接收.dat以二进制格式加密的文件,然后将其解密为字节数组,然后将所有内容再次重写为解密的文件。 例如: 我已经做了一个二进制加密算法。=> 0100100001100101001000000110100001100101011000 ... 但这很容易解密... 是否有可能(如果不需要任何密钥)来加密保存进度?

1
船体,域和几何着色器有什么用途?
我为自己的(前任)老板做了相当多的3D游戏编程工作,也为自己的独立游戏使用了自己的自定义引擎。 最初,我从Direct3D 9和D3DX9开始,它们几乎为我完成了所有工作,并且完全不需要我考虑着色器。 在那之后,我写了我的第一个Direct3D 9着色器,但是我所做的一切大多使用一个非常简单的着色器。 在我的游戏引擎的最新迭代中,我移至Direct3D 11,并由此创建了许多着色器。我在GPU中进行了GPU蒙皮,GPU计算的粒子,大量照明和后处理效果。真的很酷的东西。 到目前为止,我仅使用了顶点和像素/片段着色器。即使还有很多事情我还没做完,但我相信我对顶点和像素/片段着色器的功能以及如何将其全部融入整个3D管线具有扎实的知识。 随着最新的发展,我对新的着色器阶段非常感兴趣。也就是说,几何着色器,甚至是更新的Hull和Domain着色器。 我从未使用过这些阶段,但是据我所知,几何着色器(如果启用)在顶点着色器之后运行,对每个变换的顶点(或每个图元一次)运行一次,并允许您丢弃顶点(和图元?)。 ,然后创建新的(我想可以追溯到管道的开头吗?)。 我的猜测是,几何着色器的主要用途是在GPU中以编程方式生成几何。通常的用法是基于单个顶点创建广告牌四边形,但是除了生成分形和其他可以以编程方式100%生成的东西之外,我并没有真正看到许多其他常见场景。 至于Hull和Domain着色器,似乎它们与细分有关(要从粗糙表面创建更平滑的表面吗?),并且必须一起使用或根本不使用。术语“补丁”在这里似乎也很常见。 有人愿意在实践上向我解释这些新的着色器阶段是什么,它们如何适合3D管线,以及在哪种情况下应该考虑使用它们?



9
如何创建用户友好的魔术咒语系统?
我正在设计一个带有魔咒系统的小型2D自上而下的开放世界生存式游戏。到目前为止的工作方式: 玩家在游戏开始时收到“ wand” 当玩家遇到新物品和敌人时,他们会获得咒语来帮助他们使用这些物品/击败那些敌人 我遇到的问题是设计一种施放咒语的方法。刚开始,我只是将不同的咒语绑定到0-10键,但是很快咒语的数量就淹没了它,还存在一个问题:较低级别的咒语在后期游戏中没有使用,但仍然绑定到最有用的键上。 那么,制作用户友好的咒语广播系统的最佳方法是什么?如果需要,我可以检查魔术在游戏中的工作方式。 编辑:只是为了澄清,我正在为PC实时开发,其拼写类型和目的存在很大差异,尽管此问题应适用于所有平台。

3
为什么某些联网游戏使用插值而有些使用寻路来进行远程移动?
这是一个悬而未决的问题,但我希望看到有人为这两者做出良好的推理。 举两个例子: 插值模型 考虑一下Valve模型,其中客户端经常接收位置更新,而远程设备使用此数据上的插值来更新其位置。 寻找路径 在此模型中,认为用户发送了目的地,并且每个人都找到了目的地。 什么类型的游戏适合每种游戏,什么时候应该使用?

3
矮人要塞的命令排序体系结构
实现AI命令排序系统的最优雅的方法是什么?例如,在矮人堡垒中,当您标记一个森林区域进行砍伐时,矮人将按照以下顺序进行操作: 去树上 砍树 将木材运送到库存中 去另一棵树 等等.. 我已经有一个不起作用的堆栈命令。从空闲状态到到达树的目标图块的1。 我担心的是,当我创建更多这样的订单时,这会变得混乱吗: 造房子 去储存 将木材带到建筑面积 回到库存 将石头带到建筑面积 动画建筑精灵 种植 去储存 将种子带到农场 酿造 去储存 使植物静止 动画酿造精灵 所以我的问题是,如何实现矮人堡垒之类的命令排序系统并同时避免使用意大利面条式代码?我需要研究任何数据结构吗?我需要将命令序列放在单独的xml文件中吗?

3
向量有什么不同/复杂/有用?
如果这不是一个真正的问题,请原谅我,但我确实对此感到困惑。 我经常听到其他游戏开发人员谈论使用向量如何非常有用,但是每个人都被向量数学所吓倒,向量似乎令人生畏。我从来没有去了解他们。 所以,最后我在Wikipedia 上看了Vector,感到很惊讶。除非我弄错了,否则一个矢量(为简单起见,它是2D)只是x和y坐标。 如果我误解了,请纠正我。 所以这是我的问题:这是否意味着二维(或三维)坐标的任何表示都是矢量?如果是这样,则向量和坐标是同一件事。而且,不使用坐标就几乎不可能创建游戏,那么向量对进行过大量游戏编程的人来说是令人困惑的还是陌生的? 我可以对此进行澄清。任何帮助表示赞赏。

6
实现自己的脚本语言是否可行?
我正在用C ++编写节拍游戏,现在是时候为事件,触发器,过场动画等实现脚本了。我已经在互联网上阅读并获得了很多信息。我的首选解决方案是实施自己的脚本语言,例如Cave Story中的脚本语言。我已经看到了这个建议,但是大多数人都建议使用lua,但这似乎与我的编程类型不符。 您是否制作了自己的脚本语言?您为什么选择自己滚动而不使用现有的?您在开发过程中咨询了哪些资源?
21 scripting 

6
将游戏数据/逻辑与渲染分离
我正在使用C ++和OpenGL 2.1编写游戏。我在想如何将数据/逻辑与渲染分开。目前,我使用基类“ Renderable”,该基类提供了一种纯虚拟方法来实现绘图。但是每个对象都有如此专门的代码,只有对象知道如何正确设置着色器制服和组织顶点数组缓冲区数据。最后,我在代码中多次进行gl *函数调用。有没有通用的绘制对象的方法?
21 c++  opengl  rendering  logic  data 


1
如何将鼠标坐标转换为等距索引?
我用图块64x32绘制等距图: const Offset = 160; int X, Y; for (int a=0; a < 6; a++) for (int b=0; b < 6; b++) { X = a * 32 - b * 32 + Offset; Y = a * 16 + b * 16; DrawTile(X, Y, tile); } 图片,说明此代码: 亲爱的专业人员,请提供有关细胞等轴测索引中的鼠标坐标转换公式的帮助。例如:(105; 100)-> …

4
现代游戏代码中实际使用了多少汇编程序?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 平均而言,现代游戏代码中多久使用一次汇编? 特别是在已经具有良好C ++编译器的平台(例如x86,PPC或ARM)上,因为我认为嵌入式系统上的游戏会大量使用汇编语言。
21 c++  c 

1
如何快速,实时地生成带符号的距离场(2D)?
在上一个问题中,建议可以对带符号的距离字段进行预先计算,在运行时加载然后从那里使用。 由于某些原因,我将在本问题末尾(针对感兴趣的人)进行解释,因此我需要实时创建距离字段。 有一些针对不同方法的论文,这些方法应该在实时环境中可行,例如用于倒角距离变换和基于Voronoi图逼近的变换的方法(如Pixeljunk Shooter开发人员在本演示文稿中所建议的),我(因此可以假设很多其他人)实际上很难使用它们,因为它们通常很长,大部分时间都在数学上and肿,并且在解释上不太算法。 您会建议使用哪种算法实时(最好在GPU上)创建距离场,尤其是考虑到距离场的最终质量? 由于我正在寻找实际的解释/教程,而不是指向另一篇论文或幻灯片的链接,因此,只要有资格获得此问题,它就会得到悬赏:-)。 这就是我需要实时进行操作的原因: 如果您必须针对大型2D环境(例如,大型Terraria类地图)预先计算这些SDF,则这意味着您要接受更大的存储空间开销(以及地图生成时间),而需要实施更多足够快的实时SDF生成的复杂算法。 例如,如果您选择一个相对较小的,具有1000 * 256(宽*高)且地图尺寸为10 * 10像素,因此总尺寸为10000 * 2560像素的地图,则已经需要花费大约2兆字节的空间假设您仅存储从0到255的距离值,则SDF分辨率为128x128。 显然,这很快就会变得太多,并且是我不想拥有的开销。 还有别的: SDF可以用于很多事情(例如冲突检测),并且甚至可能尚未发现一些有用的应用程序。我认为将来会有很多人去寻找这些东西,如果我们在这里得到全面的答复,我想我们将为很多人提供帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.