Questions tagged «software-engineering»

软件工程是指应用于游戏开发领域的软件设计和开发。使用此标签的问题应与与创建或设计软件的任务有关的理论概念和实践有关。不应仅因为问题涉及编程或包含代码而使用此标记。


16
所有游戏程序员都应该知道什么数学?[关闭]
足够简单的问题:为了成功,所有游戏程序员都应该掌握什么数学? 我并不是在谈论在游戏编程的利基领域中渲染数学或任何东西,更具体地说,甚至是游戏程序员都应该知道的事情,如果他们不这样做,他们可能会发现它很有用。 注意:由于没有一个正确的答案,所以这个问题(及其答案)是社区Wiki。 另外,如果您想使用精美的乳胶数学方程式,请随时使用http://mathurl.com/。

9
在游戏开发中有用的编程设计模式有哪些?[关闭]
我有几本关于“设计模式”的书,并且阅读了一些文章,但是无法直观地指出哪种编程设计模式对游戏开发有用。 例如,我有一本名为《 ActionScript 3》(带有设计模式)的书,其中详细介绍了几种设计模式,例如“模型视图控制器”,“单例”,“工厂”,“命令”等。 作为对此不熟悉的人,我无法弄清楚其中哪一个有用,或者实际上,如果其中任何一个是我应该学习并尝试使用的设计模式。也许还有我什至不知道的其他针对游戏编程的设计模式? 如果您有在游戏开发中使用某种设计模式的经验,我很想听听。如果有理由说明使用它的原因,代码示例或在线资源也将非常有帮助。目前,我对ActionScript 3和C ++实现最感兴趣,但是一定可以从任何语言的经验和示例中受益。 谢谢!



6
子弹在视频游戏中如何工作?
我在用C#设计视频游戏时遇到了这个问题。 如果我们考虑《战地风云》或《使命召唤》之类的游戏,那么数百枚甚至数千枚子弹会同时飞行。事件是不断触发的,据我所知,这会吸收很多处理能力……或者是吗?我想知道各种游戏开发人员如何管理(2D和3D)项目符号,以及每种方法最有效的方法是什么。 我读了一个问题:如何在视频游戏中模拟子弹?但是从程序设计的角度来看,它没有涉及项目符号的工作方式。 我有几个主意,但每个都有缺点: 我想到的最有效的方法(用于2D游戏): 假设我要创建一个名为Bullet的类,并且用户长时间按住按钮,将每0.01秒创建一个Bullet对象。本项目符号有: 1速度 2从其拍摄的起始位置 3精灵纹理 4命中效果 由于项目符号是其自己的类,因此它可以管理绘图,移动和动作侦听器本身。 在处理器上处理成千上万的实例化实例然后销毁(触发击中效果时)会不会很困难?RAM空间? 3D游戏的有效方法-我的另一个想法是: 可以说我创建了一个武器类。该武器具有多种功能,其中一些功能: 1检测武器瞄准的位置,并确定它是否在瞄准目标 2触发枪声的动画 3有一个doDamage()方法,该方法指示从枪支指向的内容中减去生命值 4按下按钮时通知项目符号动画类 然后,我可以创建一个静态类,例如BulletAnimation,它可以从触发它的枪支所在的位置,该枪支指向的位置(用于子弹目的地)获取通知,以及有关用于子弹的适当精灵和速度的信息。然后,此类根据位置和所需的精灵绘制精灵(在新线程上,可能是idk),以模拟从枪支发射的子弹。 后者似乎更难编写代码,并且要不断地调用静态函数一次执行成千上万的子弹,是否需要大量处理能力?获取开始位置和结束位置的持续更新也很困难。 我的问题是,游戏创作者最有效的方法是什么?这种方法会从2D游戏变为3D游戏吗?

8
游戏引擎中事件驱动的通信:是或否?
我正在阅读《游戏编码完成》,作者建议游戏对象和模块之间进行事件驱动通信。 基本上,所有在场的游戏参与者都应通过内部事件消息传递系统与关键模块(物理,AI,游戏逻辑,游戏视图等)进行通信。这意味着必须设计一个高效的事件管理器。设计不良的系统会占用CPU周期,特别是影响移动平台。 这是一种行之有效的推荐方法吗?我应该如何决定是否使用它?

9
创建AI的新手-从哪里开始?[关闭]
我是游戏编程的新手,正在尝试制作一款基本的2d自上而下的太空游戏,其中包含2艘相互竞争的太空船。我在用户控制的太空飞船上做得很好,但不知道如何开始编写AI。某些方法/模式是否适合这种情况?我什至要从哪里开始?

2
如何在Super Metroid和Aquaria中获得墙边缘的纹理?
诸如《超级银河战士》和《水瓶座》之类的游戏展现了地形,其他朝向的部分则带有岩石和东西,而在它们的更深处(即地下),则存在不同的细节或仅仅是黑色。 我想使用多边形做类似的事情。地形在我当前的级别中创建为一组重叠的方形框。我不确定此渲染方法是否可以在创建地形的系统中正常工作,但是如果有人有想法,我想听听他们。否则,我想知道我应该如何重新编写terrain渲染系统,以便它实际上可以以这种方式绘制地形...

5
如何避免GameManager神物?
我刚刚阅读了有关构建游戏代码的问题的答案。这让我想知道普遍存在的GameManager类,以及它在生产环境中如何经常成为问题。让我描述一下。 首先,有原型。没有人会在乎编写出色的代码,我们只是尝试运行一些东西,以查看游戏玩法是否合计。 然后是一个绿灯,为了清理事物,有人写了一个GameManager。可能真的要抱一堆GameStates,也许要存储一些GameObjects,没什么大不了的。可爱的小经理。 在预生产的和平领域中,游戏的状态很好。编码人员有适当的睡眠时间,并且有很多想法可以使用出色的设计模式来构建事物。 然后开始生产,很快就会有紧要关头。均衡饮食早已一去不复返了,错误跟踪器正在解决问题,人们感到压力很大,游戏必须在昨天发布。 在那个时候,通常,这GameManager是一个很大的混乱(保持礼貌)。 原因很简单。毕竟,编写游戏时,嗯......所有的源代码实际上是在这里管理的游戏。只需在中已添加了GameManager所有其他内容的位置添加此额外功能或错误修正,就很容易了。当时间成为问题时,就无法编写单独的类,也不能将此巨型管理器拆分为子管理器。 当然,这是一个经典的反模式:上帝对象。这是一件坏事,要合并的痛苦,要维持的痛苦,要理解的痛苦,要转变的痛苦。 您有什么建议可以防止这种情况发生? 编辑 我知道怪罪命名。当然,创建一个GameManager类并不是一个好主意。但同样的事情可以发生在一个干净的GameApplication或者GameStateMachine或GameSystem那最终被管道胶带喜爱的一个项目的结束。不管命名如何,您都可以在游戏代码中的某个位置找到该类,但现在它只是一个雏形:您还不知道它将变成什么样的怪物。所以我不期待“怪罪命名”的答案。我想要一种防止这种情况发生的方法,一种编码架构和/或一个团队可以遵循的流程,因为他们知道这将在生产中的某个时刻发生。放弃一个月的错误修正和最新功能真是太糟糕了,因为所有这些现在都在一个庞大的无法维护的经理中。


6
什么时候是考虑性能的最佳时间?
我来自软件开发背景。在软件开发周期中,我们通常专注于功能和工作产品。在开发结束时,我们开始优化代码并提高性能。 现在的问题是,我们是否需要考虑游戏开发中每行代码的性能? 这样做我觉得我们错过了设计模式和简洁的代码。我想知道游戏开发行业是否有最佳实践方法?



5
游戏中的演员应该负责吸引自己吗?
我对游戏开发非常陌生,但对编程却不是。 我(再次)使用JavaScript的canvas元素在玩Pong类型的游戏。 我创建了一个Paddle具有以下属性的对象... width height x y colour 我也有一个Pong具有诸如...的属性的对象 width height backgroundColour draw()。 该draw()方法当前正在重置canvas,这就是出现问题的地方。 如果Paddle对象具有draw()负责其绘制的方法,或者draw()该Pong对象的负责负责其演员的绘制(我认为这是正确的术语,如果我不正确,请更正我)。 我发现在Paddle实例化两个对象Player和时,绘制自身会很有利Enemy。如果在没有Pong的draw(),我需要两次写类似的代码。 最佳做法是什么? 谢谢。

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.