这是Don Hopkins与Maxis和Electronic Arts的Will Wright为《模拟人生》开发的饼图菜单,建筑编辑工具和Edith可视化编程工具的演示。

这是《模拟人生》,我在Maxis协助开发的一款游戏,它使用饼图菜单来控制房屋中人们的行为。
调试工具

(将弹出错误对话框。)
哇! (读取错误消息:) Debug断言:在门户中错误地调用门户树。 请无视。 嗯反正
这是开发版本,具有用于编辑角色的Edith工具。 我会在稍后显示。 但首先:
馅饼菜单

当您单击某个对象时,它将弹出一个饼形菜单,其中显示了您可以执行的选项。 我已经指挥过这个角色:进入热水浴缸。

因此,如果我单击她的右按钮,那么我将控制她。 现在我可以单击位置,我可以告诉她去这里。 她将停止正在做的事情,然后转到这里。 现在,我可以单击热水浴缸,告诉她加入,进入热水浴缸。

哦,一个邻居刚过来,所以我要单击该邻居,然后看到“问候”。 所以,好吧,我必须走出热水浴缸,因为……哦,快点。 无论如何。

动态饼图菜单

关键是:弹出饼状菜单,并为您提供可以动态更改的操作列表。 当项目不总是更改时,饼图菜单特别好。
饼图菜单动态更改以促进社交互动
但这就是游戏的设计,当您与某人的社交互动发生变化时,菜单上的项目可能会有所不同。

他们只是互相打招呼。 由于他们刚刚见面,所以当我单击这个新人时,我们可以要求她离开,也可以补充她。
发展关系
这将与她建立关系。 当我与某人变得更友好时,我将能够做更多的事情。

所以鲍勃在这里,她很友善。 因此,当您单击他时,您将获得一个菜单,其中包含很多要做的事情。 而这将根据心情而改变。

接吻和坠入爱河

这里有一点隐私。 我要接吻。 好,是的 好,那很好。 哦。 哦! 现在他们是恋人! 所以最好不要现在就在她面前亲吻对方。

四处走走,指着人

哦,这是一件整洁的小东西。 当有人走路时,您可以指向它们,并使其减速,这样您就有机会抓住它们,因为否则它们会以太快的速度耗尽您的光标。
为了进行社交互动,您需要在有人走路时弹出菜单。 这有点像弹球机的倾斜:它使您所指的不幸人物的速度降低了一点,使他们停留在光标下的时间更长,并且您可以在其上弹出菜单。
编辑工具
因此,无论如何,游戏的编辑器:用户拥有用于建筑,放置对象和更改地形的编辑工具。 但是,开发人员可以使用更高级的工具向游戏添加新对象。
对象放置,建筑和装饰

这些内置于游戏中的易于使用的工具,可让您拾起物体,四处移动,扔掉它们,购买更多物体,然后放置墙壁。 不允许在某些地方放置墙。

然后在其中放一个窗口。 然后贴墙纸。

网格化

这些必须非常易于使用。 因此,它具有一种矮胖的感觉,就像是一个乐高玩具一样的网格,可以将物体卡入到位。 与完全自由的3D图形编辑器相比,这使孩子们更容易使用。
放置和定向对象

因此,当您拾取物体时,可以放置它。 然后,在放置它时,可以通过诸如手势之类的饼形菜单对它进行定向。 假设我有一把椅子,当我放下椅子时,按下按钮,现在我握住旋转工具。 当我转身时它将旋转。 我可以拾起并移动它,也可以在放置时将其旋转。 这真的很方便。

放置和定向连续对象

例如,如果我有一个饭桌,我想在它周围放一些便宜的椅子:我必须向下压并朝桌子移动以调整椅子的方向,现在下一个椅子将以相同的方式定位。

现在,我将按下并重新定位,然后将下一个放下。 然后按下,再次调整方向,然后放下一个。 按下,确定方向,然后按最后一个椅子。

因此,可以轻松地完成这种出色的快速手势样式。
音乐椅
让我们看看:我可以全部移动它们。

我们将要演奏音乐椅子,所以我们可能希望所有椅子都这样重新排列。 放下时,只需拖动您要面对的方向即可。 这是音乐椅场景。 要摆脱那个布什。 您知道,您可以按一下某个东西,然后像这样拖动它来定向它。

多图块对象

现在,多图块对象有点笨拙,因为它们围绕图块旋转。 但是它会变成红色,并告诉您当它处于不良位置时不能将其放置在此处。
单击并滑动有效和无效的位置

因此,这是一件整洁的事情:看看放置在合适位置时它如何卡入到位? 但是当它在一个坏地方时,它会滑动。 你没有那么粘。 但是当您进入一个好地方时,它会在其中单击。

因此,当您介于两者之间时,会有一种滑溜的感觉,您可以通过移动自己来判断自己不在有效的位置,这似乎可以告诉您。 但是随后您得到了很好的分块。 这往往使灵活性较低的人更容易使用。

下载插件对象

该游戏能够下载新对象并在运行时安装它们,然后将其插入并与游戏中已有的所有其他对象进行交互。
用户创建的对象
用户还可以通过克隆已经存在的游戏对象并使用称为Transmogrifier的程序更改图形和描述来创建自己的对象。
角色皮肤

另外,您可以绘制角色的皮肤。 角色是3D骨骼角色网格,具有映射到其上的二维彩色图像,该图像已展开,任何具有2D图形编辑器(例如Photoshop或Paint Shop Pro)的人都可以轻松绘制。
用多边形制作3D角色比较困难,但是您不必这样做。
只需将您的脸涂在头部上或将衣服涂在身体上即可。
透湿剂
Transmogrifier程序允许您以不同角度导出对象的所有图像,并将其缩放为可以编辑的位图文件,而不是将其编辑为3D对象。
3D Studio Max对象导出器
有一些开发工具可从3D Studio Max中制作3D对象精灵,然后将其渲染为Z缓冲的精灵。
3D Studio Max角色动画导出器
但是角色是使用Character Studio在具有可变形网格的骨骼上创作的。 该系统基于Ken Perlin的分层动画,您可以将它们混合在一起。
步行引擎

角色是自称的,只是四处走动,还有一个更高层次的行走引擎,它遵循一条路径。 嗯,显示路径。 好吧,这不是很有趣。
但是无论如何,他们沿着小路走,然后走到物体上。 人们知道如何走动,但他们不知道如何使用这些物体。
对象动画

对象知道如何使人们使用自己。 因此,当您下载一个新对象时,它会带有一些角色动画,说明如何操作它以及如何与之交互。
目标程式
它还具有一些程序来控制人的行为,行为对环境的影响以及其他所有内容。
对象广告

菜单是根据这些对象中的广告生成的,即“我可以做到”和“我可以做到”或“您可以和我一起做”或“您可以和我一起做”。
前提条件
但是它们取决于情绪和人格类型,在某些条件下可以被抑制。 因此,只有很少的代码可以运行,以找出适合每个人和对象的行为。
面向主题的程序设计
有人将其描述为对象-不是面向对象的编程,而是面向主题的编程。
客观化人

人是对象,因此,当您单击另一个人时,菜单中获得的项目取决于您的心情以及与该人的关系。
物以类聚,人以群分

我不认识这个人,所以我可以“请假”,因为他们是客人。 我可以“开玩笑”,“交谈”或“呼叫”,因为他们在不同的房间里。
如果他们在同一个房间里,那么“ Call Over”就不会在那里;如果他们住在同一所房子里,那么“ Ask to离开”就不会在那里。
Edith Sims编程工具

有一个名为“ Edith”的开发工具,用于游戏中的第一个角色“ Edith Bunker”。 和“ EDIT House”的缩写。
它运行在一个窗口中,并在此处使用所有这些控制面板来编辑游戏中所有内容的属性并浏览内容。
列出加载的对象类

因此,例如,我可以查看游戏已加载的所有对象的所有类。 我们只有各种各样的东西。
特殊物品
有一些特殊的对象可用于角色交互以及一些不可见的事物。 例如,您可以下载豚鼠宠物,但…

这是“来来看看”的对象,当发生激动人心的事情时,它就像带婴儿一样将人们带入。
病毒
您可以下载这个豚鼠对象,如果您不关心它,它将使这个秘密的隐藏病毒对象给您带来感冒,并带有咳嗽和咳嗽的动画和声音(咳嗽)。
每隔一段时间,它只会打断您的工作和咳嗽,对您的健康有害。 而且,如果您睡眠不足,则必须睡眠以摆脱睡眠。
从字面上看,这个小程序是一种病毒,它在您的家庭和角色中运行和生活,您的角色可以将它们传播给邻居,并将它们带回家。
可编程插件对象
无论如何,由于这种编程语言,新插件的新增功能有很多有趣的潜力。
SimAntics视觉编程语言

有一种称为SimAntics的内置可视编程语言,它是控制流决策树类型的语言。 因此,“来看看”对象,我们来看一下。
树表

首先,我们将查看它的树表,从中生成菜单。
广告

它有一个广告,广告是“来看看”。 这些广告中的每一个都有各种各样的参数,包括您在单击时获得的菜单名称,衰减(必须离您有多近)才能被吸引。
广告参数

自主权阈值,无论人们是自己决定还是要强迫他们这样做。 加入:您可以加入多人互动,例如篝火或热水浴缸,然后以这种方式获得个人互动和得分。 无论访客是否可用,儿童,成人是否可用,仅调试,立即运行,允许连续自动选择。
动机效应

还有一些动机会影响人们对此的反应。 因此,基本上,所有事情都在宣传,它可以以某种动机或多种动机帮助您。
虚假广告
而且可能会有虚假广告,例如在驴子前悬挂胡萝卜。 例如,食物链被实现为非常惊人的Rube Goldberg设备。
食物链

看,他们现在正在吃饭,但是要让他们吃饭需要花费大量的时间,一一连串的互动。
所以我要告诉她去冰箱里端上饭……或者我会告诉他,是的,好的,他要去吃晚餐。
但是他目前正在吃饭,并且在说话。 他们一起做的社交活动。 即使没有人坐在那里,因为我不知道椅子不好?
建立一条短食物链

首先,他必须放下自己所拥有的东西,而且他有点草率,因此将其放到地板上。 现在,他去冰箱里执行“服务食品”。 现在他有食物了。

食物链中的下一个环节

食物告诉他:“我需要一个坐下的地方”。 这个桌面上做了广告。
一条简短而令人不满意的食物链:罐头食品
问题是,他不是很好:他直接从冰箱里直接制作了低质量的罐头食品。
更长久的美味食物链:家电
但是,如果他具备烹饪技能和电器,它们就会做广告:“嘿,我是食品加工者,我可以用我做的更好”,或者“我是微波炉”。

但是他们按照称为“食物链”的顺序来做。 所以我要去买些电器,买一个食品加工机。
坏风水饰演漫画
现在,这对风水不利。 他将不得不花很多时间才能做到这一点,所以这很可笑。
我们将在外面放另一张桌子使他沮丧。 这是冰箱,这将显示出精心布置厨房的重要性。
食物链中的更多链接

然后,在完成食物处理程序后,您将需要一个水槽和一个台面将其切碎,然后是微波炉。 骗取一些钱。 然后,最终会有一个垃圾桶将垃圾扔掉,或者用洗碗机或水槽将垃圾洗净。
吃掉地板

啊! 有人将餐盘放在地板上。 因此,他只是去捡了一些食物,他将因在地板上吃饭而受到惩罚。 但基本上,让我尝试让他做食物链,然后我们将提供晚餐。 我希望他不要只是把它放在地板上。
建立长食物链

于是他放下食物,然后去冰箱。 他从冰箱里拿东西。 他可能对此不太熟。
用食物处理器准备食物

好的,所以他在那儿使用食物处理器。 那是好消息。 这可能还不错。
用微波炉烹饪食物

好,他把它放在微波炉里。 现在,一旦完成,他将需要将其放置在某处进行服务。
在桌面上供应食物

因此,这些表宣传的是能够放置东西的服务,除非它们上已经有东西。
路由故障影响风水

(一个热辣妹朝他走来,给自己灌肠。)好吧,她在路上。 他惊呆了。
所以那边的风水真不好。 这种情况加剧了因风水不良而使他们震惊的惩罚。
疯狂喂养中的蜂群

现在他们都将蜂拥而至,现在去寻找一个可以坐下的地方。 这还涉及与椅子互动。 因此,如果他们找不到吃饭的地方,或者只是愚蠢,那么他们可能只会吃饭。 语言具有所有这些决策树。 她找到了一个位置,然后将其放到那里并调整椅子。
调用椅子子例程来坐

因此,将椅子称为子例程,是将其转到椅子上然后让她坐在椅子上。 椅子,您可以在他们后面走动,也可以在他们的左边,右边或前面走动。 然后它具有不同的动画,可以让您从任何一个动画中脱颖而出。
因此,您可以让他们拥挤在餐桌旁,但仍然可以进入。它们非常复杂。
电池电量耗尽

(会弹出一个窗口,警告笔记本电脑的电池即将用尽。切到下一个场景。)
回到伊迪丝

好的,现在回到伊迪丝(Edith),它与游戏同时在游戏中运行,作为游戏的一部分,其卷须深入游戏中。
类浏览器

我们可以看一下对象的类。 如果您双击一堂课……让我们找到一个有趣的课,让我们看看……
检查画架

是的,画架。 因此,我们双击它,这是该课程的浏览器。 它具有全局或私有可用的功能类别。 我们可以过滤我们如何看待它们。
对象具有交互功能

但基本上,此画架具有许多功能,以使其具有交互性并使人们能够使用它。 这是一个称为“完成”的函数,可以确定您是否已完成绘画。
SimAntics视觉编程语言

这是一个SimAntics图编辑器。 就像可视化控制流一样,它是框和箭头语言。 这对意大利面条式代码非常有用,这恰好满足其需要。
做出决定并保持得分

因此,您可以使用这些小框进行比较并设置变量,然后双击它们进行配置。
专用原始函数

还有很多不同的特殊原语用于处理其中的一件事情,并对此进行处理。
虚拟现实机器语言

该游戏具有整个虚拟机,对象的模型,这与我见过的其他任何东西都非常不同,但旨在使其按其方式工作。
浏览SimAntics子例程

因此,您具有子例程,这是非常标准的。 您可以双击该私有子程序“添加点”,然后调出另一个编辑器。

调用SimAntics基元

然后还有一些功能,可以将人们带到一个物体上,播放动画,然后做各种各样的事情,以产生声音。 我们只需要在需要向语言添加基元时添加基元即可。

伊迪丝不适用于播放器
这是一件很难支持的事情,因为它是如此地与时俱进,并且接近游戏的真实实现。 因此可能不会……Maxis之外的其他任何人都无法使用它。
玩家专用的简化专用工具
但我们希望它可能是它的简化版本或工具。 更简单的是用于解决问题的工具,例如绘画或在一定范围内制作特定类型的游戏。 制作一个参数化的对象,然后我们可以制作简单的工具,进行调整并将新内容放入自动存储塔等对象中。
SimAntics脆弱而棘手
但是对Edith进行编程确实很困难。 不幸的是,如果有人犯了任何错误,这将很容易破坏游戏,并且可能会有很多细微的错误。
寻找复活节彩蛋

尽管如此,SimAntics代码还是非常有趣的,因为它定义了游戏中每个对象的行为方式。
谁知道,这里可能有各种各样的复活节彩蛋。 您只需要滚动查看它,或在一张大纸上打印出来。
模块检查器

游戏中有各种各样的特殊编辑器。 当然,有一个模块检查器可以显示所有正在运行的对象。
房子里的活物

“床”被分解成所有这些单独的图块,它们各自发挥不同的作用。 有一些“主席”和“门”。 显然房子的某个地方有“洪水”。 可能靠近“淋浴”或一些水的东西。 有很多“花”。
隐形魔术对象

有一个“帮助系统”。 所有这些看不见的物体都在做自己的小事。 “求职者”。
“邮箱”是一个非常重要的对象。 如果没有邮箱,整个游戏就会中断,因为它会进行很多调度和类似的工作。
以及“非玩家角色控制器”。
撒旦发电机

哦,这是很奇怪的事情。 让我们看看“撒旦生成器”是什么。
您可以在这里下载撒旦!
天啊。 嗯……(阅读评论)“这棵树只是包装了空闲的原语。”因此,这就是“撒旦生成器”的主循环。 让我们看看,那去了哪里? 也许我们不应该考虑这一点。

但这就是等到家庭中的每个人都感到沮丧为止。 然后产生撒旦。
寻找撒旦
如果我们看……我们现在还没有一个“撒旦”活着。 但让我们看看,看看他在这里。

我们可以使用班级浏览器,遍历所有班级,然后看一下它们是什么……撒旦。 NPC撒旦? 所以这里是用户,那些人。 还有“ NPC撒旦生成器”和“ NPC撒旦”。
撒旦发电机内部

基本上,如果我们看一下生成器,它的主要功能是……嗯……哦,我的。 嗯……也许撒但所做的比我们知道的要多得多。 嗯…

它的主要功能:无所事事,延迟,处理。 我的“处理的最后一小时”属性获得“ Sims全球小时”。 因此,此过程很有趣。 我们将在这里爬上去。
单步通过撒旦发生器

基本上,它是在设置……实际上,它更像是一种机器语言,而不是高级语言。 因此,它将设置这些寄存器以及“堆栈对象”中的指针种类。
撒旦发电机寻找第一个受害者

“设置为下一个人”进行循环。 我要遍历所有人。 现在是“堆栈对象”…
全家福

我们不会将它们输入为句子,而是单击对话框中的内容。 因此,此对话框的基本含义是,将堆栈对象的称为“家庭编号”的人员数据与Sim Global Current Family进行比较。 因此,我们只是在寻找一个最新的家庭。

你心情不好多久了?
然后寻找关系“坏心情计数”,获取堆栈对象的“坏心情计数”,以…
您与撒旦生成器的个人关系

好的,这是在编辑“撒旦生成器”与家庭成员的关系。 这是堆栈对象与我的关系。
将关系变量号“不良心情计数”放入堆栈本地1中,称为“不良心情计数”。 如果矩阵不够大,则创建它。
基本上,我们填写这些小表格,然后从中进行更高级别的功能。
坏心情熊

现在,“不良情绪计数”是否大于48? 如果是这样,那么“带来魔鬼”就是一个功能。
否则,堆栈对象的动机“ Mood”是否大于60? 然后,“不良心情计数”为0。
否则,堆栈对象的动机“ Mood”是否小于-80? 然后,我们增加“不良情绪计数”。

因此,我们只是修改了他们心情不好多久了,直到我们带上撒旦。

如何带来魔鬼

接着:
“携带魔鬼”说出“设置为下一个邻居”,类型为“非玩家角色撒旦”。 现在如果有一个,看看是否成功,然后我们继续下去,否则我们返回false或true。

如果成功的话,我们将进入“访问者时间表”,然后从撒旦那里安排访问时间,这基本上是完成所有这些工作的全局子例程。
撒但只是另一个对象
就像撒旦一样,撒旦的另一个对象。 角色对象很漂亮,呃……他们有很多事情可以做。
撒旦诗

但是您可以想象,如果我们看一下Satan的功能,他将会……“做非玩家角色问候语”,“做歇息”,“获取生成器”,“初始化特征”,“初始化树”,“加载树”,“主要” ”。 不太多,但是大多数可能在“ Main”中。
撒旦的小直属

因此,所有这些字符在这些树中都有一个小程序计数器,随着时间的流逝,它们会逐渐下降。 因此,它们都是异步的,并等待发生的事情,例如“ Walk Me Over”到这个地方,无论到达那里,它都会返回true或false。 然后您可以找出其他事情要做。
面食编程

这是它的意大利面代码方面。 这就是使其工作所需的东西。 当然有更高层次的方法。 但是,这是经过很长时间开发的,并且具有很多惯性和负担。

制作所有这些工具花了很多功夫,但由于我们拥有了交互式编辑功能,因此获得了回报。 进行原型设计,设计会议,快速周转,并在第二天让它真正快速地运行,看看它的样子,然后将其交给测试人员。
调试模拟人生
您需要大量的严格反馈,并且能够跳入并修复错误。 因为男孩,那里确实有一些隐蔽的错误,而且仍然存在。
它有一个调试器,如果出现问题,该调试器会弹出,并向您显示堆栈,并让您浏览它在做什么。
最好是为自己所做的事感到遗憾,而不是为自己没有做的事感到遗憾
制作所有这些工具是一笔巨大的投资,并且如果我们再做一次,我们可能会完全不同地使用它,因为今天有可用的不同工具。 但是用这些语言进行编程很有趣。
暑期实习生做了女仆
当然,我们有暑期实习生进来并与程序员坐下来,他们学习了如何在一些指导下解决这个问题。 但是,一旦他们掌握了这些技术,他们就会自己突围而出,并且确实做了一些了不起的事情。
女仆是由一个暑期实习生写的,这是第一个真正做任何事情的非玩家角色,而且做了很多。
测试人员把女佣
但是随后测试人员发现女佣可以轻松地……好吧,您可以让女佣做一些有趣的事情。 就像您可以建一个游泳池,在中间放一个小岛,然后在上面放一些脏东西,她会跳进游泳池,游泳,爬上去清理它,而不会咧嘴笑。
但这被报告为错误。 但是,您无法期望这样的事情,但是您不会出汗。 因为至少游戏不会崩溃,可能会引起一些娱乐。
只是发货
有很多错误,或者被标记为错误的事物,但这仅仅是事物的物理性质。 因此,您只需要说出何时停止修复错误并发布它。
赛前发布工具
角色动画系统是在游戏之前作为名为“ SimShow”的应用程序提供的,该应用程序将人绘制在窗口中,并允许您绘制皮肤并查看他们的动画效果。
因此,人们在发布游戏之前就创作了动画外观。 我现在将展示它的更高级版本。

(此演示的结尾)