我可以使用function蠕变我的优势?

我可以使用function蠕变我的优势?

每次我制作一款游戏时,都会无意中添加function。 这种情况或者是巧合,或者是基于现有的内容容易添加。

如果我知道游戏的types,我可以开始制作基本的机制,并添加function,因为它们变得明显吗?

比如说,如果我想在6个月的时间里做一个2D的游戏,我可以开始做跑步,跳跃,射击等等,并且在我无意中发现它们时join核心力学? 或者,如果没有一个预先设定的计划,这样的投资风险太大了?

我的背后的逻辑是,devise将更加强大的降压。 deviseselect将更容易建立在易于制定(时间上)的基础上。

总而言之, devise游戏之前有什么不妥之处吗?

这是一个有趣的问题。 主要是因为回答它提高了灰色与黑色与白色的困境。

在我devise游戏之前有没有什么错误?

如果你把这个问题想成是或者不是,那么答案只能是:是的。 如果答案可以更细致,那么它就会改变。 原因:在devise之前,你永远不应该建立一个游戏。 但是你确定可以保存部分devise以备后用。

这意味着,我认为你不应该把这个问题看成是做还是不做。 相反,这是你应该考虑的程度。 在游戏开发方面,特征性的爬行也许是所有邪恶的第二个根源(第一,正如Donald Knuth所说的那样, “过早的优化是万恶之源” )。 然而,根据我的经验,没有考虑到任何主要特征,也就是说,至less没有基本的devise,你想要在哪里使用基本的机制,也不是一个好主意。

第一个主要原因是,在资源方面(包括时间作为一种资源)有一定的计划来引导你的低谷 – 因为过度的尝试和错误一直到达死胡同可以同样浪费资源必须包含不可预见的function。

第二个主要原因,游戏devise明智,是连贯性。 好的游戏devise具有概念上的一致性,或者一致性,如果你想。 这意味着,整个游戏,历史,实施,甚至是graphics,都应该尽可能顺利地相互适应。 如果主要function在旅途中被发现,那么游戏devise就不太可能达到这样的效果。 如果不是其他任何事情,因为在旅途中有很多的随机性:根据您在开发过程中什么时候find它们,您将要采取的措施可能会产生非常不同的影响。

我的意思不是说你不应该做你所说的话。 我只是声称你必须find一些平衡点。

比如说,如果我想在6个月的时间里做一个2D的游戏,我可以开始做跑步,跳跃,射击等等,并且在我无意中发现它们时join核心力学? 或者,如果没有一个预先设定的计划,这样的投资风险太大了?

我会首先在你的句子中稍加修改。 通过跑步,跳跃,射击等,你已经在实施核心力量。 在你的例子中,你将要添加的是特定的游戏function。

这并不是因为你知道游戏将会是一个2D平台,跑步,跳跃或射击不会因游戏devise而异。 你的播放器可以在墙上运行吗? 跳跃时,你的球员可以漂浮在空中吗? 甚至,你的播放器可以在运行时拍摄吗? 你的播放机只能以线性方向或通过抛物线进行拍摄吗? 这些决定可能非常依赖于游戏function。

但是我明白你的观点:这些机制往往有一些差异很小的部分。 所以,如果你做一些游戏devise,并决定基本的function,以确定如何运行,跳跃,拍摄等工作,这是一个开始。 然后,你可以去找这些机制,并继续建设他们。

当然,你以后可以find一个新的特性,要求你改变这些机制 – 不管它们有多么基本。 但这里的关键是概率。 如果你至less在跑步,射击,跳跃等方面考虑到了游戏的基本思路,那么这种情况发生的可能性会比较小。


最后,如果你想走这条路,我会建议如下。 把它看作一个迭代过程。 你做一些初步的,广泛的devise思维。 你实现了在游戏中看起来基本和更“普遍”的东西,因为它成功了。 然后你做一些更多的devise思考,重新评估你实施的东西,并进行更多的实施。

在做复杂的项目比如游戏时,你往往不能完成所有你想要的function,因为你没有时间/金钱,或者因为结果没有你想象的那么好。 这被称为特征蠕变。 但是有一个反面呢, 你也会发现你不认为你需要的function,但随着项目的成型,他们的需求变得明显。

这就是人们为什么要制作原型的原因 – 所以他们可以学习什么是有用的,什么不可以,所以他们可以削减不起作用的function,也可以find很棒的新function 。 如果你没有做那些你没有学习的东西,那么你做错了。

这基本上是Chris Hecker和Chaim Gingold在一个名为Advanced Prototyping的演讲中expression的观点,其中包括他们在Spore工作中的许多例子,在这些例子中,他们常常被什么工作和什么不工作所惊讶,就像重新devise整个基于原型反馈的系统。

另一个例子是Left 4 Dead的devise过程 。 起初游戏只有基本的僵尸,但是从经验丰富的玩家进行游戏testing,devise师发现玩家有效地拼在一起,游戏太容易了,所以他们增加了特殊的僵尸来打破团队,保持游戏精彩。

当然,这并不意味着你应该在没有任何devise的情况下构建你的游戏 。 在继续之前,你应该确保游戏的核心是有趣的,因为这通常是制作游戏中最难的部分。

我会说是的,去做吧。 但是提前计划一些共同的特征/类,以便在每个新的组件之间有一定的凝聚力。

Unity以游戏开发的组件方式而着称,并且将允许这种开发方式。 如果你不使用Unity,你可以复制一个半组件的方法。 我不熟悉其他游戏引擎。

Unity游戏对象都有一个转换组件。 这说明了对象的位置,旋转和缩放。 因此,制作一个通用的“转换”类来保存这些值,再加上对实际游戏对象的引用。

以“跳转”组件为例。 让所有的逻辑与游戏对象的变换类一起工作来操作位置。 (或者你的引擎已经有了类似的内置类。)你可以将这个'Jump'类附加到任何对象上,当一个动作被触发的时候,类将animation变换位置(Jump.PerformJump()或者其他)。 Jump类不必知道它的所有者(或者至less是最less的信息)。

现在,您可以创造出大量的组件,然后将它们附加到游戏对象,将它们结合到一个对象上,例如:Run,Jump,Crouch,MovingTile,FireWeapon(指定“bullet”精灵和行为一个通用组件)等

使每个组件尽可能通用,以允许多种用途/变体。 对于FireWeapon,你可以指定子弹精灵,速度,伤害等等。你可以尝试使这些属性标准化,使速度和伤害在0和1之间指定。然后将这些属性缩放到游戏的最大值。 这样你只会担心武器之间的相对差异。 此外,这适合于全球设置,如难度较高的难度有更高的最大损害,等等。

在你知道它之前,你有一个组件的武器插入,你现在可以快速开发任何游戏types。

简要说明:大多数情况下,在一个编码步骤之后,您不能有一个devise步骤。 你将不得不交替他们。 一般来说,尽量尊重已经devise好的东西(不是已经编好的东西)。

关于没有最初的devise(只是一个素描或心理图像):如果你没有一个devise,你没有一个devise。 你必须做一件事来一个。 但是只要你开始建立一个,试着去尊重它,不要每次都来一个新的。


做实验并获得随机function可能有害也可能不会有害。 这甚至可能是有益的或不可避免的。 例如:你知道你想支持跳转(许多3D / 2D RPG不允许跳转)。 你怎么知道? 因为你想象一个游戏地图需要跳跃sorting障碍? 所以跳跃的实现是足够好的,只要它让玩家sorting这个障碍,或者它必须符合某些特征,如最大可达高度,可以通过地图上的物品或游戏对象来提升,物理必须包括加速或反弹当马里奥跳入敌人时,他有冲动再次提升,这对于游戏来说非常重要)?

如果您已经可以回答这些问题,那么您的devise文档(虚构或真实)就非常完整。 如果你不能回答这些,那么你的devise是不完整的。 在这种情况下,你将不得不再次去devise或者做实验来填补空白。 机会可能是非常开放的或非常严格的。 如果你的一些游戏关卡有障碍,而你只需要跳跃,那么就有很大的自由来决定最大可达的高度或速度,也许你决定假装有一个物理引擎开始这一切改善跳跃animation的视觉效果,但不需要其他任何东西。 (在很多2D RPG游戏中,当你需要的时候,你不能跳跃,但是只要地图上有一个单独的地洞,尝试进入它就会自动触发跳转到地砖旁边的地砖)

我明白,只要你尊重已经决定好的东西,没有一个完整的devise就可以去编码。 另外,在某些情况下,游戏宇宙可能会从各种不同的思维过程中建立起来,这也是不可避免的。 例如一个纸牌游戏:我知道我想让这些纸牌具有攻击和防御,在给定的时间在表格中有一定数量的纸牌,并且玩家在轮到他/她时可以select哪张纸牌攻击哪张纸牌。 它可能看起来像一个已经完成的devise,但是它是游戏的平衡,只有通过许多模拟才有可能。 经过多次模拟,我决定使用Attack 10的卡牌已经过时了,我可以简单地将它从游戏中删除,但是我太喜欢它了,所以我会做一些不同的事情,我会创建一个新的规则,如果一个玩家用这样的攻击在这个回合中它不能用其他牌攻击。 现在我有了一个新的规则来丰富游戏机制,但是把它应用到一张看起来很奇怪的卡片上(像肮脏的黑客),我意识到它看起来很奇怪,然后我决定创建一个具有高数字的新卡片组,新的限制规则适用于他们。 现在我有了一个更复杂的游戏机制,建立在更简单的原始游戏机制之上,在我看来,我把它变成了我的优势,来制作更好的游戏。

现在,关于最后一个例子,在纸牌游戏的提议示例中,新卡可能导致新资产(成本增加,时间增加)。 但是,我认为这是一个很好的例子,让您只有在编码影响您的devise决策时才会看到的机会。

我不认为我们所玩的大部分游戏都是在编码之前完全devise的,我相信他们必须做出艰难的决定来遵守时间表等等。

当其他人支付这一切时:解释,谈判。

对于gamedev我相信function蠕变实际上可以很好地工作。 也就是说,有些情况是有帮助的,还有一些情况是在屁股上咬我的。 我会试图找出差异。

如果你想要一种游戏,我认为你必须保持你的视野不错,你必须把这个蠕变变成一种不会把产品范围扩大到无限的程度。 如果你能记得像一个玩家一样思考,并以有趣的名义来完成这一切,我想你可以成功。 要记住的最终的事情是,它只需要很有趣 – 它只需要有趣。 这是重复的一个念头,因为在发展中很容易忘记。

有时候,甚至可以让系统像devise师一样“产生”这些function,比如“嘿,这个系统对于做这件事真的很好,让我们来做吧! 而且我几乎认为这样做可以比“这个系统实际上不是那么好,但是我们还是需要这样做,因为它在devise规范中”是一个相反的极端。 在这两种极端的情况下,特性蠕变实际上是通过玩到有效和容易执行的方式来缩小范围,而devise规范则是通过玩到没有玩的东西来扩展它。

当然这里有一个平衡的行为。 当然,我不认为你甚至不知道你想做什么types的游戏。 如果你不能在平台游戏或者RPG游戏之间做出决定,反而会开始编写引擎,这将会是相反的结果。 所以,即使有点模糊,你也必须有一些非常具体的内容。

限制devise

另一件事是,我认为这是一种独立游戏,你不是想要获得最高的生产价值,而是一个可以被重复使用的引擎来制作任何types的游戏。 这是非常重要的,因为你必须自由地(ab)使用游戏有点“幻想”的事实…也许你的粒子系统是不是在物理上是准确的或任何东西,但它看起来有点酷,有自己的风格与你的魔法数字,这应该是我想要的游戏types。 相反,如果你希望你的粒子系统可以定制到第n级,并产生各种效果,这是一种非常不同的发展思维模式,不愿意接受严格的约束,我认为需要一个更具体的devise规范如果你想在任何合理的时间运送东西。

滥用“幻想”

这就像幻想艺术 – 你(ab)用一点点来摆脱这样的事实:一切都不必是超现实的,“正确与错误”的概念是模糊的。 同样的东西来限制游戏的范围 – 如果你是一个有趣的东西,让事情发挥出来没有被精确定义,广泛的指导,如“看起来很整洁,这很有趣“保持你的检查,以便你可以继续前进,而不是在一些东西上花费时间。 它只需要很有趣,它只需要很有趣 – 如果你能记住的话,就可以让你逃脱很多。

function蠕变缩小范围

通常在添加function时,有两种截然不同的devisepath。 有一个有助于限制你的deviseselect,closures一些门,更好地定义你的产品,并开始努力寻找解决scheme…就像一个作家杀死一个字符。 这些是我认为最适合蠕变的types,因为你潜入其中的每个特征实际上是减less和减less你的select,直到你实际上正在用完成的产品走向角落。 另一个就是把一个全新的中心人物引入情节,在这一点上,门开着,下一个决定可能出现,范围扩大,这些是危险的types。

我希望能够更详细地解释这两种特征的区别,但是它是如此的上下文相关,并且依赖于你个人的判断。 有些值得问的问题可能会是:“这个function是否将产品推向了更加明确的方向? 理想情况下,应该。 “这是打开门还是关上门? 理想情况下,它应该关上门,但至less不要打开它们。 “这是否增加了更多的工作或减less工作?” 理想情况下,它应该减less工作。 “这是否使游戏感觉更完整或不太完整? 这些东西。

执行与devise理念

这个意见可能有些不合适,但我坚信,执行比思想更重要。 我已经看到了能胜任开发的软件,因为开发人员发挥了他们不断发展的devise的优势,而且我也看到了完整的触发器,被指定为最复杂的细节,但执行失败。 那里有一个脱节,最精心devise的规范并不总是转化为一个同样伟大的执行……有些还取决于开发人员的能力。 我从来不是那种能够同样实施任何东西的types。 我特别擅长的部分原因是,当我开始的时候,我正在发挥自己的长处 – 我能做的很好。 另一个原因是我多年来开始做得不好,我开始想解决我的弱点。 我不想接受限制。 我想要一些可以做任何事情的引擎,那就是当特殊开发停止工作时,因为它不会将你推向成品的限制path – 它正在打开一个想要做一个整体的事情的模糊领域比它开始的还要多。

上瘾的从开始

这是我所遇到的另一个,可能是非常关键的。 我不认为你可以轻松地从无聊到有趣的蠕变。 如果你的演示感觉无目标和无聊,那么它不一定通过function蠕变find一个目标和乐趣。

如果你从一开始就有一些有趣和令人上瘾的东西,那肯定会使蠕变更容易。 “侠盗猎车手”(Grand Theft Auto)是我头顶最好的例子。 在那里,即使他们剥夺了所有的任务和辅助function,而且你还拥有一个单人模式,你可以偷车,超越警察,在抢劫武器的同时驾驶行人,这将提供无数的乐趣。 这几乎像所有的额外function,如直升机和任务和故事情节,能够制定出纹身等等,只是奖金。 所以,如果你能从一开始就达到这样的乐趣因素,那就更容易把你的方法变成成品了。

当你在这样一个基本forms中有一些有趣的东西的时候,你可以在某种程度上保持产品的范围变化。 GTA可以在没有纹身店的情况下发货,如果开发商时间不够,例如游戏不会受到太大的影响。 所以通过从一开始就捕获真正有趣的东西,就像产品从一开始就已经完成了一样。

也许一个演示是有用的,因为我认为你可以从演示实际上告诉游戏是否希望通过function蠕变成功完成。 如果说,经过几个月的发展,你可以放出一个让观众着迷的演示,让他们想要更多的内容,那么我认为你可以通过自己的方式走向成功。 相反,如果演示只是一个技术演示,并不是很有趣,似乎有点漫无目的,或者演示的风格和外观都是不相关的,那么我认为你不可能用自己的方式成功。 从一开始就必须非常紧密,因为这种紧密性可以作为您的指导,以确保整个devise保持完好无损,并且每个function都在此处蠕动。 如果它全部松散和脱节,那么你不一定能够有效地通过蠕变find一个紧密的方向。 严重的限制是即兴创作的关键,无论演员如何演出,都会朝着一个非常确定的方向发展。

不灵活的devise和约束

好吧,这可能是最疯狂的部分,但我认为僵化的devise在这种情况下是一件非常好的事情,也许还有一堆硬编码。 这违反了很多由团队维护的长期软件devise的SE原则,但那是由团队维护多年的长寿命,大规模的软件,十年后的10.0版本可能几乎不像1.0版本。

我假设这是一个游戏,其中的愿望是使它变得有趣,玩它testing,运送它,也许提供一些补丁,继续你的生活。 如果是这样,你想要大量的,那么不灵活的devise可以真正帮助。 如果你的系统有很长的列表,那么它会有帮助:一长串限制。

因为这些限制有助于提供一个方向相当统一的指南针。 如果你在devise之前没有明确的方向,那么我们通常需要从别的地方来,而不灵活和约束可以给你这个方向。 无限的自由在这里就是一件坏事,就像演员即兴创作一样。 这实际上严重限制了自由,让人们即兴发挥,实际上不是到处都是。

所以我不一定建议寻求不灵活的devise,但绝对避免寻求灵活的devise。 刚性在这里很好。 这里缺乏自由是很好的。 在这里很难改变是很好的,只要你走的每一步都是有趣的事情,而且你很早就捕捉到了什么乐趣。 硬编码,敌人的行为,不要设法使其无限可编写脚本。 做一个坚定的devise决策,并接受所有的限制,因为这些限制/约束是给这个产品一个非常坚定的方向。 只要确保它是有趣的,并保持这种方式。

这几乎就像你有多lessfunction蠕变是成正比,你有多less约束。 由于系统已经将您绘制在devise角落,因此您拥有的约束越多,自由就越less,因此您可以以一致的方向进行蠕变,从而使产品向前移动,而不是退后一步。

无论如何,这些是我对这个问题的奇怪想法,但是很久以前,我可以用一个游戏进行游戏并且运送得非常好,而之后有一段时间,我没有devise更多的前期就不能做到这一点,这些是一些关键的区别。 刚开始的时候,我不经意地面对各种各样的限制因素,因为我不是一个熟练的工程师(我甚至没有想过像embedded脚本引擎或devise级别的编辑器或创建插件架构),所以我受到很大的限制通过硬件(4色graphics,个人电脑音箱,很less的内存),我只是专注于想要制作一个我想玩的游戏,而且在我刚刚发布一个演示之后马上就立即吸引人们发展。 所以所有这些都是偶然的帮助我完成蠕变的方法。 当我开始失去所有这些限制时,我不再能够有效地做到这一点,向着256色的graphics,更多的内存,编写我自己的脚本语言,获得更灵活的代码库等。删除约束实际上伤害了我。 我需要更加有限,因为所有这些限制实际上给了我一个统一的方向感和一个我越来越自由时缺乏的一致性。 自由是我最终的敌人。 我需要通过严格的devise规范,技术限制,对自己施加的表面限制,严格的硬编码devise,或者类似的东西,将其大大地去除,以便做得更好。