如何在Google表格中编写角色扮演引擎

图片

使用电子表格作为开发玩具的环境的想法并不新鲜 。 在本文中,我将分享我在为真人角色扮演游戏和团队建设创建引擎方面的经验,这些引擎可以极大地促进游戏从业者的生活。

为什么有必要


假设您正在玩一个游戏,其中有50-60个人同时参加。 每个玩家都有一套个人参数(例如,经验,金钱,健康,声誉),这些参数根据他执行的动作而有所不同。 还有许多一般的游戏指标(例如,生态,国家的预算或政府评级),它们也根据玩家的行动和决定而波动。 某些游戏事件是由某种外部因素组合而发生的。

通常,这是相当密集的信息流,需要及时准确地计算。 在经典的角色扮演游戏中,此功能通常由游戏管理员执行。 但是船长并不容易出错,他仍然不会处理很多信息-既不在脑海中,也不会在纸上。

使用电子引擎,一个人可以处理任何数量的信息流。 同时,游戏统计信息可以显示在投影仪上,以便参与者可以实时观察他们的行为如何影响游戏布局。 或者,例如,您可以向每个针对智能手机的播放器显示秘密数据。 最重要的是-您可以免费使用此引擎!

大约一年前,由于受游戏习惯的熏陶,我设法为不同的团队建设游戏编写了7个引擎。 这些游戏大多数都具有商业上的成功,甚至有一个游戏在国外作为特许经营权出售。

现金流量


一切始于现金流量游戏。 朋友邀请我玩罗伯特·清崎著名的桌子,她真的吸引了我。 唯一让游戏烦恼的是需要不断地在列中进行计算,用橡皮擦擦除过时的数据并添加新的数据。 由于所有参与者都害怕犯错,因此始终专注于自己的计算,因此游戏失去了很多动力,并被延迟了许多小时。

我决定通过将所有成本转化为Google电子表格来优化游戏玩法。

图片

为了测试这个“计算器”,我为朋友们玩了几款游戏。 效果惊人! 玩家无需研究计算,而是积极参与游戏玩法,进行谈判并提出了复杂的财务计划和欺诈行为。 游戏本身的速度几乎提高了一倍。 当所有玩家都离开了比赛场地并达到目标时,我们首先设法将其结束。 为了进行比较,在“手动”版本中,参与者至少没有耐心地完成比赛,直到至少有人独自设法达到一个大圈子为止。

“疯了! -在其中一场比赛中我的朋友鲁本大叫。 -整个晚上,八名成年男子聚集在一起,用Google平板电脑盯着屏幕。 但这确实比任何电影都有趣!”

我在“现金流量”游戏中的计算板可从此处下载。 如果不清楚如何使用,请给我写信,我将发送详细说明。

僵尸,总统和刺客


不久之后,我遇到了美国游戏设计师Mike Young制作的内阁角色扮演游戏“ All The President's Zombies ”的脚本。 根据情节,该国发生了一场僵尸大屠杀,一群高级官员聚集在总统办公室,制定了解决这一问题的计划。

图片

我喜欢这个概念,因此决定创建自己的游戏,将Young的创作本地化。 结果是游戏“ 紧急会议 ”,与原始游戏相距甚远。 它基于活动中的事件树,该事件根据参与者在会议上做出的某些决定而实时发生。 我没有费心地教游戏大师,而是创建了一个Google表格,该表格可以自动计算玩家采取的每个动作的后果。 演示者只需在屏幕上打勾并从卡座上抽出卡片,卡片的数量就会显示在表格中。

图片

一定的困难是由于需要跟踪游戏参数的动态。 毕竟,当单元格值更改时,该表会立即重新计算与其关联的所有公式,而无需将旧值保存在任何地方。 我想出了解决这种复杂性的方法,但是我将在下面讨论。

在与朋友和熟人共度了数十次“紧急会议”之后,我意识到对于各种团队建设和公司故事,这是一种很有前途的形式。 仅限制了​​12人中最大参加人数的限制。 我开始想出一个大型团队可以玩的新游戏。 同时,仍然应该由一位领导者来管理游戏生态系统。 因此,有基于刺客信条系列的游戏《 Freaky Venice 》,针对超级大国在世界舞台上对抗的《世界统治》,关于诚实而不是非常政治化技术的《选举日》以及一些解决特定客户特定任务的游戏。

在开发每种游戏时,我遇到了一些困难,现在我将分析一些最有趣的示例。

问题-解决方案


任何游戏引擎的基础都是以下动作序列:1)收集有关玩家决策的信息,2)将这些信息输入系统,3)检查条件并由系统计算新数据,4)向玩家发布新数据。 根据游戏的情节,此循环可以重复一次,从有条件到无数次。 同时,在通过最终决定之前,玩家的所有交流都保持在“幕后”,而游戏系统则丝毫没有被考虑在内。 因此,一般而言,该过程不会产生计算机游戏的感觉,而为进行生动的情感交流留有空间。

循环仿真

在Google表中开发引擎的主要困难是程序员实体缺乏诸如变量,循环,中断,过程之类的熟悉。

假设可以将缺失的按钮替换为具有“复选框”值的单元格-在单独的单元格中,将有一个公式检查该复选框的状态并根据此公式计算目标单元格的值。 但是,整个表在时间上是静态的,并且当您更改一个变量单元格的值时,公式中引用该变量单元格的所有其他单元格的值都是立即且“无需求”的事实呢? 除了补偿使用制表符的例行程序和循环的不足之外,我没有什么更好的选择。 您只需在表中创建尽可能多的选项卡即可,游戏中有周期,每场游戏有多少次,理论上,一个变量可以更改其值。 然后,例如,选项卡2中的单元格将继承选项卡1中相同单元格的值,进行一些更改并将其值从选项卡3传递到同一单元格。 例如,查看游戏“世界统治”中的周期选项卡。

图片

根据情节,游戏总是在6年后结束,因此表中有6个带有游戏字段的标签。
例如,这里有一个公式,用于计算游戏第三年的国家预算,将第二年的初始预算与第二年的预算增长总和相加:

2019-05-12-17-27-39-Google-Docs-Google-Chrome

这里的E41是年初预算中的金额,X44是年度预算中的更改量。

或者,这是一个公式,可根据玩家所在院子所在的年份,在玩家平板电脑上的一个单元格中显示有关城市经济状况的数据。 根据“年计数器”单元格$ F $ 1的值,将显示同一E36单元格的值,但显示的是来自对应于特定年份的不同选项卡的值。

2019-05-12-17-28-08-Google-Docs-Google-Chrome

不幸的是,这种解决方案使得只能开发由某些周期(白天,白天,夜晚,月份,年份等)组成的回合制游戏。 此外,周期数应该是可见的,否则将花费大量时间编写代码。 但是,如果没有任务要告知玩家游戏参数的中间值并在此过程中跟踪其动态,那么使用选项卡循环根本就不会打扰。

角色分配

有时,在游戏开始之前,我想明智地分配角色,例如,最活跃的角色分配给更友善的玩家,而双重底的角色分配给那些能够虚张声势和抑制情绪的参与者。 在“紧急会议”游戏中,该任务也自动执行。 在游戏开始之前,参与者会收到Google表单格式的问卷调查链接,他们在其中回答有关游戏偏好的几个问题。

图片

这些数据落入表格中,基于这些数据的算法在玩家之间分配角色。

图片

玩家数据收集

如果有80个人,如何组织玩家的数据收集? 首先,为此目的使用Messenger似乎是个好主意。 每个球员(或每个队长)都有一个与主持人的直接聊天室,他可以在其中发送他的球队和命令,并通知他们做出的决定。 但是,测试游戏显示Messenger是个坏主意。 玩家开始大量注水,提出一系列问题,犯错误并取消先前发送的订单。 结果,处理速度降低,查询堆栈增加,并且玩家必须等待几分钟才能使订单生效。 此外,参与者将大部分游戏都花在了智能手机上,这并没有促进活跃的沟通和团队建设。

一个很好的决定是通过问卷和卡片从玩家那里收集数据。 例如,在“威尼斯瘟疫”中,整个游戏中的玩家将填满的卡片交给主机,例如“保罗·阿利吉耶里将杀手送往贾科莫·斯福尔扎”或“莱昂纳多·贝托鲁奇引诱卢克蒂亚·美第奇”,主机只需要检查对应名称和姓

图片

在“选举日”游戏中,高年级学生团队在每个游戏周期后都提交了这种格式的完整问卷。

图片

此类问卷中的数据将尽可能地精简,主持人将其驱入表格所需的时间不超过5秒。

图片

余额调整

在角色扮演游戏中,游戏平衡很重要:资源应始终供不应求,实现目标的各种工具几乎同样有效。 进行一系列的测试游戏,只能手动建立并且只能凭经验建立平衡。 为了避免发疯,在每个公式中以及在每个单元格中来回更改参数,一个非常方便的解决方案是单独的参考标签,其中显示所有自定义参数,表格其余部分的公式都引用了它们。 例如,使用该目录,您还可以通过选中一个复选框来更改游戏的语言。 这种功能在游戏“世界统治”中实现。

图片

将数据输入系统

为了防止游戏下垂,主机应能够尽快且符合人体工程学地将数据输入表中。 在Google表格中,您可以配置数据输入格式(数据验证)。 最快,最方便的格式是复选框。 是的,并非所有公式都可以使用TRUE和FALSE值。 因此,最好在某个相邻的技术单元中立即将复选框的值转换为零或一,然后对这些零和一进行任何所需的操作。

如果在一个单元格中假设两个以上的值,则下拉列表也是一种非常方便的输入格式。 列表中存在现成的选项,可防止演示者遭受拼写错误,而拼写错误在游戏中可能起关键作用。

这是“世界统治”中数据输入字段的示例。

图片

事件指示

协调员必须及时注意到游戏事件并做出响应,这一点很重要。 因此,在“紧急会议”中,您需要注意单元中的变化以及需要及时发给玩家的卡片数量。 在“世界统治”中,您需要及时通知玩家该城市遭受了核打击。 为了使演示者不会错过任何内容,您可以使用单元格条件格式设置(条件格式)的属性-例如,借助它的帮助,您可以进行设置,以便在出现“城市被破坏”文本时,单元格本身被涂成红色。 在演示者的视野中,将出现一个鲜亮的红色斑点,这是不容忽视的。

图片

个人信息

在游戏中,有些情况可能是某个团队知道某些数据而另一团队却不知道的。 例如,在游戏《世界统治》中,对有关特定国家/地区存在核武器的信息进行了分类。 在这种情况下,为每个命令使用单独的输出设备,并在主屏幕上仅显示公共可用信息是很方便的。 从技术上讲,这是作为一组单独的表(每个命令的文件)解决的,使用IMPORTRANGE函数只能从主表中提取必要的信息。

顺便说一句, Google表格可以将数据从表格导出到Web界面 ,因此,如果您愿意的话,播放器可以将平板电脑上的数据以精美布局和生动的信息图表的形式显示在平板电脑上,而不是干表。

整洁的图形

在游戏中,有时您希望显示图形而不是数字,但标准图形会因其冗余而烦人。 而且还因为他们不知道如何粘牢牢房,而且看起来总是很凌乱。 幸运的是,Google表具有SPARKLINE函数。 此功能在单元格内显示一个迷你图。 它具有某些设置,可用于某些数据的简洁可视化。

图片

游戏新闻

有时,不仅需要在单元格中显示编号,而且还必须以能胜任的建议书的形式来表达想法(例如,在“最新新闻”部分中)。 在这种情况下,可以使用CONCATENATE函数,该函数可以使用来自不同单元格的数字值粘贴文本片段。 使用此函数的公式如下所示。

2019-05-12-17-28-33-Google-Docs-Google-Chrome

总结

在“世界统治”和“威尼斯瘟疫”中,不仅是主要获胜者,而且在各种提名中脱颖而出的球队还将在比赛的决赛中宣布。 总而言之,使用MAX函数非常方便,该函数可计算范围内的最大数量。 主持人不需要执行任何其他操作-只需从屏幕上读取获胜球队的名称即可。

图片

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


All Articles