Roblox 游戏开发/简介
ROBLOX 是一个用户生成的游戏网站。这意味着用户可以制作其他用户可以玩的游戏。ROBLOX 允许您使用其游戏引擎和 脚本接口 创建各种类型游戏,供其他人玩。游戏是 3D 的,使用可以准确地与 乐高 块相比较的积木。这些块可以使用工作室进行自定义、调整大小、定位和操作。游戏还可以包含各种其他对象,包括粒子(烟雾、火焰等)和图形对象(文本标签、按钮等),用户可以编写脚本为他们的游戏添加更多功能。
ROBLOX 上的大多数用户都创建游戏和玩游戏,但许多用户只经常进行这两项活动中的一项。虽然大多数用户都有一个或多个他们定期改进和制作的游戏,但大多数用户并不是经验丰富的游戏开发者,他们将 ROBLOX 视为玩具而不是游戏开发平台。
您需要一个帐户才能创建游戏并使用该网站。如果您还没有帐户,可以轻松创建。您需要使用网络浏览器导航到以下 URL:https://www.ROBLOX.com/Login/Signup.aspx。在那里,您需要说明您的出生日期和性别,并选择一个用户名和密码。您将获得一个角色:有很多方法可以自定义该角色并使用 ROBLOX 的社交功能,但本书将只关注游戏开发方面,尽管其中一些内容与社交方面重叠。如果您以前从未使用过该网站,您应该探索该网站以了解如何在需要时找到它。您还应该玩一些地方(ROBLOX 上的游戏通常被称为“地方”),以查看 ROBLOX 上可以做什么的一些示例。
您需要 ROBLOX 客户端才能玩游戏(它可以通过单击任何地方的播放按钮从网站上下载),您需要 ROBLOX Studio(与客户端一起提供)才能创建和修改游戏。请注意,ROBLOX 软件仅适用于 Windows 和 Mac OS X。可以使用 Wine 使用 [补丁] 在 Linux 上运行。请注意,此包装器目前没有,并且您需要在 Linux 上运行带有 Windows 或 Mac OSX 的 虚拟机 才能玩 ROBLOX。
David Baszucki 创立了 Knowledge Revolution,这是一家专注于教育物理和机械仿真软件的公司。他与 Erik Cassel 合作开发了该软件。Keith Lucas,现任 ROBLOX 工程和运营副总裁,于 1997 年加入该公司。之后,Knowledge Revolution 被 MSC 软件公司 收购,他们都在几年后离开公司创建了 ROBLOX,时间是 2004 年。
ROBLOX 于 2005 年推出。该名称是“机器人”和“积木”的组合。它最初只有数百名用户,而今天,它拥有数百万用户,并且仍在增长。本书将介绍自 ROBLOX 创建以来多年来添加到游戏引擎和脚本 API 中的许多功能;但是,由于 ROBLOX 中嵌入的大量功能以及定期(几乎每隔一周)发生的快速变化和添加,不可能涵盖所有功能。
本书不会描述 ROBLOX 网站的全部内容,甚至不会描述其中的大部分内容,而是提供有关开发游戏的许多核心方面的指导。建议您自己探索网站的其余部分。您可以使用页面顶部的菜单栏浏览该网站。
您可以在个人资料页面上查看您的地方,您可以通过单击菜单中的个人资料链接找到您的个人资料页面。除非您将帐户升级为高级会员资格,否则您只能拥有一个地方(完成本书不需要多个地方或任何高级功能)。您也可以在地方页面或构建页面上找到您的地方。
ROBLOX Studio 应该在您安装 ROBLOX 客户端时已下载到您的计算机上,它是一个可以用来创建和开发 ROBLOX 模型、脚本以及将两者结合在一起的场所的工具。打开后,它应该显示 ROBLOX 网站上的一个页面。您应该从该页面登录(使用 Studio 不需要登录,但某些功能需要登录)。登录帐户后,您可以通过打开“文件”菜单并选择“新建”来打开一个新地方。您也可以通过浏览网站上的游戏页面并单击游戏的编辑按钮来编辑当前的游戏之一。
如果您找不到面板,请打开“视图”菜单并单击相应的按钮以使其可见。
游戏视图显示当前的游戏环境。当您打开一个新地方时,它应该看起来像一个空旷的天空,位于中间。它将以玩家玩游戏时看到的方式显示您的游戏。您可以使用箭头键移动相机。
资源管理器面板,通常称为资源管理器,是一个面板,它以层次结构显示当前游戏中所有对象。单击层次结构中的对象将选择该对象。包含在另一个对象中的对象称为该对象的子对象(地形对象是工作区的子对象),而包含另一个对象的称为该对象的父对象(工作区是地形对象的父对象)。一个对象可以有多个子对象,但只能有一个父对象。
您可以通过单击对象上下文菜单中的相应按钮来对对象执行许多操作(在右键单击对象时显示)。您还可以通过将对象拖动到另一个对象中来移动对象(某些对象无法移动)。
属性面板是一个面板,它显示当前所选对象的属性。属性是您可以修改以更改对象行为的值。
有很多种对象类型。这些被称为类。并非所有类都具有相同的属性,但所有类都具有某些共同属性。ClassName 属性是所有对象共有的,它的值是对象的类名。例如,零件的类将是“零件”。Name 属性也是所有对象共有的,它的值是对象的名字。每个对象都需要一个名字。Parent 属性是另一个所有对象共有的属性,它的值是当前对象包含在内的对象。
工具箱是一个面板,允许您插入由其他用户制作的模型。这些模型,也称为“公共领域模型”或“免费模型”,可以使用工具箱进行搜索。ROBLOX 还提供了一些特色模型。您自己的模型(您可以发布自己的模型供其他人使用)也会在工具箱中显示。
高级对象面板是一个面板,允许您通过双击项目的名称将对象插入游戏层次结构中。该对象将被插入当前选定的对象中。该面板将以列的形式显示可用项目。如果选中复选框,它将在插入对象后自动选择该对象。您还可以使用面板顶部的搜索栏搜索特定对象。
命令栏是一个工具栏,可用于运行简短的代码行。它经常与输出一起使用,以查看特定代码片段产生的结果。它也经常用于自动化游戏中的任务或执行使用工作室界面无法完成的任务。
输出是一个面板,显示脚本生成的输出,以及引擎的警告和其他信息。它是查找脚本错误并纠正错误的重要工具。它也可以与命令栏一起使用来执行代码并查看结果。
脚本性能面板是一个面板,显示有关游戏中运行的脚本性能的信息。标记为“[未知]”的脚本通常是核心脚本(ROBLOX 使用的内部脚本)或已删除的脚本,因此可以忽略它们。虽然脚本性能面板并不经常使用,但它可以帮助识别性能开销大的脚本,并且在评估脚本性能时非常有用。
诊断面板很少使用,但了解它很有用。其中的大部分信息非常技术性,对普通用户来说毫无用处。它可以告诉您游戏中零件的数量、物理引擎处理的连接数、每秒帧数 (FPS) 和其他一些信息,但这些信息很少需要。
诊断面板中的信息也可以在游戏中获得。要查看它,请按 Ctrl+F1 或 Alt+F1 在 Microsoft Windows 上,按 ⌘F1 或 ⌥F1 在 OS X 上。
剪贴板
[edit | edit source]剪贴板工具栏可用于复制、剪切、复制和粘贴游戏对象或脚本代码。此外,它还可用于撤消或重做操作。所有这些操作都有键盘快捷键可用;可以通过将鼠标指针悬停在按钮上查看它们。
相机操作
[edit | edit source]对于从未使用过相机的人来说,相机可能很难上手。可以使用鼠标滚轮或 I 和 O 键进行缩小。可以使用向上和向下键或 W 或 S 键向前和向后移动相机。可以通过右键单击并拖动鼠标来旋转相机。
游戏层次结构
[edit | edit source]游戏层次结构是游戏中对象的层次结构。它可以通过资源管理器查看和操作,如上所述。顶级对象(在资源管理器中没有可见父对象的物体)被称为服务。并非所有服务都显示在资源管理器中(事实上,默认情况下许多类都被隐藏)。
工作区是放置所有脚本(允许您在游戏中运行代码的对象)和游戏中可见部分(部分也称为“砖块”或“块”)的地方。
Players 服务是放置 Player 对象(表示玩家的对象)的地方。您现在不必担心此服务,因为您只会在编写脚本时使用它。
Lighting 服务是放置天空盒的地方,天空盒可以为天空提供不同的外观。它还包含许多属性,可以修改这些属性来更改场所的照明。
StarterGui 服务包含 GUI,您可以将其放置在游戏中以创建菜单、按钮等的二维元素。此服务中包含的 GUI 将在玩家角色生成时提供给玩家。如果没有脚本,GUI 无法做太多事情,因此本书在后面的脚本部分将不再讨论它们。
StarterPack 服务包含工具。玩家使用工具来做事情。例如,剑可以用来攻击其他玩家,钥匙可以用来开门,等等。这些工具将在玩家角色生成时提供给玩家。同样,如果没有脚本,您就无法使用工具做太多事情。
模拟
[edit | edit source]ROBLOX 工作室提供了多种方法来测试使用它构建的游戏。当使用工作室编辑游戏时,它最初处于空闲状态。这意味着物理不会被模拟(即零件不会掉落,爆炸不会有任何影响),并且脚本不会运行。运行按钮可用于将游戏置于运行状态。这将启用物理并使所有脚本运行。然后可以使用暂停按钮将游戏再次置于空闲状态;或者,可以使用重置按钮将游戏重置为其开始运行时的状态,并将其放回空闲状态。
通常,这些工具不足以进行测试,并且需要角色来测试游戏。为此,有三种选择。第一个是在线测试游戏。不幸的是,这需要将游戏发布到网站并进入游戏,这可能需要一些时间,并且不会让您访问工作室中提供的所有调试工具。[1]
第二个选项是在没有服务器的情况下(以单人模式)玩游戏。这将在访问输出和完整工作室的情况下创建一个伪游戏环境。它为用户提供一个角色并运行游戏。但是,这种模拟环境与真实的游戏环境之间存在很多差异,因此,随着测试的游戏变得更加复杂,此选项的用处很快就会下降。
第三个选项是在本地启动一个服务器,带有一个或多个玩家。[2] 这会在您的计算机上启动一个服务器实例,并为每个玩家启动一个连接到该服务器的客户端。服务器和所有客户端都可以通过不同的窗口访问,每个窗口都包含完整的工作室。与其他选项相比,此选项提供了更完整和正常的游戏环境,但由于同时打开了多个 ROBLOX 实例,因此对计算机资源的消耗更高。此外,某些功能(如徽章或数据持久性)仅在线有效,而无法在本地使用。
保存游戏
[edit | edit source]当前打开的游戏可以通过使用标准工具栏或 File 菜单保存。游戏以 '.rbxl' 扩展名保存,并使用二进制格式。它们以前使用具有相同扩展名的 XML 格式。仍然支持旧的 XML 格式,并且可以使用 '.rbxlx' 扩展名以 XML 格式保存游戏。可以使用 File 菜单中的打开按钮或标准工具栏再次打开它们。保存在用户计算机上或在工作室中创建的文件可以使用 File 菜单中的“发布到 ROBLOX...”选项上传到网站。直接从网站打开的游戏会提示用户在关闭之前保存。
物理对象
[edit | edit source]在 ROBLOX 的虚拟世界中,有不同类型的物体在物理上出现。
ROBLOX 上最常见的物理对象是部件。部件也被称为积木和方块。它们可以有三种形状:方块形状、球形或圆柱形。部件的形状会影响其物理行为。圆柱体在物理上表现得像球体,因为模拟圆柱体在计算机资源方面过于昂贵,并且会减慢大量使用圆柱体的游戏速度。
可以使用材质自定义部件的外观。部件的默认材质是塑料材质,使部件呈现出均匀的颜色,略带混凝土外观;可以使用光滑塑料材质来获得完全均匀的颜色。塑料材质在某些情况下是可以的,但可能需要更多自定义来改善建筑物的视觉效果。当应用于部件时,材质会改变该部件的纹理。它们还会改变该部件的密度,这对部件置于水地形时会有影响:某些材质(如木材)的部件会漂浮在水上,而其他材质(如板岩)的部件则不会。
自定义工具栏的第五个按钮可用于更改部件的材质。它允许您从可用材质列表中选择所需的材质,然后单击部件将该材质应用于它们。材质不多,但足以满足大多数目的。当需要更多自定义时,可以使用在下面几个部分描述的自定义纹理,但并不常见。
所有部件都有一个形状系数,它定义了部件可以采用的尺寸。默认形状系数是积木形状系数,它要求积木的高度是 1.2 的倍数。对称形状系数要求方块的所有尺寸都是 1 的倍数,而板状形状系数要求高度是 0.4 的倍数。自定义形状系数允许所有尺寸的倍数非常小。
部件的每个表面都有一个类型。默认情况下,顶面有凸起,底面有凹陷。共有 11 种表面类型。表面可以与其他表面形成键,这使得部件可以粘在一起,并且不会由于重力而掉落到它们通常会掉落的地方。如果部件的材质是塑料,它们也会影响部件的外观。否则,将使用材质纹理而不是表面纹理。
表面类型之间的行为在该表中进行了更详细的描述。
SurfaceType | 焊接 | 通用 | 凸起 | 凹陷 | 胶水 | 光滑 | 不可连接 | 光滑无轮廓 |
---|---|---|---|---|---|---|---|---|
焊接 | 焊接 | 焊接 | 焊接 | 焊接 | 焊接 | 焊接 | 焊接 | 焊接 |
通用 | 焊接 | 捕捉 | 捕捉 | 捕捉 | 胶水 | |||
凸起 | 焊接 | 捕捉 | 捕捉 | 胶水 | ||||
凹陷 | 焊接 | 捕捉 | 捕捉 | 胶水 | ||||
胶水 | 焊接 | 胶水 | 胶水 | 胶水 | 胶水 | 胶水 | 胶水 | 胶水 |
光滑 | 焊接 | 胶水 | ||||||
不可连接 | 焊接 | 胶水 | ||||||
光滑无轮廓 | 焊接 | 胶水 |
贴花是可以放置在部件表面上的对象,用于在该表面上显示图像。它们对广告牌、标志、旗帜和游戏内屏幕很有用。如果要显示图像以更改表面的外观,可以使用纹理。
纹理与贴花相同,但图像会重复而不是缩放以填充整个表面。这会产生比使用贴花获得的效果好得多的结果,因为 ROBLOX 上用户图像的质量受到限制。
如果您想要一个显示广告的标志,您应该使用贴花。如果您想在墙上贴上砖块纹理,那么您应该使用纹理。纹理对象与所有其他对象(包括贴花)一样,可以在高级对象面板中找到。
游戏有时需要包含比简单的方块、球体和圆柱体更复杂的物体。网格可以用于此目的。它们是可以放置在部件中的对象,当放置在部件中时,会使这些部件具有不同的形状,可以非常复杂。有一些预定义的网格,还有许多其他网格上传到网站上。例如,目录中的所有帽子和装备都使用网格来呈现外观。网格本身没有颜色或纹理,只有形状,但它们通常会赋予纹理。网格只影响它们所用部件的外观,但部件的物理行为仍然由其形状和表面类型定义。因此,网格最适合用于小物体或玩家触及不到的物体。
网格不支持轮廓。它们可以缩放并远离其物理部件(使用偏移量)。缩放是必要的,因为它们的尺寸并不适合物理部件的尺寸。将网格移开其物理部件可以用来创建全息图效果和其他类似的效果。
部件可以包含不同类型的粒子。可以创建自定义粒子,但提供了许多预定义类型,并提供了一些可以自定义的属性。
可以在部件中插入闪光对象,使闪光状粒子从部件内部出现并移动到部件外部,然后在一定距离消失。这些闪光的颜色可以自定义。
火对象可用于使火粒子出现在部件上方。火不一定是橙色或红色,可以是任何颜色。它的热量(粒子的寿命)可以设定,粒子在接近消失时的颜色也可以设定。
烟对象可用于使烟雾出现在部件上方。烟雾通常会向上飘,但也可能向下飘:它会朝它所在的部件的顶面方向飘动,因此通过改变部件的旋转,可以很容易地使烟雾飘向左侧,或任何方向。烟雾的颜色可以改变,烟雾上升的速度也可以改变。尺寸也可以改变,透明度也可以改变。
桁架与部件几乎完全相同,但外观不同,角色可以攀爬,并且有尺寸限制。它们的宽度和深度必须始终为两个凸起,而高度不受限制。它们支持材质、表面以及部件支持的所有内容,除了贴花和纹理。它们有三种不同的样式:没有支撑、交替支撑和桥梁式支撑。
当角色站在桁架旁边并开始朝其方向行走时,他将以与攀爬梯子相同的方式开始攀爬桁架(当许多部件堆叠在一起且每个部件之间留有小间隙时,角色在朝部件堆叠方向行走时会向上移动)。当许多桁架以水平位置堆叠在一起时,这也是可行的。有时,将许多桁架放在一起以使攀爬它们更容易将是可取的。但是,在许多情况下,使用梯子代替桁架可能更可取,因为桁架主要是真正的建筑材料,而不是用于攀爬结构的工具,而梯子是用于攀爬结构的工具。
生成位置与部件相同,行为方式也相同,区别在于角色可以在它们上面生成。生成位置可以配置,以便只有团队中的玩家才能在其角色在上面生成。它们还可以配置为在用户在其角色在上面生成的用户角色周围生成一个力场,持续一段时间,以防止刚生成的字符立即死亡。
游戏中可用的部件数量受可用计算机资源的限制。地形可用于创建美丽而复杂的地形,由于计算机资源的限制,使用部件无法创建这些地形。地形以体素地形实现。体素是原子体积单元,可以看作是像素的三维等效物,或者简称为立方体。这些立方体可以组合在一起并赋予不同的外观。
地形立方体目前具有材质、形状和方向。与部件不同,它们不是对象,在资源管理器中不可见,也不能分组到模型中。但是,您可以在一台普通计算机上拥有数百万个这样的立方体,而普通计算机上的部件数量限制在约十万个,此时游戏速度会非常慢。
地形通常使用地形工具栏创建,该工具栏显示在本节的顶部。该工具栏中的第一个工具是地形生成器,用于生成地形。接下来的两个工具用于创建和销毁单个地形块。接下来的两个用于通过在特定位置上下拖动来改变地形的标高。下一个工具用于创建陨石坑,而图标为交叉路的工具用于创建道路。接下来一个用于快速绘制大片地形,而倒数第二个工具可用于插入地形块(以及其他对象)。最后,最后一个工具用于用特定材质的体素填充地形区域,通常用于创建湖泊或河流。这些工具中的每一个都有自己的集成帮助,可以通过选择工具并点击带有问号的按钮来获得,因此这里不再赘述。
座椅的工作原理与部件相同,但玩家可以坐在上面。座椅类型很多:简单座椅、车辆座椅和滑板平台。简单座椅只是玩家可以坐的部件。脚本可用于使这些座椅具有各种功能。车辆座椅用于创建带有电机和车轮的车辆,用户无需任何脚本即可控制这些车辆。最后,滑板平台用于控制通常较小的车辆(悬浮滑板、滑板、冲浪板,以及通常描述车辆并以“板”结尾的任何东西),并且更容易控制。滑板平台需要脚本才能工作,但会处理在不同事件中发生的动画,例如当滑板平台上的角色转弯、跳跃、加速等时。
在 ROBLOX 上,建筑是将物理物体放在一起、操纵它们并自定义它们的艺术。工作室提供了许多工具来简化此过程。通过能够改变部件和其他物理对象的大小、位置和外观并将它们放在一起,可以构建几乎任何东西。从小建筑到非常详细的房间以及复杂的机制,可以创建很多东西。
模型用于将部件、脚本和其他模型组合在一起。它们对于组织必不可少。没有组织的大型游戏很快就会变得难以维护,因此您应该始终使用模型来组织游戏中的对象。当许多对象组合在一起形成更大的东西时,它们应该分组在一起(一张床、一栋房子、一辆汽车等)。可以使用资源管理器的上下文菜单或格式菜单中的分组和取消分组按钮(以及相应的键盘快捷键)来对部件进行分组和取消分组。您也可以使用格式菜单中的相应按钮来选择模型的所有子级,这在某些情况下非常有用。
例如,假设您正在建造一座塔,比如右边的这座。假设它有一个门和楼梯通往顶部。您可以将组成楼梯的部件分组在一起,对组成门的部件也这样做。您可以将组成城墙的部件分组在一起,并将所有其他部件分组到一个名为“墙壁”的模型中。然后,您可以将所有这些模型分组在一起,并将该模型命名为“塔”。这样一来,该位置的组织性肯定比您将所有这些部件散布在周围没有任何组织性要好得多!
操纵部件包括移动、调整大小和旋转它们。在工作室中,部件的操纵通常使用上面显示的工具栏完成。
- 第一个工具可用于通过点击部件来选择它们,并通过拖动鼠标来移动它们,前提是它们已被选中。也可以使用其他任何工具来选择和拖动部件。
- 第二个工具可用于移动部件。它与第一个工具类似,但还会显示拖动句柄,允许您在特定轴上移动部件。
- 第三个工具可用于更改部件的旋转。这个工具稍微难用一些,但仍然应该很容易:只需使用句柄来更改部件的旋转即可。
- 第四个工具可用于使用句柄来改变部件的大小,并像使用第二个工具移动部件一样拖动它们。
- 分隔线后的三个按钮用于更改使用的网格以及移动、调整大小或旋转部件时的增量。学习使用它们的最佳方法是尝试使用它们。
- 最后,最后一个按钮允许您选择在移动到其他部件上时部件是否应该焊接在一起。如果启用,则部件将粘在一起。否则,它们将不会粘在一起,并且在游戏运行时可能会掉下来。
ROBLOX 使用一个名为“英尺”的单位来定位和计算距离。一个英尺相当于部件上带有 R 徽标的方块中的一个。一米等于 20 英尺。
自定义部件包括更改它们的外观和行为。与操纵一样,它通常在工作室中使用工具栏完成,即上面显示的工具栏。有些自定义只能通过从属性面板手动更改属性来完成。
第一个按钮可用于固定或取消固定部件。固定部件意味着设置其位置,使其不会因重力、碰撞或其他物理事件而改变。固定的部件无法在运行的游戏中移动,除非它们的 position 由游戏脚本修改,但它们会与其他部件碰撞,这意味着角色可以走动它们,例如。
第二个按钮可用于锁定或解锁部件。锁定部件会使其无法被建筑工具操纵,无论是在工作室还是在建筑游戏中。当您不希望玩家能够在建筑游戏中操纵某些部件时,这很有用,它还有助于防止您意外移动部件。
第三和第四个按钮用于更改部件的颜色。第一个允许您从调色板中选择颜色,而第二个允许您通过点击现有部件来选择它的颜色。
最后,第五个按钮可用于通过从可用材质列表中选择所需的材质来更改部件的材质。
如果您再看一下模型部分中介绍的塔,您会注意到它在墙上使用了许多部件。虽然这并不完全不好,但为了使游戏更快(通过减少部件数量),通常最好使用重复砖块的纹理。
除了所有工具栏,工作室还提供用于构建的附加工具。除了菜单中提供的一些选项外,还有一个轴小部件,可用于快速查找 X 轴或 Z 轴的位置,还有一个 3D 网格,可用于快速查找零位置的高度并在其上构建部件。这两种工具很少使用,但它们对于识别哪个轴是 X 轴,哪个是 Z 轴很有用。所有部件的自定义和操作也可以通过在选择部件后使用属性面板直接编辑部件的属性来完成。
ROBLOX 有许多帮助资源,用户可以在这些资源中获得有关各种主题的帮助。其中之一是论坛,用户可以在论坛中提问。有两个游戏开发帮助论坛
在论坛发帖之前,用户可以查看许多其他在线帮助资源。第一个是 Builderman 的帮助,可以在网站的菜单中找到(帮助按钮)。它包含有关网站、规则和其他各种内容的信息。
然而,主要的信息来源是 ROBLOX wiki。它可以通过网站上隐藏的一些链接找到,也可以通过在游戏中按 F1 键找到。wiki 由 ROBLOX 员工选定的编辑撰写,包含有关构建和脚本编写的文档。它是一个非常有用 的 ROBLOX 信息和文档来源。
您可以回答一些问题来验证您是否理解本章的内容。请注意,找到其中一些问题的答案可能需要具备本章中未介绍的知识。这是正常的:测验是学习体验的一部分,它们可以介绍本书其他地方没有提供的 信息。