游戏开发

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

6
对于游戏程序员来说,什么是一本好的线性代数书?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,以便仅通过编辑此帖子来关注一个问题。 4年前关闭。 有人告诉我,我应该开始学习线性代数,以便创建具有良好物理特性的出色游戏。 我正在阅读《线性代数》一书,这对我来说完全陌生。作者从求解线性方程(两个方程,两个变量)开始,我记得在学校学习过线性方程,但几乎立刻他就跳入了其他似乎直接来自死灵书中的东西。 我可以读哪本书来学习一些好数学,但是要从基础开始? 非常感谢您的帮助。

10
与C ++竞争游戏编程
此问题是从Stack Overflow 迁移而来的,因为可以在Game Development Stack Exchange上回答。 迁移 8年前。 我很好奇为什么C ++在游戏开发中如此流行,而不是其他语言。我知道您可以使用它创建非常快速的代码,但是究竟是什么使它流行呢? 仅仅是因为它速度快吗?它是语言的其他功能吗,例如OO范例或可移植性?是因为所有随时间推移创建的库吗?还是所有这些(和其他)原因的某种组合? 如果有人可以帮我解决这个问题,我会很高兴的。:-)
21 c++ 

8
开工作室的时候应该注意什么陷阱
建立新游戏工作室时,常见的错误或疏忽是什么? 请仅对每个答案提出一个错误或疏忽,如果您可以解释这是一个问题的原因,以及应该采取什么措施避免陷入错误或在他们已经犯错的情况下恢复原状。
21 business 


6
代表火车轨道的方法有哪些?
不久前,我在一个小型项目中调查了这个项目,但是并没有太过分。我想创建一个小程序,让用户绘制火车轨迹,然后允许“火车”在2D平面上跟随该轨迹。我希望这条赛道是自由形式,并能使线条流畅。我玩过三次样条曲线,并取得了不错的成绩,但是在使火车跟随样条曲线方面遇到了很多麻烦。创建多个轨道并将火车从一个轨道切换到另一个轨道时,我也遇到很多麻烦。 是否有人可以提供建议,文章或源代码来帮助我解决问题?谢谢!

3
Megatexture如何工作?
我一直在考虑开发一个小型引擎,不仅可以开发小型实验游戏,而且还可以作为测试各种渲染技术和类似东西的基础。现在,我一直在思考如何处理纹理并迷失在大型纹理上,但这有些令人困惑。有很多传言说它要比传统方法更好,可以围绕一堆纹理并根据需要加载它们,但是超大纹理如何避免这种情况,我已经读到它们使用流式传输,您可以流式传输而不是分别加载每个纹理,但是这如何提供更好的性能,而不仅仅是耕作的另一种形式吗? 在着色器中如何采样这种纹理,如何将其一部分流式传输到内存中然后进行处理。我看过Rage的最新视频,其质感确实很棒,但这仅仅是伟大的艺术家的产物还是这项技术发挥了作用。 总结一下,它是如何工作的,为什么它很棒,我该如何做类似的事情。
21 textures 

1
变换矩阵乘法顺序
我在尝试找出最终变换矩阵的正确乘法顺序时遇到了困难。我总是会感到奇怪的动作或扭曲的几何形状。我当前的模型解释如下: 对于单个节点,我的乘法顺序是: L = S * R * T 哪里 L =局部变换矩阵 S =局部比例矩阵 R =局部旋转矩阵 T =本地翻译矩阵 对于节点的世界转换: 宽=宽*长 哪里 W =世界变换矩阵 PW =父世界转换矩阵 L =上面计算的局部变换矩阵 渲染时,我为每个节点计算矩阵: MV = Inv(C)*净重 哪里 MV =特定节点的模型视图转换矩阵 Inv(C)=逆相机变换矩阵 NW =上面计算的节点的世界转换矩阵。 最后,在着色器中,我进行了以下转换: TVP = PRP * MV * VP 哪里 TVP =最终变形的顶点位置 PRP =透视矩阵 …
21 matrix 

3
以恒定速度从A(x,y)移至B(x1,y1)吗?
我目前有类似的东西: float deltaX = point0.getX() - point1.getX(); float deltaY = point0.getY() - point1.getY(); 每隔0.01秒,我就会刷新对象位置,如下所示: object.setPosition(object.getX()-deltaX/100,object.getY()-deltaY/100); 因此,这会在1秒内将我的对象从point0移动到point1。我需要的是2个点,以便能够将对象从point0移动,以恒定的速度面向point1。因此,当我有一个点更接近我的初始点时,对象将以与我拥有一个更远点时相同的速度向它移动。任何建议表示赞赏。谢谢。

3
如何避免像素艺术运动中的“楼梯效应”?
我在精确的像素坐标处渲染精灵,以避免因抗锯齿而引起的模糊效果(精灵是像素艺术的,如果进行过滤,效果会很糟)。但是,由于对象的移动涉及可变的速度,重力和物理相互作用,因此轨迹以亚像素精度计算。 在足够大的屏幕空间速度(vΔt大于2或3像素)下,此效果很好。但是,当速度较小时,会出现明显的阶梯效应,尤其是沿对角线时。在非常慢的屏幕空间速度(v << 1像素/秒)下,这不再是问题,因此我只在寻找中等速度值的解决方案。 左图是通过简单舍入对象坐标获得的大速度绘制的轨迹。在中间,您可以看到当速度变小时会发生什么,以及我正在谈论的阶梯效应。在右边,我想获得的轨迹轨迹。 我对算法思想感兴趣,以便对轨迹进行滤波,以最大程度地减少混叠,同时保留大小速度下的原始行为。我可以访问Δt,即时位置和速度以及任意数量的先前值,但是由于它是实时模拟,所以我不知道将来的值(尽管如有必要,可以在某些假设下推断出估算值) 。请注意,由于物理模拟的缘故,方向突然改变也会发生。

5
我的Vector类中是否需要'w'组件?
假设您正在编写处理3d空间旋转,平移等的矩阵代码。 现在,转换矩阵必须为4x4以适合转换分量。 但是,您实际上并不需要w在矢量中存储组件吗? 即使在透视除法中,您也可以简单地w在向量之外进行计算和存储,并在从方法返回之前进行透视除法。 例如: // post multiply vec2=matrix*vector Vector operator*( const Matrix & a, const Vector& v ) { Vector r ; // do matrix mult r.x = a._11*v.x + a._12*v.y ... real w = a._41*v.x + a._42*v.y ... // perspective divide r /= w ; return r ; …

6
如何构建“交通AI”?
我目前正在从事的一个项目具有很多“交通”的含义,例如汽车在道路上行驶,飞机在停机坪上行驶等。 到目前为止,可用路径已预先计算,因此会自动生成交叉点,这些交叉点本身通过边相互连接。当角色/代理生成时,它从某个节点开始,并通过简单的A *算法找到到目标节点的路径。代理遵循路径并最终到达其目的地。到目前为止没有问题。 现在,我需要使代理能够避免冲突并处理复杂的流量情况。由于我是AI领域的新手,所以我查阅了几篇有关转向行为的论文/文章,但发现它们太低级了。我的问题很少是避免实际的碰撞(在这种情况下,这很简单,因为代理遵循严格定义的路径),而是一种情况,例如一个代理留下了死胡同,而另一个则想输入完全相同的代理。或两个遇到瓶颈的代理程序只能一次允许一个代理程序通过,但是两者都需要通过(根据之前找到的最佳路由),并且他们需要找到一种方法让另一个代理程序首先通过。因此,基本上,该问题的主要方面是预测交通流,以避免死锁。 很难描述,但我想您明白我的意思。您对我从哪里开始有什么建议?是否有任何论文,示例项目或类似的东西可以帮助我入门? 我感谢您的帮助!
21 ai  movement 

2
如何根据对象是什么设计上下文菜单?
我正在寻找“右键单击选项”行为的解决方案。 基本上,当右键单击游戏时,游戏中的所有项目都可以根据对象的不同显示一组选项。 右键单击不同情况的示例: 库存:头盔显示选项(装备,用途,掉落,描述) 银行:头盔显示选项(Take 1,Take X,Take All,Description) 楼层:头盔显示选项(“乘车”,“在这里行走”,“描述”) 显然,每个选项都以某种方式指向执行所说内容的特定方法。这是我要解决的问题的一部分。对于单个项目有这么多的潜在选项,我如何以不至于太混乱的方式设计班级? 我曾考虑过继承,但是这可能会很漫长,而且链条可能很大。 我已经考虑过使用接口,但这可能会限制我一点,因为我无法从Xml文件加载项目数据并将其放入通用的“ Item”类中。 我将期望的最终结果基于一个名为Runescape的游戏。可以在游戏中右键单击每个对象,并根据其位置以及位置(存货,楼层,银行等)显示不同的选项集,供玩家进行交互。 我将如何实现这一目标?首先,我应该采用哪种方法,决定应该显示哪些选项,单击后如何调用相应的方法。 我正在使用C#和Unity3D,但是提供的任何示例都不必与它们中的任何一个相关,因为我追求的是与实际代码相反的模式。 非常感谢您的帮助,如果我在问题或期望的结果中不清楚,请发表评论,我会尽快解决。 到目前为止,这是我尝试过的: 实际上,我已经设法实现了一个通用的“ Item”类,其中包含了不同类型项目的所有值(额外攻击,额外防御,成本等)。这些变量由Xml文件中的数据填充。 我曾考虑过将每个可能的交互方法都放置在Item类中,但是我认为这是令人难以置信的混乱且糟糕的形式。我可能仅通过使用一个类而不将其子类化为不同的项目而采用了错误的方法来实现这种系统,但这是我可以从Xml加载数据并将其存储在类中的唯一方法。 我之所以选择从Xml文件中加载我的所有物品,是因为该游戏可以容纳40,000多个物品。如果我的数学正确,则每个项目的班级很多。

2
使整个场景淡入灰度
当玩家失去一生时,我希望整个游戏屏幕变为灰度,而不是立即停止更新。我也希望它逐渐变灰而不是突然失去所有颜色。到目前为止,我发现的所有内容都是关于截屏并将其设为灰度,或将特定的纹理设为灰度。有没有一种方法可以将整个运动场和其中的所有对象更改为灰度,而无需遍历所有内容?
20 xna  c# 

3
高效寻路许多成群的敌人绕过障碍物
我正在努力改善游戏敌人的寻路能力。现在,他们基本上只是通过计算自己与玩家之间的角度并朝该方向移动,不断地朝着玩家的确切位置移动。我也有一个植绒算法,可以防止敌人相互堆叠,因此它们会成组,而不是相互夹住。 但是,既然我已经添加了基于图块的地图,那么我就需要敌人也能够绕过障碍物和墙壁。我最初尝试为“不可行走”的瓷砖添加间隔值,以使植绒算法将墙壁和障碍物视为要远离的对象。我还没有弄清楚这是否可行,因为我的初步测试显示敌人击中了一个看不见的“墙”,那里没有不可行走的瓷砖,但由于某种原因,他们击中了它并开始飞扬。 我想知道如果使用A *计算到达播放器的路径,然后使用植绒算法来防止结块,可能会导致性能负担过重。最初,我的游戏将是基于海浪的射击游戏,但我决定改以热线迈阿密为基础进行游戏,因此我可能会减少敌人的数量,偶尔会成群结队,他们更强大。 这是可行的解决方案吗?我将Java与Slick2D一起用作游戏引擎。还是有解决这些问题的更好的解决方案/算法?

3
地图坐标系的最佳做法
游戏地图中的坐标系周围是否有约定和/或最知名的方法?原点通常位于地图中心吗?还是它生活在角落里,而地图是建立在3D空间的一个八分之一内?

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.