游戏开发

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

3
伟大的实时着色器工具?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 5年前关闭。 我经常开发2D游戏。我想知道是否有一个像EvalDraw这样的程序,可以很容易地从黑色四边形中快速制作(例如)一个正方形,然后编写一些着色器代码,并查看该着色器代码如何修改正方形实时。 这对于我未来的开发过程来说确实很棒。 编辑: 着色器工具必须与HLSL一起使用。
11 tools 

4
游戏机制模式数据库?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 您知道http://tvtropes.org吗? 这是一种Wiki /数据库,具有场景化的比喻,可以在故事的色调,电视节目,游戏,书籍等中找到的模式。 每个trope / pattern都有一个(有趣的)名称,并引用了它的出现位置,反之亦然:每本书/游戏/等等。有一个包含的比喻列表。 我正在寻找一种等效的游戏机制,例如“死亡是确定的”,“完美的物理控制(无惯性)”,“出色的桌上游戏”等。 我认为这将非常有用。我找不到等效的游戏机制(tvtrope面向场景而非游戏机制)。 你知道任何?

2
如何管理图块地图和单位之间的依赖关系
我在作品中有一个基于2D切片的策略。我在徘徊如何处理地图和地图上单位之间的关系。 给定一个平铺坐标,我将需要使该单元站立在上面(如果有)。同时,如果给定一个单位,我将希望能够获得该单位的坐标。 我已经看到了两种解决方案。第一种解决方案是让单位存储一个坐标,而地图将单位引用存储在其图块中。这在地图和单位之间创建了循环依赖性。如果单元移动,我需要确保地图和任何单元保持同步。 第二种解决方案是只让单位跟踪其坐标。为了判断图块是否包含一个单位并获取该单位,我将遍历整个单位单元,找到一个具有匹配坐标的单位。这样就摆脱了循环依赖,但是却失去了第一个解决方案从地图中查找单位所具有的O(1)属性。由于我希望能够定期扫描地图以查找诸如路径查找,确定运动范围以及为给定单位找到有效目标之类的信息,因此这可能会加起来。 我也不能只将单位存储在地图中(或者可以吗?)。单位与玩家或AI的“军队”相关联。一支军队应该能够轻松地访问和遍历其所有部队。 由于这似乎是战略游戏中的常见问题,除了我描述的两种用于管理单位/地图关系的模式之外,还有其他模式吗?
11 tiles  maps  character 

4
游戏设计中的每帧函数调用与事件驱动消息传递
据我所知,传统的游戏设计使用多态和虚拟功能来更新游戏对象的状态。换句话说,在游戏中的每个对象上以规则的间隔(例如,每帧)调用同一组虚拟函数。 最近,我发现,还有另一个- 事件驱动的消息传递系统可用于更新游戏对象的状态。在这里,对象通常不会按帧进行更新。取而代之的是,构建了高效的事件消息传递系统,并且仅在收到有效事件消息之后才更新游戏对象。 事件驱动的游戏体系结构在Mike McShaffry编写的《Game Coding Complete》中有很好的描述。 我可以在以下问题上寻求帮助: 两种方法的优缺点是什么? 哪里比另一个更好? 事件驱动游戏设计在所有领域都通用且更好吗?因此,即使在可移植的平台中,也建议使用它吗? 哪一个更有效,哪个更难开发? 要澄清的是,我的问题不是要从游戏设计中完全消除多态性。我只是希望了解使用事件驱动消息传递与常规(每帧)调用虚拟函数以更新游戏状态的区别和好处。 示例: 这个问题在这里引起了一些争议,因此让我为您提供示例:根据MVC,游戏引擎分为三个主要部分: 应用层(硬件和操作系统通信) 游戏逻辑 游戏画面 在赛车游戏中,“游戏视图”负责以最快的速度(至少30fps)渲染屏幕。Game View也会侦听玩家的输入。现在发生这种情况: 玩家将燃油踏板踩到80% GameView构造一条消息“将Car 2油门踏板压到80%”,并将其发送给Game Logic。 Game Logic会获取消息,评估,计算新车的位置和行为,并为GameView创建以下消息:“绘制2踩下燃油2的燃油踏板”,“ 2声音加速”,“ 2坐标X,Y” .. 。 GameView接收消息并进行相应处理

4
如何实施减速?
我之所以说“减速”,是因为我目前不使用加速;我的意思是将速度移回零,最终停止。 我是向量的新手,但对物理学等却不太了解。通常如何处理“减速”? 我现在所拥有的有效,但似乎有些破旧。 update:function(Game, t, dt) { var speed = Game.Input.isKeyDown('shift') ? 8 : 4; if (Game.Input.isKeyDown('a')) { this.velocity.i -= speed; } else if (Game.Input.isKeyDown('d')) { this.velocity.i += speed; } else { if (Math.abs(this.velocity.i) > 3) { this.velocity.i += (this.velocity.i > 0) ? -speed : speed; } else { this.velocity.i …

2
对于2D Vector类,是浮点型还是双精度型?
我目前正在为我们的工作室编写一个基于OpenGL的跨平台小型2D游戏引擎。当我研究使用哪种2D Vector类时,偶然发现了三种不同的设计范例: 浮动和按价值致电,就像在Gamasutra的这篇文章中一样。似乎速度很快,但精度却很低(另请参见Thread)。专业版:快速,便携式且与大多数库兼容。 双重和按引用致电。如果我正确理解了以上文章,我也可以使用2个双精度变量而不是4个浮点数。根据上述线程double仍然比float慢。 double和float的模板:广泛流行的书籍“ Game Engine Architecture ”使用模板,使得可以根据需要使用float和double。明显的缺点是代码膨胀。另外,我怀疑是否可以在基本不编写两个类的情况下优化代码。 我希望了解您在内部引擎中使用的解决方案,以及例如流行游戏引擎的精确度,因此我可以决定在引擎中实施哪种解决方案。目前,我正在考虑仅使用float精度并使用它。

2
如何使播放器在地形上平稳滑动
我正在制作一个等距游戏。当玩家尝试对角地走进墙壁时,我希望他们在墙壁上顺畅地滑动,因此将使用合法的移动部分,并丢弃法线方向的任何东西。墙壁可以是任何角度,而不仅仅是垂直或水平,并且播放器可以360度运动。 我觉得自己快到了,但是我无法把最后一块放到位。 更新:大家好消息!我有工作。但是...我有些困惑,我应该规范什么,不应该规范什么。法线只需要是一个单位向量,对吗?但是然后我将其与输入混合在一起,因此我将其标准化了-我错了吗? 顺便说一句,我还发现我需要将播放器朝法线方向推1个像素,这样它们才不会卡在东西上-效果很好。

3
为什么“绑定姿势”双臂张开?
我经常想知道的是“绑定姿势”。人体骨骼的束缚姿势是一种腿部笔直且手臂与身体垂直的姿势: 我的问题是:为什么?这样的姿势对于动画师,程序员或程序员或两者一起使用而言是否容易?据我了解的数学,绑定姿势不会影响结果。

5
跨平台底层图形API
创建系统抽象时,最好在有意义的最低级别上用通用接口隐藏平台不同的API。 考虑到不同的现代(无固定功能管道)本地图形API:OpenGLES 2.0 +,OpengGL 3.0 +,DirectX 10.0 +,Xbox DirectX 9,LibGCM 如果要创建一个无状态的低级图形API放在所有这些之上,那么使它尽可能薄且尽可能快的最佳方法是什么?

3
Unity中的NullReferenceException
由于许多用户都面临NullReferenceException: Object reference not set to an instance of an objectUnity中的错误,我认为从多个来源收集一些解释和解决此错误的方法是一个好主意。 病征 我的控制台中出现以下错误,这是什么意思,该如何解决? NullReferenceException:对象引用未设置为对象的实例
11 unity  exceptions 

1
Unity-对象在Z层中的顺序
抱歉,标题不是我的问题,我真的不知道如何形容。 我有一张用于我的城市地板的图像,以及一张玩家要走过的所有墙壁或树木的图像(大小相同)。我的结果看起来还不错: 问题在于,如果玩家走到墙前,他就消失了,因为墙的图层顺序高于玩家的顺序: 有没有解决这个问题的简单方法,还是我必须手动添加所有这些对象并将它们连接到某些脚本?
11 unity  pixel-art 

4
如何有效检查点是否在旋转的矩形内?
我一方面要出于优化的目的,另一方面出于学习的目的,我敢问:如何使用C#或C ++ 最有效地检查2D点P是否在2D旋转的矩形内XYZW? 当前,我正在做的是使用《实时碰撞检测》一书中的“三角形中的点”算法,并运行两次(对于组成矩形的两个三角形,例如XYZ和XZW): bool PointInTriangle(Vector2 A, Vector2 B, Vector2 C, Vector2 P) { // Compute vectors Vector2 v0 = C - A; Vector2 v1 = B - A; Vector2 v2 = P - A; // Compute dot products float dot00 = Vector2.Dot(v0, v0); float dot01 = Vector2.Dot(v0, v1); float …

3
如何使实体向某个方向移动?
我有一个Entity实例,每个游戏滴答声都会更新。让我们假设实体不断前进。我希望能够将实体的角度赋予使其朝该方向移动的功能: moveForward(90);应该使它们向右移动。如果我宣布轮换为global int,那么 moveForward(rotation); rotation++; 会使它的运动跟踪一个小圆圈。 我怎样才能做到这一点?我认为这涉及向量数学。我什么都不知道,所以简短的解释会很好。

2
如何计算击中移动目标的射击角度和速度?
我正在开发一款2D Android游戏,并且正在为AI弹丸制定一种瞄准算法,以沿着路径或自由移动击中敌人。目前,它只是计算目标在一定距离后的位置,并发射弹丸以达到该距离。当然,这意味着要改变弹丸速度以达到目标。 有没有人有简单的算法(最优的算法)的技巧来计算弹丸何时需要发射以及如果它只能以恒定的速度行进时需要瞄准什么地方?是说射弹的速度是目标的两倍? 我能想到的唯一方法就是搜索,而且看起来很大。
11 2d  android  mathematics  ai  aiming 

3
如何从视图矩阵获取翻译
如何从摄像机的视图矩阵中检索摄像机的世界空间位置?我对这个问题所见的唯一答案表明翻译是在最后一行/列中,但由于矩阵包含[x(右)点,y(向上),z(点)外观),因此该操作无效。
11 3d  mathematics  matrix 

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.