游戏开发

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

1
将虚构的4D网格向下投影到屏幕
作为一种心理锻炼,我试图想象将任意的4D网格投影到屏幕(2D)上。 我猜单个4D三角形仍然只包含3个点,但是这3个点中的每一个都将由具有4个维度的列定义。 定义一个投影矩阵先将4D空间映射到3D空间,然后让OpenGL将自己的数据从该数据投影到2D空间是否更有意义? 还是最好只计划直接从4投影到2? 非常感谢。

1
您如何有意义地测试微交易?
由于多种原因,我选择使用Microtransactions通过我的当前项目获利。但是,像所有成败特征一样,我也担心它们在游戏中的接收方式。 微交易在我看来似乎是一个独特的问题。我相信,仅仅给人们提供货币会歪曲我的结果,并且实际上并不能代表人们对事物定价的看法(就像我更倾向于在不需要赚钱的时候浪费金钱一样) 。 考虑到这一点,我如何才能有效,有意义地对我游戏中微交易的实现进行市场测试?

2
在Unity中播放视频
我对Unity中的视频播放质量不满意(使用Miro Converter转换视频并将其导入到Unity后,我运行的电影纹理)...因此,我有没有可能获得第三方库可以集成到Unity中以播放我的电影文件吗?我的电影是我3d应用程序的全高清介绍性电影,可以从应用程序菜单播放。 我试图将Media Player Classic(MPC)用作外部应用程序,但是问题是,当我从应用程序菜单中将MPC作为新进程运行时,我的菜单最小化了,对于一个独立的应用程序来说这很尴尬。简介完成后,我必须通过单击Windows任务栏上的应用程序图标来最大化菜单。
11 unity 

5
空间散列和四叉树的2D空间分区替代方案
我一直在尝试在游戏中实现空间分区算法,但是空间散列和四叉树都不是我想要的。 我的级别大小不应该有限制(只有Int32限制)。我需要一个不需要“水平宽度”和“水平高度”的空间分区算法。 我有许多移动的物理对象。我需要算法足够快以支持500多个对象。 还有其他选择吗?

3
自上而下的2d地图:归一化与否?
我是游戏编程的绝对初学者,如果这个问题的表述不当,请注意,这不是我身边的草率行为,而是缺乏游戏编程经验。 我计划编写的游戏将使用自上而下的2D地图作为“世界”。世界可能大于窗口(窗口可以放大或缩小),并且车辆可以位于世界的任何位置(=它不是平铺的地图,空间是“连续的”)。 举例说明:如果世界是1000x1000米的地形,则车辆可能位于(327.31,720.4)米的位置。 我的问题是:内部代表世界的最便捷方法是什么?我可以考虑以下可能性: 什么也不做,像使用物理对象一样使用仪表, 标准化为将世界尺寸定义为代表最大缩放1000米的像素数的像素, 标准化为1,将单词定义为大小为1的正方形 ...但是我敢肯定,可能还会有其他一些/我的一些没有意义。仅仅是我的第一场比赛,我对自己面临的问题并没有清晰的认识,我希望获得一些指导,以做出合理正确的初始选择。 感谢您的时间。
11 2d  maps 

1
如何使用多线程OpenGL应用程序更新VBO并同时使用它们?
我有一个简单的应用程序。它有两个线程,每个线程都有自己的呈现上下文,但是它们共享一个VBO(这是有效的,我已经对其进行了测试)。 现在我想要的是:一个线程正在从VBO的上半部分渲染一些数据,第二个线程正在更新VBO的第二部分。 当我不更新VBO时,它工作正常。 但是更新时我遇到了一些奇怪的问题。当我glMapBuffer用来更新VBO(在第二个线程中)时,在大多数情况下,在第一个线程中,它什么都不呈现-整个屏幕清晰(glClear调用后)。看起来它无法触摸来自VBO的数据(这是可以理解的,因为整个缓冲区已映射,因此可以某种方式锁定)。 我尝试使用glMapBufferRange,它使用GL_MAP_UNSYNCHRONIZED_BIT。这意味着,“不要等待并根据需要使用VBO,我(程序)将自己同步它”。另外,当我映射一系列VBO并从另一部分渲染数据时,它不应该等待,但是遇到的问题与相同glMapBuffer。 谁能帮我解决这个问题或解释为什么会发生吗?

6
奖金和加电之间有什么区别?
“奖励”和“加电”的概念有什么区别? 我在游戏中有一些物体,玩家可以拾取一些奖金/能量,从而使玩家可以在周围创造爆炸。还有一个物品可以让玩家从一个地方传送到另一个地方-这些都是道具吗?

2
如何计算拦截向量?
给定一个二维空间,一艘友好的太空飞船停滞不前,一个敌人没有以已知的实际位置,速度和方向直接移动到友好的飞船上。 友好的战舰想进入射击场与敌人作战。 实际上,我只是将矢量设置为实际位置的移动船舶,并在每一帧进行重新计算,从而产生某种“圆形”飞行路径。 我想要的是设定一条直直的路径,以达到到达发射距离时敌人(大概)将要到达的位置(假设直到那时敌人不会改变方向)。 作为第一个“简单”的实现,如果我们假设朋友可以立即从0加速到max,就足够了。 首选实现方式将考虑朋友的加速能力,并知道何时由于速度而无法进行拦截。它应该以各种启动速度工作,而不仅是静止不动。如果它甚至考虑制动,则将是一个加分(在给定的宇宙中,以光速进行战斗对能量效率极低)

1
反射角度
我有这个“突破风格”的游戏。 我在中心有一门大炮,大炮周围有方块,方块周围有护垫。游戏外观如下: 我设法获得了每个像素的碰撞,并且我的球在与块接触时通过以下数学运算“ 反映 ”: Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180; 蓝线是球的方向,黑线(基线)是块的表面。 方向是以弧度表示的角度(当然可以转换为度)。 球通过以下方式移动: // Event.ENTER_FRAME x += Math.sin(Direction) * Velocity; y -= Math.cos(Direction) * Velocity; 到目前为止,一切都很好。 我的问题现在出在垫子上(小彩色块周围的3个深色大块)。 当它们转过来时,表面角度会发生变化。 不仅如此,球也应该击打侧面,那么,如何测量击球的方向和球的新运动方向呢? ps:如果需要,我可以提供代码和可播放的swf。 编辑 好的,角度问题已通过Vectors解决,但侧面和后部碰撞仍然存在问题。 我将为此打开另一个问题,并将其链接到此处。

1
沿曲线移动对象同时旋转它
我想沿着曲线移动物体。我希望在曲线的特定点上,物体可以改变速度并沿其轴旋转。 想象一下一架飞机飞往目的地。它具有必须遵循的路径,此外,还一直调整其速度和方向(航向,髓,堤)。 我能否请您提供以下信息: 什么样的曲线,用来平滑地插入对象 什么公式来使用可靠的插值,在那里我可以控制移动oject的速度,曲线节之间的过渡将是无缝 应从3D创作应用程序导出哪些信息 我应该为此使用四元数slerp()吗? 如果您知道一本有效地涵盖了该主题的书,那将使您收获最多。谢谢。

6
解决无返途能力的迷宫
我需要编写一个解决迷宫的程序。迷宫具有图结构,其中每个节点-一些房间和边缘-出口到其他房间: 规格: 我们从一个随机的房间开始。 迷宫有死角,出口为0或很少。 我们对所有迷宫一无所知,只知道当前房间的数量和其中的门列表。 当我们进入新房间时,我们不知道我们来自哪里(当前房间的哪扇门将我们引回到先前的房间)。 我们可以识别何时到达出口。 我们从当前房间移到每个房间的任何可用步骤。 例如,如果我们在6号房间,我们就不能跳楼开始。就像机器人运动一样。 我们确切知道当前房间的ID。我们知道当前房间(并非在所有迷宫中)每个门的ID。 我们控制机器人。 我查看了所有已知的算法,但是它们都至少需要其他功能才能返回上一个房间。根据规范,我们不能使用任何搜索最短路径的算法(实际上,我不需要最短路径),因为我们只知道当前房间。我们不能使用左手(右手)跟随算法,因为不知道出口的方向。可能唯一符合规格的解决方案是在每个房间选择随机退出,以期能找到一些退出时间。 有什么建议如何以更聪明的方式解决这种迷宫?
11 algorithm  maze 

1
简单地形渲染
由于某种原因,我找不到像“裸露的骨头”这样的地形渲染的好例子。我正在阅读《用DX10进行游戏编程入门》,我也看过其他一些教程....但是它们都是复杂的类,包含很多不必要的东西,而tbh只会使像我这样的初学者感到困惑。就像Raserteks的教程一样棒,但是代码和类太多了,所以当您有很多其他类时,很难理解“ 3d”部分。 我只是在寻找最基本的地形渲染(使用高度图...。或者您拥有什么)。 它甚至不必具有摄像头或移动控件,它只能是一种颜色。我只是想先了解所有内容。有谁知道我在哪里可以找到这个样本?否则,如果有人愿意提供自己的简单样本,我将非常感激。 别误会我的意思,这本书很棒。.....我理解这些功能,但是这些类的组合方式...这使“何去何从”感到困惑。 编辑:我已经看过一些Direct X 9地形演示的/示例....但是DX9像WAYYY不同于DX10(如果这样,那就是为什么我不想在上面浪费时间)。我可能是错的。

5
事件驱动系统中的嵌套输入
我正在使用具有事件和委托的基于事件的输入处理系统。一个例子: InputHander.AddEvent(Keys.LeftArrow, player.MoveLeft); //Very simplified code 但是,我开始怀疑如何处理“嵌套”输入。例如,在《半条命2》(或其他任何真正的Source游戏)中,您可以使用拾取物品E。拾取物品后,您不能使用射击Left Mouse,而是扔掉物体。您仍然可以跳下去Space。 (我是说嵌套输入是您按某个键的地方,可以更改的操作。不是菜单。) 这三种情况是: 能够像以前一样做同样的动作(例如跳跃) 无法执行相同的操作(例如射击) 完全执行其他操作(例如在NetHack中,按开门键表示您不移动,但选择打开门的方向) 我最初的想法是在收到输入后才进行更改: Register input 'A' to function 'Activate Secret Cloak Mode' In 'Secret Cloak Mode' function: Unregister input 'Fire' Unregister input 'Sprint' ... Register input 'Uncloak' ... 这会遭受大量的耦合,重复的代码和其他不良的设计标志。 我猜另一个选择是维护某种输入状态系统-也许是寄存器函数的另一个委托将大量的寄存器/注销重构到更干净的位置(在输入系统上具有某种堆栈)或可能是什么数组保留,不保留。 我确定这里有人一定遇到了这个问题。您如何解决的? tl; dr如何处理事件系统中另一个特定输入之后收到的特定输入?

4
HLSL着色器实际上如何最终影响渲染输出?
我了解HLSL的语法,例如,让我们假设我将其作为HLSL: struct VOut { float4 position : SV_POSITION; float4 color : COLOR; }; VOut VShader(float4 position : POSITION, float4 color : COLOR) { VOut output; output.position = position; output.position.xy *= 0.7f; // "shrink" the vertex on the x and y axes output.color = color; return output; } float4 PShader(float4 position …
11 directx  hlsl 


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.