BIGWORLD 客户端Tutorial
BIGWORLD_03–Tutorial
1.概述
本教程简要概述了从头开始制作一款基本游戏所需的最低步骤。第一次与BigWorld合作的游戏开发者和技术美工应该通过本教程了解如何将各种文件和目录组合在一起,从而制作出一款有效的游戏。
1.1常规
1.1.1 文件和目录
统一以/划分层级,例如 <res>/scripts/db.xml,而不是 <res>\scripts\db.xml。
1.1.2 提供的文件
本教程中使用的所有文件都在BigWorld包的教程目录中。
1.1.3 Debugging
在学习本教程时,由于脚本中的某些错误,客户端可能无法启动。为了发现错误的原因,使用诸如DebugView(可以在微软网站上找到)这样的程序,它捕获并显示调试输出。
2. 一个基本的仅限客户端的游戏
本章描述如何启动一个基本的客户机,并使用它自己的资源和脚本运行。这涉及到:
- 创建一个新的BigWorld项目目录。
- 创建定义单个客户端播放器实体所需的文件和目录。
- 创造一个新的空间。
在本部分教程的最后,我们将能够使用第一人称视角在客户端中行走。
2.1 创建新的项目
FantasyDemo项目位于C:\BigWorld的FantasyDemo目录中。按照这个约定,我们将在同一个目录中启动新的教程项目,方法是在C:\BigWorld中创建一个名为tutorial的新目录。所有特定于此项目的资源和脚本都将位于此目录中。
2.2 定义资源路径
2.3 创建资源目录
在tutorial中创建res目录,这个顶级资源目录将包含所有游戏特定的脚本、资产和配置文件。
2.4 创建第一个实体
实体是具有位置的游戏对象。实体的例子包括玩家、npc、聊天室、掉落物品等….
2.4.1 entities.xml
实例脚本必须位于res/scripts中,
在tutorial/res/scripts/entities.xml文件中写入:
1 | <root> |
2.4.2 定义Avatar实体类型
另一个必须存在的目录是res/scripts/entity_defs,其中包含.def文件包含每个实体的属性和方法的定义。
将这些定义文件想象成类似于C/C++头文件可能会有所帮助,因为它们指定了附加到实体的属性类型和方法调用。
在tutorial/res/scripts/entity_defs/Avatar.def文件中写入以下内容:
1 | <root> |
这是一个非常基本的实体定义,它定义了实体的属性,但没有方法。注意,属性被分为两部分:volatile和非volatile。
2.4.2.1 Volatile properties
对于BigWorld实体,volatile属性是位置/方向属性。它们之所以被描述为不稳定的,是因为它们在不断地变化。volatile属性的当前值只被认为是重要的,而属性的历史变化则不那么重要。在带宽受限的环境中,只发送当前值。
2.4.2.2 Non-volatile properties
与volatile属性相比,常规属性的更改频率较低,因此对特定属性的所有更改都应该发送到客户机。每个属性都可以按照您的意愿命名,并且可以附加许多不同的设置。
2.4.3 实现Avatar实体类型
在 tutorial/res/scripts目录中创建base,cell,client文件夹,其中base和cell是控制服务端实体脚本文件夹,client是客户端实体脚本文件夹。
创建脚本tutorial/res/scripts/client/Avatar.py,并写入:
1 | import BigWorld |
2.5 独立脚本(The personality script)
我们的基本客户端的下一个必需脚本是个性脚本。最简单的方法是把这个脚本看作BigWorld系统每个组件的引导脚本。
创建并保存以下脚本tutorial/res/scripts/client/BWPersonality.py:
1 | # 这是BigWorld教程的客户端个性脚本。 |
这个性脚本提供了一个initOffline方法,该方法包含足够的代码来运行一个基本的客户端,以及所有其他所需回调的存根实现。
下面的部分将描述如何设置这些文件,以便在启动时将它们传递给个性脚本。
2.6 XML configuration files(XML配置文件)
至少,BigWorld客户端希望在启动时向个性脚本传递三个XML配置文件:
- <engine_config>.xml
- <scripts_config>.xml
- <preferences>.xml
xml文件用于在客户端引擎上设置各种可配置属性,包括游戏个性的名称。我们将通过复制FantasyDemo /res/engine_config.xml到tutorial/res/engine_config.xml.
打开复制的文件,并修改(名称与个性脚本名称一致):
1 | <!-- 修改前 --> |
<scripts_config>.xml文件用于定义个性脚本所期望的设置—保存以下内容到tutorial/res/scripts_config.xml中:
1 | <scripts_config.xml> |
脚本配置将字符串spaces/main作为创建客户端实体的空间传递到个性脚本中,因此接下来我们将创建一个基本的行走空间。
2.7 一个简单空间
在启动世界编辑器之前,您需要告诉它在哪里可以找到特定项目的资源。
为此,打开bigworld/tools/worldeditor/paths.xml,并将FantasyDemo的引用替换到你自己的项目中。例如,
1 | <root> |
要创建一个简单的可导航的空间,请遵循以下步骤:
- 启动世界编辑器(bigworld/tools/ worlddeditor /worldeditor.exe)
- 在打开空间对话框中,单击create按钮
- 在New Space对话框中:
- Set the Space Name field to main.
- Set the Space Dimensions group box’s Width and Height fields to 5.
- Set the Default Terrain Texture field to a texture of your choosing.
- Click the Create button
新的空间主体将被创建并显示在世界编辑器中,保存并关闭编辑器。
2.8 第一次运行客户端
执行完本教程前几节中的步骤后,现在可以运行客户机了。为此,请使用前面创建的(参考2.2 run.bat)。你应该拥有一个能够使用鼠标控制朝向和方向键控制在空间中行走的第一人称玩家。