游戏开发

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

2
洛克人风格的屏幕滚动设计
NES经典的《漫画人》系列使用了非常特殊的滚动技术,我很难将精力集中在实现上。本质上,该级别分为大小均相同的“屏幕”。一些屏幕可以平滑地彼此滚动,从而产生了更广阔的游戏领域的幻觉。某些屏幕会阻止相机滚动,直到播放器到达屏幕边缘为止,此时会发生过渡并显示下一个屏幕。单个屏幕也可能具有多个过渡,例如,它的梯子可以上升到一个屏幕,但是您也可以向前走到另一个屏幕。 这些屏幕过渡如何建模? 屏幕0是播放器开始的开始屏幕。 屏幕0-3在水平方向上平滑滚动,并向玩家显示为一个连续的比赛场地。 由于在屏幕3及其相邻的屏幕4和5之间存在过渡,因此除非玩家移动到相应的边缘并“推动”到下一个屏幕,否则照相机不会前进到屏幕3的右边缘或上边缘。 一旦播放器移动到两个过渡边缘中的任意一个,用户输入就会立即被禁用,并且摄像机会过渡到新区域,之后恢复用户输入。 蓝屏(屏幕5)已禁用水平滚动,因此只能进行垂直过渡。 绿色屏幕(屏幕6)具有垂直返回屏幕5的垂直过渡,但也允许水平平滑滚动到屏幕7。 编辑:在房间方面实现过渡导致我这样做: 带有箭头的小缺口是可能发生过渡的区域。每个区域都有一个“方向”和谎言只是房间外面的可视区域。一旦玩家击中一个区域,就会开始过渡。
25 2d  camera  platformer 

3
什么会导致ALT-TAB“烦人” /缓慢/毛躁?
这更多是一个开放式问题,但是我希望对如何避免该问题有一些深刻的了解。 在Windows上玩游戏时,我可能想按ALT-TAB键。有些游戏没有问题,另一些游戏却不那么容易:它们可能需要使用AGES才能切换回原来的状态。有些游戏甚至容易崩溃或出现怪异的行为,例如图形失真或声音不稳定。 我只是想知道是什么原因导致这种现象?这是DirectX还是OpenGL?是由于游戏在屏幕设置更改时“聪明”并缓存/清除缓存引起的吗?(我想我在按ALT-TAB键时确实会收到某种信号吗?) 我自己没有任何问题,但是我想知道要避免什么,哪种“聪明”的窍门可能会导致这种可怕的客户体验?

5
对游戏对象的每个实例使用DrawableGameComponent的缺点是什么?
我在很多地方都读过,应该将DrawableGameComponents保存为诸如“关卡”之类的东西或某种类型的管理器,而不是使用它们,例如,用于字符或图块(就像这个人在这里说的)。但是我不明白为什么会这样。我读了这篇文章,对我来说很有意义,但这只是少数。 我通常不会过多地关注这类事情,但是在这种情况下,我想知道为什么大多数人都认为这不是路要走。也许我想念一些东西。


4
如何设计易于单元测试的游戏软件?
在游戏开发环境中使用像JUnit这样的测试框架是否可行?为了使游戏更具可测试性,您可以遵循哪些设计注意事项?可以/应该测试游戏的哪些部分,应该/必须将哪些部分留给人工测试? 例如,如果将游戏循环封装在一个函数中,似乎很难进行测试。我喜欢重构一个“更新”功能,该功能需要时间增量并向前推进游戏逻辑。这提供了一些有趣的技巧,例如通过提供虚假的,较慢的时间增量来降低游戏速度的功能。

8
什么是产生动画精灵的好工具?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 有没有人遇到过一个软件包,该软件包可让您以类似于Flash中的方式(例如,使用补间,骨骼和缓动等技术)来构建动画,然后将结果导出为Sprite表?

4
如何选择如何存储数据?
给一个人一条鱼,你就喂他一天。教一个人钓鱼,你就养活他一辈子。 - 中国谚语 我可以问一下我应该为实际项目使用哪种数据存储,但是我想学习钓鱼,所以我不必在每次开始新项目时都要求钓鱼。 因此,直到我使用两种方法在我的非游戏项目上存储数据:XML文件和关系数据库。我知道还有NoSQL类型的其他数据库。但是我不知道是否有更多选择可供选择,或者首先是如何选择,除了随意选择一个。 因此,问题如下:如何为游戏项目选择数据存储类型? 在选择时,我会对以下标准感兴趣: 项目的大小。 游戏所针对的平台以及所使用的开发平台。 数据结构的复杂性。 在许多项目之间增加了数据的可移植性。 Added2 Silmutaneous使用不同之间的项目数据。(即用户数据) 添加了应该多长时间访问一次数据 为同一应用程序添加了多种类型的数据 带有多个数据存储的Added2配置。 在决定使用什么时,您认为还有其他要点。 编辑我知道关于使用XML / JSON / Text或数据库存储游戏内容会更好吗?,但认为它不能完全解决我的观点。现在,如果我错了,我将很高兴以自己的方式看到错误。 EDIT2添加了一些我认为相关的观点。此外,除了平面文件存储和关系数据库之外,我想听听还有哪些其他可用的选择。例如,非关系数据库呢?在前面提到的其他选项上使用这样的数据库是否有意义?
25 databases  data  xml 

9
学习如何在Unity3d中编写游戏的最佳场所[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 什么是unity3d教程和其他学习资源的最佳位置?
25 unity 

4
生成图块地图
我正在编写基于图块的游戏,并且有一些基本的图块(草,土等),但是我不知道如何生成良好的随机图,因为当我进行一些真正的随机选择时,如果图块应该是草/污垢,我得到这个: 我知道为什么会这样,但是我想要的是创建一些随机的连续区域的草或泥土。这样更有意义的事情是这样的:

3
如何在循环的值(例如色相或旋转)之间保持平衡?
观看演示 我试图使关节围绕画布的中心顺着鼠标指针的角度平滑旋转。我所拥有的作品有效,但我希望它能够动画化尽可能短的距离,以达到鼠标角度。当值在水平线(3.14和-3.14)处循环时,会发生问题。将鼠标悬停在该区域上,即可查看方向的切换方式,并且需要很长的路程。 相关代码 // ease the current angle to the target angle joint.angle += ( joint.targetAngle - joint.angle ) * 0.1; // get angle from joint to mouse var dx = e.clientX - joint.x, dy = e.clientY - joint.y; joint.targetAngle = Math.atan2( dy, dx ); 如何使它旋转最短的距离,甚至“跨越间隙”?

5
通过四元数旋转vector3
我正在尝试通过给定的四元数旋转vector3。 我知道这是真的 v′=q⋅v⋅q−1v′=q⋅v⋅q−1 v' = q \cdot v \cdot q^{-1} 我知道是的逆,但是如何将向量的乘法映射到四元数以得到向量呢?q−1q−1 q^{-1} −qmagnitude(q)−qmagnitude(q) \frac {-q} {magnitude(q)} 我发现您可以将视为矩阵,并将和转换为矩阵,然后将从矩阵转换为向量,但这似乎只是为了获得向量而已。有没有我可以使用的更清洁的实现?vvvqqqq′q′q'v′v′v'
25 c++  quaternion 


3
有更快的正弦功能吗?
我正在研究3D Perlin噪声。C#数学库似乎对我需要的东西来说是过高的,因为它的大多数功能都使用双精度。我在多个地方使用Math.Sin()来产生噪声。有谁知道更快的正弦函数?
25 xna  c#  mathematics 


2
如何减少渲染树的性能影响?
我正在制作一款低聚风格的游戏。我的地形上有一些水,我想要很多树木。目前,我已经放置了10,000棵树。每棵树包含不超过200个三角形,因此它们不太费力。 主要问题是有湖泊,而且湖泊很大。您实际上看不到湖另一侧的任何树木,这看起来真的很糟糕,尤其是当您走到那里而突然出现树木时。 要解决此问题,我必须增加树的距离,以便您可以在湖的另一侧看到相当多的树,但这会降低性能至40-50fps,并且游戏中几乎没有其他内容。我正在使用GTX 1080,如果可以的话。 我怎样做才能使游戏在更多树木下运行得更快?

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.