游戏开发

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

3
如何将有限状态机连接到基于组件的体系结构?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 状态机似乎在基于组件的体系结构中造成有害的依赖关系。 具体来说,如何在状态机和执行与状态相关的行为的组件之间处理通信? 我在哪里: 我是基于组件的体系结构的新手。 我正在制作格斗游戏,尽管我认为这并不重要。我设想我的状态机将用于切换“蹲下”,“破折号”,“阻塞”等状态。 我发现这种状态管理技术对于基于组件的体系结构来说是最自然的系统,但是它与我读过的技术相冲突: 用于可变行为角色的动态游戏对象组件系统它建议所有组件都激活/停用通过不断检查激活条件来检查自己。 我认为像“跑步”或“步行”之类的动作在状态上是有意义的,这与此处接受的响应不同:https : //gamedev.stackexchange.com/a/7934 我发现这很有用,但是模棱两可:如何在基于组件的游戏架构中实现行为?它建议有一个单独的组件,其中仅包含状态机。但是,这需要在状态机组件和几乎所有其他组件之间进行某种耦合。我不明白该如何处理耦合。这些是一些猜测: A. 组件取决于状态机: 组件接收对状态机组件的引用getState(),该引用返回枚举常量。组件会定期进行自我更新,并根据需要进行检查。 B. 状态机取决于组件: 状态机组件接收对其监视的所有组件的引用。它查询他们的getState()方法以查看它们的位置。 C. 它们之间的某种抽象 使用事件中心吗?命令模式? D. 使用引用组件状态模式的单独状态对象。创建了单独的状态对象,这些状态对象激活/停用一组组件。状态机在状态对象之间切换。 我正在将组件视为方面的实现。他们在内部完成使该方面实现所需的一切。看起来组件应该独立运行,而不依赖其他组件。我知道一些依赖是必要的,但是状态机似乎要控制我的所有组件。

6
修改颜色以使其与背景不太相似的算法
我正在创建一个演示示例,其中有20个球互相弹跳,背景填充有纯色。每个球的颜色是randint(0, 255)针对每个R,G,B元组分量随机选择的。 问题是某些球最终的颜色与背景非常相似,因此很难看到它们。我想避免这种情况,如果选择的颜色太相似(在给定的阈值范围内),则滚动另一种颜色,或者将其移离背景颜色。 如何计算相似度指标用作阈值?或者,如何变换颜色使其变淡(例如,偏蓝)? 明显的免责声明:我对色彩理论一无所知,所以我不知道上述概念是否存在! 我正在用python进行编码,但是我正在寻找概念和策略,因此伪代码很好(或者只是理论上)。 编辑: 要澄清几点: 每个球都有自己的随机颜色。我希望它们尽可能地保持随机性,并尽可能地探索色彩空间(无论是RGB还是HSV,都pygame接受两种格式来定义色彩) 我只是想避免每种颜色与背景“太接近”。问题不仅仅在于色调:我完全可以在深蓝色背景下使用浅蓝色球(或者在“白色”蓝色下使用“全蓝色”,等等) 现在,我不在乎一个球的颜色是否与另一个球相似(甚至相同)。避免这种情况是有好处的,但这是一个小问题。 背景色是恒定的单一RGB颜色。目前,我使用的是“基本”蓝色(0, 0, 255),但我对此还不太满意。因此,请考虑背景为任意颜色(具有任意色调,亮度,饱和度等)。 编辑2: TL,DR版本:只是提供一种创建X种随机颜色的方法,这样就不会在任意(但单一和恒定)颜色的背景下“淡入淡出”
23 algorithm  color 

5
游戏框架和游戏引擎有什么区别?
游戏框架(例如,带有C#的XNA,用于c ++的SDL)和游戏引擎之间有什么区别? 游戏框架是否使用引擎?游戏引擎是否封装了物理引擎,粒子引擎等子引擎?它们应该一起使用还是互斥? 我认为2D和3D都有单独的引擎吗?

3
如何在游戏引擎中进行单元测试?
令我感到羞耻的是,我从未编写过适当的单元测试,只是编写了一些小的,无组织的测试程序,在测试成功后将销毁这些程序。我对如何在游戏项目中执行单元测试一无所知。(我的语言是C ++。) 我是否应该为引擎中的每个子系统有一个单独的项目以及与此相关的测试,然后再有一个更大的项目/解决方案来构建实际的引擎?举例来说event,我的引擎中装有模块;我该如何处理?

1
行为树代码示例?
http://altdevblogaday.org/2011/02/24/introduction-to-behavior-trees/ 显然,我在该网站上找到了最有趣的文章。你怎么看待这件事 ? 它缺少一些代码示例,您不知道吗?我还读到状态机与行为树相比不是很灵活……最重要的是,我不确定状态机与状态模式之间是否存在真正的联系……?
23 ai  state  tree  behavior 

2
正确实施“双跳”
我正在使用Corona开发2D iPhone游戏(试用版,所以我不能使用他们的论坛)。游戏涉及角色从天上掉下来,我正在尝试为角色实施“双跳”,以使他能够在跌倒时跳起来。我正在使用Corona的物理库来使角色掉落,到目前为止,让他跳跃的最佳方法是使用垂直脉冲法 object:applyLinearImpulse(0, -0.4, object.x, object.y) 我面临的问题是,当角色刚开始时(垂直速度低),他跳得很高;而当他摔倒了一段时间(垂直速度高)时,跳得可以忽略不计。我猜测最好的解决方案是使用某种方程式,将速度作为输入,以使跳跃与速度无关,但是我无法弄清楚该方程式是什么。 好的,这就是我的全部想法。最终的问题是,您如何精确地实现物理双跳?有没有适合我的问题的方程式?我应该采取其他方法吗?之前在Smash Bros等游戏中就已经做到了,所以有一个可重复的解决方案,对吧?
23 2d  physics 

2
动画融合基础
假设我有一个框架,其中包含可以奔跑和行走的角色,当然,请保持静止。 我是否认为动画混合是通过在运行时生成动态动画在这些动画之间平滑过渡的过程? 如果是这样,如何运作的基本理论是什么,我将如何实施?
23 c++  animation 

1
等轴测渲染和拾取?
我一直在寻找在菱形世界中绘制(世界->屏幕)和鼠标拾取(世界->屏幕)等距图块的公式。我尝试过的似乎总是不对劲。这样做的通常/正确方法是什么?



7
优化重力计算
我有一堆大小和速度各异的物体,它们相互吸引。每次更新时,我都必须遍历每个对象并合计由于每个其他对象的重力而产生的力。它的伸缩性不是很好,是我在游戏中发现的两个主要瓶颈之一,我不确定该如何提高性能。 这感觉就像我应该可以提高性能。在任何给定时间,系统中大约99%的对象对对象的影响都可以忽略不计。我当然不能按质量对物体进行排序,而只能考虑前10个最大的物体或某些物体,因为力随距离的变化比随质量的变化大(方程沿的线force = mass1 * mass2 / distance^2)。我认为,最好的办法是考虑最大的物体和最接近的物体,而忽略世界另一端可能无法影响任何事物的数百个微小的岩石碎片,但要找出哪些物体是最近我有遍历所有的对象,他们的立场正在发生变化不断,所以这不是我只能做一次。 目前我正在做这样的事情: private void UpdateBodies(List<GravitatingObject> bodies, GameTime gameTime) { for (int i = 0; i < bodies.Count; i++) { bodies[i].Update(i); } } //... public virtual void Update(int systemIndex) { for (int i = systemIndex + 1; i < system.MassiveBodies.Count; i++) { GravitatingObject body …


4
如何实现永不重启的测试世界?
我正在寻找有关如何执行以下操作的想法:我想用Java编写一个简单的“世界”。我可以先启动一个,然后在以后再添加新对象,以模拟/观察现有对象之间的不同行为。然后计划是在观看旧对象一段时间之后,对较新的对象进行编码,然后将其加载/放置到现有环境中。问题是,我不想在启动世界后就停止或重新启动它,我希望它运行几周,但我确实需要能够放入对象并重做/重写/删除/创建/更改它们的功能。随着时间的流逝,无需重启。这个世界可能像X / Y位置的100 x 100数组一样简单,并且可以使用平铺的图形用户界面直观地表示世界。我知道我需要某种滴答计时器流程来监视对象并为每个对象提供“行动的机会” 示例:我在星期一对World.java进行了编码,并使其运行。然后在星期二,我编写了一个名为Rock.java的新类(不会移动)。然后,我将它加载(或以某种方式放置)到这个已经运行的世界中(这只是将它随机放置在world数组中,并且永远不会移动)。然后在星期三,我创建一个名为Cat.java的新类,并将其放到世界中,再随机放置,但是这个新对象可以在世界范围内移动(在某个时间单位内),然后在星期四,我编写一个名为Dog的类。也可以四处移动的java,但如果它在邻居位置,则可以“作用于”另一个对象,反之亦然。 就是这个 我不知道我需要对实际的世界类进行编码才能知道如何检测/加载/跟踪未来(以及当前不存在)的对象。 关于如何使用Java进行此类操作的任何想法?

6
测试驱动开发在游戏开发中是否可行?
作为获得Scrum认证的人,我在开发系统时倾向于采用敏捷方法,甚至使用Scrum框架中的某些画布来管理我的日常工作。 此外,我想知道TDD是否可行? 如果我相信这个GD问题,那么TDD在游戏开发中没有多大用处。 为什么在游戏架构中不更多地使用MVC和TDD? 我来自工业编程,其中预算很大的大型项目需要完美无缺地工作,因为如果不对代码进行彻底的内部和外部测试,可能会导致灾难性的情况。 另外,遵循Scrum规则鼓励您在工作中按时完成工作,同时Scrum中的每个动作都必须按时完成!因此,我同意当他们在上面链接的问题中说停止尝试构建系统并开始编写游戏时。Scrum所说的就是这样,首先不要尝试构建完美的系统:在Sprint末期使它正常工作。然后,如果需要,在第二个Sprint中工作时重构代码! 我知道,如果不是所有负责游戏开发的部门都使用Scrum,那么Scrum变得毫无用处。但是,让我们考虑一下所有部门都使用Scrum的情况……我认为TDD可以编写无错误的代码,尽管您不想编写“完美”的系统/游戏。 所以我的问题是: TDD在游戏开发中是否可行?


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.