我可以利用特征蠕变来发挥自己的优势吗?[关闭]


16

我可以利用特征蠕变来发挥自己的优势吗?

每次我制作游戏原型时,都会无意中添加功能。这是通过巧合发生的,或者是根据现有内容添加起来很容易的。

如果我知道游戏的类型,我是否可以开始制作基本机制并添加功能,使其变得明显?

例如,如果我想在6个月的时间内制作2D平台游戏,我是否可以开始进行跑步,跳跃,射击等工作,并在无意中找到它们时添加核心机制?或者,如果没有预先确定的计划,这是否会浪费时间进行投资?

我这样做的逻辑是,设计将物有所值。设计选择将更容易围绕易于制作的内容(按时间)构建。

总而言之,设计游戏之前,构建游戏有什么问题吗?


5
临时游戏设计没有错。随手编写代码。为我工作非常成功。毕竟,普通的最终消费者只是想玩一些有趣的事情,而如何交付最终产品的故事在每个开发人员之间都有所不同。试试吧,去吧。纸上的想法很棒,但是使您的游戏正常工作的真实文本在代码中。如果您有一个有趣的主意,请将其编码。如果有趣,请保留它。如果很烂,请将其取出。使用您的代码和类结构作为居住设计文档。随便更改它。
克里斯·麦克法兰

3
首先不要制作原型。原型通常被丢弃,因为它们被制造为“只是为了测试某些东西”-垃圾。因此,一开始就构建可靠的东西,并使其灵活。
Vaillancourt

您基本上在说的是“ 迭代设计 ”-“一种基于对产品或过程进行原型设计,测试,分析和完善的循环过程的设计方法。基于对设计的最新迭代的测试结果,更改并进行改进。”
蒂姆·霍尔特

Answers:


17

这是一个有趣的问题。主要是因为回答它会引起灰色与黑色与白色的对比。

在设计游戏之前,制作游戏有什么问题吗?

如果您认为该问题为是或否,答案只能是:是的。如果答案可以更微妙,那就改变了。原因:在进行某些设计之前,您绝对不应该制作游戏。但是您可以确定可以保存设计的某些部分以供以后使用。

这意味着,我认为您不应该将这个问题看作是做与不做。相反,这是您应该从学位角度考虑的东西。在游戏开发方面,功能蔓延也许是万恶之源的第二个根源(首先,正如唐纳德·克努斯(Donald Knuth)认为的那样,“过早的优化是万恶之源”)。但是,以我的经验来看,不考虑任何主要功能,即至少不了解您想要使用的基本原理的基本设计,也不是一个好主意。

第一个主要原因是在资源方面(包括将时间作为一种资源)进行一些计划以指导您的工作是有帮助的-因为由于反复尝试和错误而始终达到死胡同可能浪费时间。资源,因为必须包含不可预见的功能。

在游戏设计方面,第二个主要原因是连贯性。良好的游戏设计具有概念上的连贯性,或者如果需要的话可以保持一致性。这意味着整个游戏过程,历史记录,实现方式,甚至是图形,都应尽可能平滑地相互配合。如果仅在旅途中发现主要功能,那么游戏设计就不可能实现类似的目标。如果不做其他事情,因为在旅途中会有很多随机性:根据开发过程中何时找到它们,您将要踩到的东西可能会产生非常不同的影响。

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

例如,如果我想在6个月的时间内制作2D平台游戏,我是否可以开始进行跑步,跳跃,射击等工作,并在无意中找到它们时添加核心机制?或者,如果没有预先确定的计划,这是否会浪费时间进行投资?

首先,对您的句子进行一些修改。通过奔跑,跳跃,射击等,您已经在实现核心机制。您将在示例中不断添加的是特定的游戏功能。

并不是因为您知道游戏将是2D平台,所以跑步,跳跃或射击不会因游戏设计而异。您的播放器可以在墙上跑吗?跳跃时玩家可以漂浮在空中吗?甚至,您的播放器可以在跑步时射击吗?您的播放器仅沿线性方向还是通过抛物线射击?这些决定很大程度上取决于游戏功能。

但是,我明白你的意思:这些机制的某些部分通常变化很小。因此,如果您进行一些游戏设计并决定基本功能,同时又能一定程度地确定跑步,跳跃,射击等如何工作,那就是一个开始。然后,您可以寻求这些机制,并继续在此基础上继续发展。

当然,您以后仍然可以找到一项新功能,该功能需要您更改这些机制-不管它们多么基础。但是这里的关键是概率。如果您至少对奔跑,射击,跳跃等游戏基本概念的后果进行了一些思考,那么发生这种情况的可能性就会较小。


最后,如果您想走那条路线,我建议以下几点。将其视为一个迭代过程。您需要进行一些初步的,广泛的设计思考。您可以在游戏中实现看似基本且更为“通用”的内容,以使其成功。然后,您需要进行更多的设计思考,重新评估实现的内容,然后再进行其他实现。


4

在进行诸如游戏之类的复杂项目时,您通常无法提供所需的所有功能,这是因为您的时间/金钱用完了,或者因为它们没有达到预期的效果。这称为特征蠕变。但是这有一个缺点。您还将找到您认为不需要的功能,但是随着项目的形成,他们的需求变得显而易见。

这就是人们构建原型的原因 -他们可以了解什么有效,什么无效,从而可以删除无效的功能,还可以找到很棒的新功能。如果您没有做任何未学的事情,那么您做错了。

基本上,这就是Chris Hecker和Chaim Gingold 在名为Advanced Prototyping的演讲中表达的情感,其中包括他们在Spore上所做的许多示例,在这些示例中,他们常常为成功和失败而感到惊讶,甚至重新设计了整个产品。基于原型反馈的系统。

另一个例子是《Left 4 Dead》设计过程;最初,游戏只有基本的僵尸,但是通过与经验丰富的玩家进行游戏测试,设计师发现玩家可以有效地团结在一起,并且游戏太简单了,因此他们添加了特殊的僵尸来使团队与众不同,并使游戏保持兴奋。

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


2
一个著名的例子是Crash Course,这是由Psyonix在2007年制作的一款带有武器的汽车战斗游戏。有人尝试投进一个球和两个球,然后他们扔掉了所有武器和整个游戏的其余部分,以制作2008年的Supersonic杂技火箭动力战车。当他们将其更新为新硬件时,这成为了2015年的热门火箭联盟。前往有趣的地方。
Almo 2015年

2

我会说是的,继续努力。但是,请提前计划一些通用功能/类,以使每个新组件之间具有一定的凝聚力。

Unity以其游戏开发的组件方法而闻名,并且可以轻松地进行这种形式的开发。如果您不使用Unity,则可以复制半组件方法。我不熟悉其他游戏引擎。

Unity游戏对象都具有转换组件。这说明了对象的位置,旋转和比例。因此,使一个通用的“ transform”类保存这些值,并可能引用实际的游戏对象。

以“跳转”组件为例。让所有逻辑与游戏对象的转换类一起进行位置操纵。(或者您的引擎已经具有类似的内置类。)您可以将此'Jump'类附加到任何对象,并且该类将在触发动作(Jump.PerformJump()或其他任何东西)时为转换位置设置动画。Jump类不必了解有关其所有者的任何信息(或至少了解最少的信息)。

现在,您可以创建很多组件,然后将它们附加到游戏对象上,然后将它们组合到一个对象上,这样就很有趣。例如:Run,Jump,Crouch,MovingTile,FireWeapon(指定“子弹”精灵和要进行的行为)通用组件)等。

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

在不知不觉中,您已经拥有大量要插入的组件,并且现在可以针对任何游戏类型快速开发。


1

简介:大多数情况下,您不能只有一个设计步骤,也不能只有一个编码步骤。您将不得不替换它们。通常,请尝试尊重已设计的内容(而不是已编码的内容)。

关于没有初始设计(只是草图或心理图):如果您没有设计,那么您就没有设计。您必须做一些附带的事情。但是,只要您开始构建一个,就尝试尊重它,不要每次都附带一个新的。


做实验并获得随机特征可能有害也可能有害。这甚至可能是有益的或不可避免的。例如:您知道要支持跳跃(许多3D / 2D RPG不允许跳跃)。你怎么知道?因为您想象过一个游戏地图需要跳跃才能解决障碍?因此,只要能让玩家对障碍物进行分类或必须遵守某些特性(例如最大可到达高度),跳跃实现就已经足够好了,可以由地图中的物品或游戏对象来推动,物理上必须包括加速度或反弹(当马里奥跳入敌人时,他获得了再次提升的冲动,这对游戏非常重要)?

如果您已经可以回答这些问题,那么您的设计文档(虚构的或真实的)就非常完整。如果您不能回答这些问题,那么您的设计是不完整的。在这种情况下,您将不得不再次进行设计工作或进行实验以填补空白。机会可能是非常开放的,也可能是非常有限的。如果您的某些游戏关卡会有障碍,而您只需要跳跃就可以了,那么您可以自由决定最大可到达的高度或速度,也许您决定假装有一个物理引擎开始这一切,改善跳跃动画的视觉效果,但您不需要其他任何东西。(在许多2D RPG游戏中,您无法随意跳跃,但是只要地图上只有一个瓷砖洞,尝试进入地图洞会自动触发跳至该洞瓷砖旁边的地砖)

我了解只要您尊重已决定的内容,也可以在没有完整设计的情况下进行编码。同样,在某些情况下这可能是不可避免的,因为游戏世界可能是由各种不同的思维过程构成的。例如一个纸牌游戏:我知道我希望这些纸牌具有攻击和防御,在给定时间桌上有一定数量的纸牌,并且玩家在回合时可以选择用哪张纸牌攻击哪张其他纸牌。对某些人来说,它可能看起来已经是完整的设计,但是随后,只有通过许多模拟才能实现游戏的平衡。经过多次模拟,我认为攻击力为10的卡已被压倒,我可以简单地将其从游戏中删除,但是我太喜欢它了,所以我会做一些不同的事情,我将创建一条新规则,规定如果玩家使用此类卡牌进行攻击,则在该回合中不能使用其他卡牌进行攻击。现在,我有了一条新规则,可以丰富游戏机制,但是将其应用于看起来很奇怪的单张卡片(就像肮脏的hack),我意识到这看起来很奇怪,然后我决定创建一组新的卡片,这些卡片数量很高,但是新的限制规则适用于他们。现在,我有一个更复杂的游戏机制,建立在更简单的原始游戏机制之上,我认为,我将自己的优势变成了制作更好的游戏。

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

我认为我们玩的大多数游戏不是在编写代码之前就经过充分设计的,我相信他们必须做出艰难的决定才能遵守时间表等等。

当其他人为此付出代价时:进行解释,谈判。

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.