《统一与C#》一书。 Gamedev从构思到实施。 第二版

图片 嗨,habrozhiteli!

杰里米·吉布森·邦德(Jeremy Gibson Bond)构思了这本书,它设定了一个简单的目标:向您介绍所有工具,并传播为成功开发游戏和原型而必需的基本知识。 作者试图将最大的知识量压缩到这本书中。 与许多其他书籍不同的是,这本书结合了游戏设计和数字开发(即计算机编程)这两个学科,并通过迭代原型实践进行了包装。 诸如Unity之类的先进且相对易于使用的游戏引擎的出现,进一步简化了表达游戏设计概念的原型的创建,并增加了您成为合格的(且广受欢迎的)游戏设计师的机会。

全书分为四个部分
第一部分:设计游戏并在纸上制作原型


本书的第一部分开始于对各种游戏设计理论和游戏设计的分析基础的研究,正如一些早期书籍所建议的那样。 本节介绍分层四联体,这是一种组合和扩展这些早期理论的最佳功能的方法。 对于多层笔记本的研究已经引起了很多关注,因为它涉及作为交互交互设计者必须做出的许多决定。 本部分还包含有关游戏设计各个学科的有趣问题的信息。 描述纸上原型,测试和迭代的过程; 提供可以帮助您成为最佳设计师之一的特定信息; 提出了有效的项目和时间管理策略,以帮助确保遵守项目开发进度。

第二部分 数字样机


本书的第二部分讲授编程。 这部分是基于我多年的经验,教给非技术学生如何用数字代码表达游戏设计思想。 如果您没有开发或编程经验,那么这部分适合您。 但是,即使是那些有一定经验的人也可以仔细研究这部分,以熟悉新的技巧或刷新一些方法。 第二部分介绍C#-我们的编程语言-从最基本的知识到面向对象编程的类和技术的继承。

第三部分 游戏原型和范例


本书的第三部分包括几个示例,每个示例演示了开发某种类型游戏原型的过程。 本部分有两个目标:以我自己的原型制作方法为例,展示一些用于快速制作游戏原型的先进技术,并帮助您创建自己的游戏的基础。 许多有关Unity(我们的游戏开发环境)的书都使用了类似的方法,但引导读者浏览了数百页的单个整体示例。 相比之下,这本书显示了一些简短得多的示例。 这些示例的最终结果不可避免地不如其他书籍中的结果可靠,但是我坚信多样性将帮助您将来更好地为自己的项目做准备。

第四部分 应用领域


本书中有几个重要的应用值得一提。 为了不重复相同的信息并且不强迫您在不同的章节中进行搜索,将本书中反复提及的所有信息或在我看来似乎希望稍后再参考的信息(当您第一次阅读完本书时)都放置在其中。应用程序。 附录A提供了有关在Unity中创建游戏项目的简要分步介绍。 最长的应用程序是附录B,有用的想法。 尽管标题毫不客气,但我确信您是第一次阅读本书后最常使用此应用程序。 “有用的想法”是我本人在进行游戏原型制作时经常使用的先进技术和策略的集合,我认为在这里您将为自己找到很多有趣的东西。 第三个也是最后一个应用程序是Internet上的资源链接列表,您可以在其中找到本书未涵盖的问题的答案。 通常很难确定寻求帮助的正确位置; 该应用程序包含我自己最常使用的链接。

摘录。 使用Google表格来平衡武器


数学和程序(例如Google表格)在游戏设计中的另一个应用是平衡不同类型的武器和能力。 在本部分中,您将看到类似于Sega的Valkyria Chronicles的游戏的武器平衡过程。 在这个游戏中,每种武器都有三个重要特征:

  • 同时射击的数量。
  • 每次射击造成的损坏程度。
  • 在给定距离处击中每个发射子弹的目标的概率。

在平衡不同类型的武器时,通常目标是使它们的功率大致相等,但同时要具有鲜明的特征。 例如,某些武器可能具有以下鲜明特征:

  • 手枪:主要武器; 使您能够应付大多数情况,但不是最好的情况。
  • 步枪:是击中中长距离目标的不错选择。
  • gun弹枪:一种致命的短距离武器,但其威力随着距离的增加而迅速下降。 射速低,因此精确度非常重要。
  • 狙击步枪:近战极为糟糕的选择,但却是远程射击的绝妙武器。
  • 机关枪:射速很高,因此即使精度不高,也具有很高的致命力,因此尽管不是最强大的武器,但它似乎是最可靠的武器。

在图。 11.14显示了武器特征的价值,在我看来乍看之下是成功的。 ToHit(击中)的值是投掷六角形骰子时掉落的最小点数,这意味着以给定的距离击中目标。 例如,对于K7单元格中对应于7个单位距离的手枪,将指示数字4,即如果玩家以7个单位的距离射击,则认为如果4个或更多数字落在骰子上,他将击中目标。 这样有50%的命中机会(因为如果减去4、5或6点,则命中计数)。

图片

确定每个子弹的命中率


在“机会百分比”标题下的单元格中,我们需要计算在给定距离处击中从给定武器发射的每个目标的概率。 为此,请按照下列步骤操作。

1.在Google表格中创建一个新文档,然后输入所有数据,如图2所示。 11.14。 要更改单元格的背景色,请使用单元格格式化工具中的“单元格颜色”按钮(图11.2)。

根据单元格E3中的值判断,如果掷骰子时掉落2点或更多,则手枪的射击距离目标为1个单位。 这意味着仅当丢下1点,并且丢掉2、3、4、5或6点时,镜头才会射中目标。 因此,点击次数份额为5/6(或≈83%),现在我们需要一个公式来计算它。 根据确定概率的规则7,这对应于1/6的未命中概率(即ToHit中的数字减去1并除以6)。

2.选择单元格P3,然后输入公式=(E3-1)/ 6。 结果,单元格P3以1个单位的距离显示手枪未命中的可能性。 Sheets中的算术运算是根据数学规则执行的,因此,如果不将表达式E3-1括在括号中,则除法将在减法之前执行。

3.再次使用规则7。根据它,1-错过概率=失败的概率,因此将单元格P3中的公式替换为= 1-((E3-1)/ 6)。 现在数字0.8333333应该出现在其中。

4.要将单元格P3中的小数转换为百分比,请选择单元格P3,然后在数字格式工具栏中单击带有%符号的按钮,如图2所示。 11.2。 您还可以单击按钮右侧带有%符号(带有.0和向左箭头的符号)的按钮两次。 它将删除小数,并且只会在单元格中显示83%,而不是更准确但令人困惑的%83.33。 在这种情况下,只有显示的值会改变-实际数字将保持不变-单元格将保留精度以进行进一步的计算。

5.复制单元格P3中的公式并将其粘贴到所有单元格P3:Y7中。 您会看到所有计算均已成功完成,但ToHit部分中的空白单元格除外,命中百分比为117%! 更改公式,使其忽略空单元格。

再次选择单元格P3,并用= IF(E3 =“”,“”,1-((E3-1)/ 6))替换公式。 Sheets中的IF函数具有三个参数,以逗号分隔。

  • E3 =“”:参数1-条件:单元格E3的内容是否等于空值“”? (即E3是空单元格吗?)
  • “”:参数2-如果第一个参数中的条件为true,则在单元格中放置什么。 即,如果E3是空单元格,则清除单元格P3。
  • 1-((E3-1)/ 6):参数3-如果第一个参数中的条件为false,则应在单元格中添加什么。 即,如果E3不是一个空单元格,则使用此公式。

7.从单元格P3中复制新公式并将其粘贴到单元格P3:Y7中。 现在,“命中率”部分中的空单元格将与“百分比机会”部分中的空单元格相对应。 (例如,L5:N5是空单元格,因此相应的W5:Y5单元格也将是空的。)

8.接下来,在此图表中添加一些颜色。 选择单元格P3:Y7。 从工作表菜单中,选择格式>条件格式。 新的条件格式规则面板将出现在窗口的右侧。 条件格式允许您根据单元格的内容确定单元格的显示格式。

9.单击“条件格式规则”面板顶部的“色阶”选项卡。

10.在“色阶”选项卡的“预览”部分,您将在绿色渐变图像中看到“默认”一词。 单击默认一词,然后在中间选择以下选项:绿色到黄色到红色(从绿色到红色到黄色)。

11.单击“完成”按钮,“机会百分比”部分将采用如图所示的形式。 11.15。
图片

平均损害计算


平衡过程的下一步是确定每种武器在一定距离内造成的平均损坏。 由于某些类型的武器会同时发射多发子弹,而每发子弹会造成一定的伤害,因此平均伤害等于每发子弹的伤害的发子数与每发子弹命中的概率的乘积:

1.选择O:Z列并进行复制(在PC上按Command-C或Ctrl + C或选择菜单项“编辑”>“复制”(“编辑”>“复制”))。

2.选择单元格Z1并粘贴(在PC上按Command-V,Ctrl + V或选择菜单项“编辑”>“粘贴”(“编辑”>“粘贴”))。 结果,将向表中添加其他AA:AK列,并用新复制的列中的数据填充。

3.在AA1单元格中输入文本平均损坏。

4.选择AA3单元格,然后在其中输入公式= IF(P3 =“”,“”,$ B3 * $ C3 * P3)。 像在单元格P3的公式中一样,IF函数可确保仅对非空单元格执行计算。 该公式包括对$ B列和$ C列的绝对引用,因为B列存储了射击次数,C列则不管与敌人的距离如何,一次射击所造成的伤害。 在这种情况下,在复制过程中只应移动行号,而不要移动列号(因此,仅列由绝对链接描述)。

5.选择单元格AA3,然后单击区域中最右边的按钮
数字格式说明(带有铭文123)。 选择号码
打开的菜单中的(数字)。

6.复制AA3单元格并将其粘贴到AA3:AJ7单元格中。 现在,它们将显示确切的值,但条件格式仍与“百分比机会”部分相关,因为大于1的数字会在“百分比机会”部分中的0%到100%范围内以绿色显示背景。

7.选择单元格AA3:AJ7。 如果条件格式规则面板
格式)不再显示,请从主菜单中选择格式>条件格式(格式>条件格式...)以重新打开它。

8.对于选定的AA3:AJ7单元,您应该在“条件格式规则”面板中看到一个规则,该规则的名称为“色阶(Gradient)”,并带有指向其下方的单元格P3:Y7,AA3:AJ7的链接。 单击此规则。

9.在打开的设置的“应用于范围”部分中,仅保留P3:Y7,然后单击“完成”按钮。 因此,将恢复“百分比机会”部分的先前设计。

10.再次选择单元格A3:AJ7。 在“条件格式规则”面板中,单击“添加新规则”按钮。

11.与以前一样,在“色阶”选项卡上的“预览”字段中,选择选项绿色到黄色到红色(从绿色到红色到黄色)。 然后单击完成按钮。

因此,不同的格式设置规则将应用于“机会百分比”和“平均损害”部分。 分隔不同区域的规则可确保它们分开应用,这很重要,因为不同部分中数字的范围彼此之间太不同了。 现在,“平均损坏”部分应该类似于图1所示。 11.15。

显示平均损坏图


接下来的重要步骤是绘制平均损伤图。 尽管仔细研究数字已经可以得出一些结论,但是Sheets支持的图形将简化这项工作并帮助您直观地评估正在发生的事情。 为此,请按照下列步骤操作。

1.选择单元格A2:A7。

2.滚动页面,以便可以看到“平均损坏”部分。 在仍然选择A2:A7单元的情况下,按住Command键(或在PC上为Ctrl),在单元格AA2上单击鼠标左键,同时按住键和鼠标按钮,将指针移至单元格AJ7以选择区域AA2:AJ7。 现在,您应该选择两个区域:A2:A7和AA2:AJ7。

3.单击图表按钮(请参见图11.2)以打开图表编辑器。

4.单击“图表类型”下拉列表(显示文本“柱形图”的图表类型,请参见图11.6A),然后在“线”部分中选择最左侧的类型-这是左上角象形图与蓝色和红色的虚线。

5.在“数据”选项卡的底部,选中“切换行/列”复选框。

6.选中将A列用作标题复选框。 还要确保选中“将第2行用作标签”复选框。

7.单击“图表编辑器”面板上的关闭按钮以完成图表的创建。

结果,您将获得如图2所示的图表。 11.16。 如您所见,使用武器并非一切都是顺利的。 正如我们希望的那样,某些物种,例如狙击步枪和Shot弹枪,都具有鲜明的特征(the弹枪在近距离具有强大的破坏力,而狙击手
图片

步枪更适合长距离击中目标),但显然存在以下问题:

  • 机枪(机枪)非常脆弱。
  • 手枪(Pistol)可能力量过大。
  • 在其他类型武器的背景下,步枪(步枪)的力量也太强大了。

简而言之,不同类型的武器之间的平衡性很差。

武器参数重复


在平衡武器的过程中,平衡之前和之后的信息非常方便:

1.首先,将图表向下移动到第16行下方。

2.在图表中双击,然后将打开“图表编辑器”面板。 选择面板上部的CUSTOMIZE选项卡(图11.6D)。 打开“图表轴和标题”部分(图和轴名称,图11.6E),然后在“标题”字段中输入原始文本(图11.6F的原始余额)。

3.现在,您需要复制已经添加的数据和公式。 选择单元格A1:AK8并复制它们。

4.单击单元格A9,然后粘贴。 结果,将出现新的单元格A9:AK16-所有先前创建的数据的完整副本。

5.用重新平衡替换单元格A10中的文本。 在这个集合中,我们将进行更改并尝试新的值。

6.要基于与显示源数据的新数据相同的新数据创建图表,请完全按照在“步骤1”和“步骤2”中选择的单元格A2:A7,AA2:AJ7一样选择单元格范围A10:A15,AA10:AJ15。显示平均损伤图。” 按照该部分中的说明进行操作,并创建另一个显示平衡值的图表。

7.将新图表放置在上一个图表的右侧,这样您就可以看到两个图表及其上方的数据。

8.用重新平衡(平衡后)替换新图表的名称。

总损坏显示


再添加一个统计数据,这对查看总损失也很有用。 这是武器在所有范围内造成的平均伤害的总和,这将使您了解武器的总功率。 为此,您可以使用该技巧,我经常使用该技巧在电子表格的单元格内创建简单的直方图(即,不作为单独的图)。 结果如图2所示。 11.17。

1.右键单击列标题AK,然后从出现的菜单中选择“插入1”。

2.右键单击B列的标题,然后选择“复制”。 结果,整个列B将被复制到剪贴板。

3.右键单击AL列标题,然后选择“粘贴”。 结果,列B的内容(包括背景和字体)将插入到AL列中。

4.右键单击AL列标题,然后选择“向右插入1”。

5.在单元格AL1和AL9中,输入文本“总体损坏”。

6.选择单元格AL3,然后输入公式= SUM(AA3:AJ3)。 它计算枪在所有范围内的平均伤害(应等于45.33)。

7.要执行直方图技巧,您需要将此实数转换为整数,即SUM函数的结果需要四舍五入。 将AL3中的公式替换为:= ROUND(SUM(AA3:AJ3))。 现在,该单元格应显示数字45.00。 要删除多余的零,请选择单元格AL3,然后像以前一样单击按钮以删除小数(数字格式化工具中的第三个按钮)。

8.选择单元格AM3,然后输入公式= REPT(“ |”,AL3)。 REPT函数将第一个参数中的文本在第二个参数中重复指定的次数。 在这种情况下,文字是竖线符号(要输入文字,您需要按Shift键,并按住它,同时按下大多数键盘上Return / Enter键上方的反斜杠键(\)),它将重复45次,因为单元格AL3的值为45。一小列显示在单元格AM3中,向右延伸。 双击AM列标题的右边框以将其展开为所需的宽度。

9.选择单元格AL3:AM3并复制它们。 将剪贴板的内容粘贴到单元格AL3:AM7和AL11:AM15中。 现在,您将在眼前看到一个文字直方图,其中显示了所有类型的武器(原始武器和平衡武器)的总伤害。 最后,再次调整AM列的宽度以查看所有垂直条字符。

武器平衡


, . ? — , ? .

  • 6 , , 6 .
  • Valkyria Chronicles, , . 6 , 5 , .
  • (, ) , (, ) . 在图。 11.7 , , , .
  • , , , , , .

尝试自己平衡这些武器参数,仅更改单元格B11:N15中的值。请勿触摸初始参数,也不要在“机会百分比”(概率百分比)和“平均损害”(“平均损害”)部分中进行任何更改;两者都将自动更新,例如重新平衡图表(平衡后),并反映您在Shots,D / Shot和ToHit单元中所做的更改。玩完数字后,继续阅读。

平衡值的一个例子


在图。11.17您会看到我为设计的原型挑选的武器的参数。当然,这不是平衡武器的唯一方法,甚至不是最好的方法,但它可以实现许多设计目标。

  • 每种武器都有其独特的特征,而且都不是强大或不足的。
  • , (Shotgun) (Machine gun), : 1) 6- ; 2) , .
  • , .

图片

  • (Rifle) - .
  • (Sniper rifle) , . 6 , .

, , . , , , ( ) .


我们将讨论的游戏平衡支持的最后关键要素之一是正面和负面反馈的概念。在具有积极反馈的游戏中,从一开始就处于领先地位的玩家将获得额外的优势,并有可能获胜。在负面反馈的游戏中,失败的玩家会获得优势。

— . , , , ( -). , , , . Monopoly, , , , , . — , , , ( Monopoly , ). , — .

Mario Kart — , , . ( , ), ( ). , , , . , , , , , .

总结


, , , , . , , , , .

»这本书的更多信息可以在出版商的网站上找到
» 目录
» 摘录

20% — Unity

支付纸质版本的书后,将通过电子邮件发送该书的电子版本。

Source: https://habr.com/ru/post/zh-CN447382/


All Articles