meta data for this page
  •  
此页面为历史归档分类,内容可能是过时的。

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
archive:developer:initial [2025/07/24 19:49] – 移除 - 外部编辑 (Unknown date) 127.0.0.1archive:developer:initial [2025/07/24 19:49] (当前版本) – ↷ 页面developer:initial被移动至archive:developer:initial bibiboxs
行 1: 行 1:
 +<markdown>
 +# 开发流程事项及问题解答
  
 +> 本文将为《沙盘引擎》模组的开发者进行前置介绍,建议开发前完整地阅读本文**至少一次**。
 +
 +**注意:该文档更多适用于作为《沙盘引擎》创意开发的人群,而非普通玩家**
 +
 +## 引擎分工机制
 +
 +《沙盘引擎》的纯净工程是一个自由且开放的“纯净世界”。具体世界机制怎样运行完全由开发者来设计与实现。
 +
 +引擎需要做好**功能预制平衡**工作 —— 哪些是引擎应该自带的,哪些是开发者应该自行实现的。
 +
 +**对于开发者,在设计之前需清楚,除去引擎自带的功能外,自己还需要做什么。**
 +
 +最终的平衡如下:
 +
 +| 内置实现           | 说明                                                         |
 +| ------------------ | ------------------------------------------------------------ |
 +| 基础世界观         | 引擎内预设了世界的组成元素,如地形、实体、载具、天气等。<br />(例如《我的世界》游戏内内可生成的怪物、动物等角色) |
 +| 联机功能           | 引擎实现了联机功能,并可被开发者灵活应用;单机与联机共用脚本逻辑 |
 +| 沙盘地图           | 通用的地图格式,基于此格式的地图都可被沙盘引擎加载<br />对于一些特定玩法的模组,自定义几个专用的游戏地图是有必要的<br />(例如生存游戏,考虑到玩法的体验,比如地图物资刷新点等,应该自定义或修改一个新的专用地图) |
 +| UI系统             | 沙盘引擎支持**FairyGUI**导入及脚本编辑使用<br />2D、3D或者玩家头顶的UI,均可用**所见即所得的界面工具**配合脚本快速成型Demo |
 +| 模型系统           | 体现于一切与【模型】有关的内容<br />例如角色的头、载具的车身车轮、物品系统的模型,都基于模型库(例如ID XXX = 某个东西)<br />沙盘引擎也**支持外部导入gltf格式**的通用模型 |
 +| 角色系统           | 角色为引擎内任何可见的生物(如人类、僵尸、怪物、动物等)<br />样式不同,但通用一套逻辑:例如执行事件或者AI寻路,都可通过API统一调用 |
 +| 载具系统           | 载具为引擎内任何可乘坐载具(如自行车、摩托、汽车、船、飞机、直升飞机)<br />**编写一个json文件**即可导入一辆载具;一辆车甚至可以无限地放置轮子、灯光等组件<br />也就是说,载具只是一类**指定模型装载了组件的可载人物理刚体,**<br />==沙盘引擎中预设了多类载具,拥有不同操作方式和AI算法,可以用于快速建立一个有趣的Demo== |
 +| 物品系统           | 物品表示引擎内角色可操作使用的任何物品(如水瓶、工具、枪类、武器等)<br />基于【已导入模型】进行扩展的物品导入是引擎支持的,只需要绑定一个`模型+Json`就可以导入一个物品<br />它们只是一些抽象的通用数据,可以很简单地为它们设定伤害、动作等属性配置<br />大部分物品没有内置功能,这个物品具体怎样使用,取决于脚本开发者的设计与实现<br />*(也许增加了开发难度,但可以让开发者实现更多自己的想法)*<br />==*(举例:一个修车的工具,一开始他只是一个扳手样式的物品,除了拥有“能挥动攻击”这种引擎内置的基础设定外,没有任何其他的功能;开发者可以设计为,通过判断焦点或距离的方式,选择是【使用】修复还是【按键】修复)*== |
 +| 火车系统           | 地图支持解析有关火车轨道及火车(抽象概念)的导入<br />火车轨道是编辑器内置的功能,负责记录并渲染火车轨道路径<br />**火车**是一个抽象概念,任何模型都可通过此系统被设定为一个“火车物体”,拥有火车的属性 |
 +| 拾取物系统         | 拾取物相当于一个简易的触发点,是一个默认可交互的“检查点”*(可参考GTA3系列的武器图标)*<br />拥有多个形态,如默认模型、光圈等方式,可以帮助开发者实现丢下、放置、拾取物品等功能 |
 +| 检查点系统         | 检查点表示一个圆形半径的范围检查点,当角色进入到范围内,会触发指定的事件(和拾取物类似,但范围更大)<br />拥有多个形态,如完全透明、半透明光圈等方式,可以帮助开发者实现范围表示、范围触发检测等功能<br />*此系统可参考GTA3系列的赛车检查点* |
 +| 故事系统           | 内置的故事剧情系统,可通过墨水语言等方式编写一个可被引擎识别的故事事件<br />同时引擎自带了可扩展的对话框和相关脚本事件,可以实现大多数类型的故事交互 |
 +| 声音管理           | 引擎支持导入外部常见格式(mp3\ogg)的音频文件,并在引擎内通过API简单使用<br />除了常规的播放音频外,还内置了播放音乐、环境声音,以及切换过渡的效果API |
 +| 视频管理           | 引擎允许导入外部视频文件,并作为`RendererTexture`的格式进行渲染<br />例如渲染到指定的UI界面、模型面上播放视频 |
 +| 镜头及后处理管理   | 在沙盘引擎主框架的相机视角下,允许快捷自定义角度、位置偏移、速度、旋转等多项属性<br />同时支持多数常用的后处理效果,只需要使用简单的API就可进行开启及调整 |
 +| 客户端及SDK        | 可在安全权限范围内调用有关客户端本地、Steamworks SDK相关的内容 |
 +| 地图编辑器(工具) | 引擎内置的地图编辑器,允许建立及导出沙盘引擎通用格式的地图文件 |
 +
 +| 开发者自行实现(案例) | 说明                                                         |
 +| ---------------------- | ------------------------------------------------------------ |
 +| 背包系统               | 这类系统可以使用`Character.Prop`**物品系统**作为底层数据交互,开发者要做的只是制作及绑定UI<br />然后在合适的事件更新背包数据及UI的交互即可,配合物品系统的导入注册,完全可实现较高自定义的背包及物品系统 |
 +| UI相关扩展系统         | 例如玩家状态信息、载具速度、油量系统等可使用`GUI+客户端脚本数据交互`的方式来实现 |
 +| 其他功能               | 基于目前设计框架下的沙盘引擎,大多数类型的玩法都可通过各种常规、扩展思维操作来实现<br />沙盘引擎已经在常规思维情况下敲定了框架,绝大多数玩法都可以实现,开发者要做的是提前规划好方法和扩展思维 |
 +
 +## 引擎运行流程
 +
 +![](asset:1678895296620.png)
 +*此**流程图**仅作入门参考理解使用,可能不具有实时性和完整权威性。*
 +
 +## 开发问题解答FAQ
 +> 常见一些可能存在的问题,或者避免风险大坑,可以提前了解确定
 +
 +### 是否可以高度自定义?
 +
 +答案是**可以**。
 +
 +《沙盘引擎》设计框架的初衷就是在容易、快速的基础上,可以进行客户端、世界玩法的高度自定义,也就是说默认原版模组并不会实现太多,更多逻辑功能会交给开发者来自行编写,同时编写难度会在一个容易到复杂难度之间平衡,既能尽可能高度自定义内容,又让代码方面尽可能的简单和快捷。
 +
 +**其中不乏包括UI界面(使用内置GUI或FairyGUI进行设计及绑定功能)、自定义外部资源(主要指音频、视频、图片、字体、模型等)。**
 +
 +
 +
 +### 是否可以联机?
 +
 +只要在正常及常规逻辑下编写脚本,世界脚本(WorldScript)设计初衷就是兼顾1~N人联机体验的,也就是所谓的单人模式就是1人的联机房间,所有的代码方式都是按照网络同步基础来写的。
 +
 +
 +
 +### 游戏编译或分发?
 +
 +在《沙盘引擎》衍生作品中,都是以“独立模组”的方式进行创作呈献的,所以并不牵扯到编译部分,更多只是Js脚本的动态执行。
 +
 +游戏分发时必须要附带原版的《沙盘引擎》本体,开发者可根据提供的命令行方式包装一份exe或者bat以来让玩家直接启动到模组(或有类似的.cfg启动配置)。
 +
 +常规情况下,基于《沙盘引擎》制作的衍生游戏\玩法模式,无需其他授权可直接进行发布(支持自定义内容不侵权情况下的商用行为)。
 +
 +**更多内容参考[《打包发布及分享》](developer/mod/build "《打包发布及分享》")。**
 +
 +
 +
 +
 +
 +
 +
 +
 +</markdown>