Questions tagged «2d»

2D是指二维空间,其中的坐标用X和Y值表示。

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

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

9
围绕精灵绘制轮廓的有效方法
我正在使用XNA对游戏进行编程,并且一直在尝试各种方法来对我的精灵实现“选定”效果。我遇到的麻烦是,在spritebatch中绘制的每个可单击对象均使用多个sprite绘制(每个对象最多可以由6个sprite组成)。 如果有人可以建议我如何为X像素的精灵添加轮廓,我将不胜感激(因此轮廓宽度可以是整个像素的各种数量)。 提前致谢, 格雷格
21 2d  xna  sprites 


2
在2D游戏中实现相机/视口
将相机/视口实现到2D游戏的最实用方法是什么? 我读过,应该存储对象的世界位置而不是相对于屏幕的位置? 现在的情况: 我实现了一个简单的2D游戏,从XML文件加载对象和关卡。当前,级别XML文件如下所示: <map> <tile obj="ground" x="0" y="555" /> <tile obj="ground" x="16" y="555" /> <tile obj="ground" x="32" y="555" /> ... </map> 所有对象都有一个二维矢量“位置”,将其当前位置存储在屏幕上。 我想要的是: 图片中: 相机为800x600或640x480 块和精灵为16x16像素。 世界大小可能有所不同 坐标可能应该相对于世界而不是相对于屏幕进行标准化? 视口相对于播放器x,y的位置,并在播放器到达相机死区时移动(类似于此视频)。 我问的是伪示例/文章,但是如果您需要了解我在开发中使用的东西:SDL和C / C ++。
20 c++  2d  architecture  camera 

4
是否有可以模拟流体和气体的二维物理引擎?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 4年前关闭。 在这一点上,平台和编程语言都无关紧要,我只想知道是否为此存在某种东西。任何帮助表示赞赏。
20 2d  physics 

3
如何以程序方式(创建)实时(L系统)种植艺术(2D)树?
最近,我编写了一个L系统模块,这使我进一步感兴趣。我也是植物大战僵尸迷,真的很喜欢智慧树的概念。很想创造类似的程序艺术,只是为了娱乐和了解更多。 问题:我应该如何动态地创建艺术树(可能是使用固定摄像机/透视图的2d树)? 理想情况下,我想从一种植物(只有带有叶的茎)开始,并通过对其结构的某种影响(输入/用户操作)动态地使其生长。这些影响可能导致不同类型的分支,分支曲线,其传播,果实的位置,花朵的颜色等。希望它确实充满生命/精神。:) 植物大战僵尸:智慧之树 动态地生长一棵相似的树会很棒,但是会产生更多的变化和动画。 我的背景:程序员,很少使用游戏引擎(Ogre3d,cocos2d,Unity)。尚未真正真正使用openGL进行直接编程,试图解决此问题:)。 我已经准备好花大量的时间,请告诉我有关API的信息?像您这样的专家将如何处理这个问题? 为什么是2D?我认为仅考虑二维即可解决问题。 艺术灵感: 只有树木,有果实和叶子,底部没有灌木 在大的树(可见树枝,绿叶,花朵,果实等),在左边,后面的猴子。 PixelJunk的Eden(艺术风格的灵感)。 分形过程式生成的苹果树 如果您很容易理解这个问题,请告诉我,我可能会进一步详细说明。 我希望对各种方法的讨论对每个人都有帮助。你们真棒。

7
编写2D游戏的最简单,最有趣的方式?闪?XNA?其他引擎?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 这是一篇详细介绍我的搜索的文章,其中介绍了我对爱好者游戏程序员最有趣的搜索方式,以利用自己的空闲时间来制作游戏。 我的要求: 我首先看过Flash,做了一些小型游戏,但对性能感到怀疑。我想制作一个相当大的策略游戏,其中有数百个单位同时战斗,其中包括爆炸和动画。也可缩放地图。我看到Adobe为Flash提供了一个新的3D API,但是我不知道这是否还能提高2D性能,我在他们的MAX10会议上找不到与该问题有关的任何内容。您是否说Flash是轻松制作大型2D游戏的好技术?我真的很喜欢Actionscript,而且我喜欢Flash中的一切都非常容易。有几种可用的引擎,使其变得更加容易。 我只是为了好玩而已,如果有合适的动画/粒子编辑器可用,并且如果我要使用的引擎可以在多个平台上使用,那就更好了。(这样一来,更多的人就可以玩我的游戏了)。我也想在许多移动平台上使用它。(因为某些原因,我喜欢触摸输入) 我确实很了解XNA框架,但是没有适用于它的好的引擎,它只能在Windows上运行,这是一个很大的限制。更大的是,每次要将游戏分发给某人时,您都需要安装XNA可再发行组件。如果使用XNA,则必须自己制作所有工具,并且可能必须使用WPF制作它们。(我很想使用Adobe AIR制作工具,但是不幸的是,Flash中的图像处理等API比XNA / WPF中的API要差得多。)现在,我知道我可以自己制作引擎了支持每个平台,但坦率地说,通过API进行大量的工作。毕竟,我想做一个游戏,而不是引擎。 因此,问题就变成了:是否可能有一个可用于2D开发的跨平台(免费或免费开发?)引擎? 我更喜欢:C#,Actionscript。如果工具集高于平均水平,我不介意使用c ++,但我高度怀疑是否存在类似的东西。请证明我错了:)总结:我想使用Flash,但是我不知道它的扩展性是否足够好。我不是脚本编写者,我想要一些可以在适当的IDE中使用的真实API。 仅作为参考,我研究了几种选择,实际上我已经寻找了很长时间。您最终会帮助我做出很多决定。 从功能上讲Flatredball引擎将是理想的选择。但是我尝试了他们的工具,坦率地说,它们太可怕了。绝对无法使用,我需要确定自己做。我没有看过他们的API,但是如果他们的工具太差了,我就不会再去研究了。 Unity3D。这很不错,但是我真的不需要3D,而且这是很多……需要学习的工作。我也不喜欢在不同平台上使用它是如此昂贵,并且只能通过脚本编写代码。您必须分别购买每个平台。编辑器的可用性是中等的,产品的整体性能足以满足大多数目的,但是我自己学习它可能会过头。 Shiva 3D。看起来足够好,但是再说一遍:我真的不需要3D。在我看来,编辑器的可用性比Unity3D差一点,而且我不清楚如何开始编程。我认为它需要C ++进行编码,所以这也是负面的。我想玩得开心,而C#很有趣;) SDL。坦率地说,我仍然需要移植到所有这些不同的SDL实现。而且我不喜欢OpenGL风格的编程,这太丑陋了。它需要c ++,我知道可能有一些包装器,但是我不喜欢使用包装器,因为... 违规。有很多功能,但支持似乎很少,而且针对发烧友。C#绑定被反复删除。我不是引擎迷,我只是想做一个游戏。我认为Irrlicht不会发生这种情况。 Ogre3D。工作太多了,它只是一个图形引擎。也没有多平台支持和c ++。 Torque2D。使用会花费一些钱,而且我没有听到很多关于支持和文档的好东西。每个平台还需要额外付费。
20 c#  2d  actionscript-3 

7
对于2D游戏,是否有任何理由不使用Direct3D或OpenGL等3D API?
我已经很长时间没有从事游戏开发了。当我这样做时,大多数人都使用Direct Draw来创建2D游戏。在我停下脚步的时候,人们说采用正交投影的OpenGL或Direct3D只是要走的路。 我正在考虑重新创建2D游戏,尤其是在手机上,但也可能在XNA平台上。要使用OpenGL制作东西,我需要(充分)小的学习曲线来使自己适应3D开发。 是否有任何理由跳过它,而是使用2D框架工作,而我只有一个宽度x高度帧缓冲区,我需要用像素填充?
20 2d  opengl  directx 

2
Unity的Sprite和Texture2D类之间有什么区别?
Unity既有一个Texture2D类,又有一个Sprite(带有related SpriteRenderer)。这两个类有什么区别?两者都代表图像,对于2D游戏,我是否应该偏爱一个? 使用Sprite我不需要自己创建“广告牌”四边形的两者之间的主要区别是吗?并且Sprite总是直接在相机上渲染?
19 2d  unity 

7
如何检测2D平台游戏中被压扁的玩家?
我正在检查碰撞中是否有平台角色,如#1所示。红点是被检查的像素,灰线指示它们所属的轴。我喜欢以这种方式检查碰撞(相对于边界框)得到的结果。除了一个问题:挤压检测,其他所有功能都按我的意愿运行。 在以下图像中,浅蓝色框表示地面,橙色框表示对象,箭头表示移动方向。 检测玩家何时被压倒的简单解决方案是查看相对两侧的碰撞点是否都在触发。如果是这样,则说明玩家被压碎了。在#2中,您可以看到正常的暗恋场景。播放器已接地,顶部碰撞点与下落的物体相交。这触发了暗恋。 #3、4和5存在有问题的场景。在#3中,玩家正在朝向上移动的物体移动。右侧碰撞点撞击物体,导致碰撞并使玩家停止。 现在,如果对象继续向上移动并且玩家继续向右移动(如#4所示),则该对象清除玩家右侧碰撞点,然后玩家向右移动。但是现在,这样做的目的是使对象与顶部碰撞点相交,从而导致不必要的垂直挤压。 #5中显示了类似的情况。两个物体相距足够远,可以清除底部碰撞点,从而允许玩家跌倒,但不能超过允许侧面碰撞点清除的程度,从而导致不必要的水平挤压。 我一直在努力寻找解决方案,但是我提出的任何方案都没有特别有效,所以我想知道是否有人对解决这些问题有想法或见识。 为了消除一些混淆,红色碰撞点将位于精灵内,而灰线仅用于表示每个碰撞点的相关轴。例如,如果角色的精灵是一个简单的绿色方块,则拐点将如下所示:

1
哪些功能属于引擎,哪些功能属于游戏?
现在,我发现自己通过将2D游戏引擎直接编码到引擎中来实现和测试新功能。同时,我有一个带有脚本支持的展示游戏,应该调用引擎功能。我将固定的平铺运动附加到引擎中的Entity类,而不是专门为游戏编写脚本。这无疑打破了用于多个游戏的通用引擎的想法。 是否有最佳实践来始终专注于正确的部分(即引擎与游戏)的正确实现?

3
如何在游戏中生成随机的湖泊和河流?
我有一个2D方块建筑游戏,正在尝试制作随机生成的湖泊和河流。我已经研究了Perlin噪声算法,但是无法获得它来生成随机且不错的结果。 我一直在尝试使用python noise库,但是它并不是随机创建地图。 我在该库中缺少一些种子函数来使其更加随机吗?如果我希望它变得更随机,该更改什么变量?如果可能的话,给我一个不太技术的答案,减少数学运算,增加更多python术语。 该地图是2D平铺的地图。这是其他算法的非随机性的一些示例。以下代码连续输出3次。我使用以下方法将八度和频率随机化:freq = 16.0 * random.randint(1, 500000) * 0.000001 + 0.5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 …

6
无缝的tilemap渲染(无边界的相邻图像)
我有一个2D游戏引擎,可通过从tileset图像绘制图块来绘制图块。由于默认情况下OpenGL只能包装整个纹理(GL_REPEAT),而不仅仅是部分纹理,因此每个图块都被拆分为单独的纹理。然后,将同一图块的区域渲染为彼此相邻。这是按预期工作时的样子: 但是,一旦引入分数缩放,接缝就会出现: 为什么会这样?我以为这是由于线性过滤混合了四边形的边界,但仍然发生在点过滤中。到目前为止,我发现的唯一解决方案是确保所有定位和缩放仅在整数值处进行,并使用点过滤。这可能会降低游戏的视觉质量(尤其是子像素定位不再起作用,因此运动不太流畅)。 我尝试过/考虑过的事情: 抗锯齿可以减少但不能完全消除接缝 关闭mipmapping,无效 分别渲染每个图块并将其边缘拉伸1px-但这是一种非优化,因为它不再能够一次性渲染图块区域,并且会沿着透明区域的边缘创建其他伪像 在源图像周围添加1px边框并重复最后一个像素-但随后它们不再是2的幂,从而导致与不支持NPOT的系统的兼容性问题 编写自定义着色器以处理平铺图像-但是您将有何不同呢?GL_REPEAT应从边框的图像另一侧抓住像素,而不要选择透明度。 几何形状完全相邻,没有浮点舍入错误。 如果片段着色器经过硬编码以返回相同的颜色,则接缝消失。 如果将纹理设置为GL_CLAMP而不是GL_REPEAT,则接缝消失(尽管渲染错误)。 如果纹理设置为GL_MIRRORED_REPEAT,则接缝消失(尽管渲染还是错误的)。 如果我将背景设为红色,则接缝仍为白色。这表明它是从某个地方(而不是透明度)采样不透明的白色。 因此,接缝仅在GL_REPEAT设置时出现。仅出于某种原因,仅在此模式下,几何图形的边缘会出现渗色/泄漏/透明性。这个怎么可能?整个纹理是不透明的。

2
如何为图块网格生成导航网格?
我实际上还没有开始为此编写程序,但是我想看看我将如何去做。 假设我有一块瓷砖,所有尺寸都是相同的,有些是可穿越的,有些不是。我将如何从该网格创建多边形的导航网格? 我的想法是取出不可遍历的图块,并从那里的边缘延伸线以制成多边形……这就是我到目前为止所要做的。有什么建议吗?

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.