项目介绍#
soloAS 是一个为设计而生的 Unreal 脚本系统。它以原版引擎插件的形式提供 AngelScript 脚本支持,无需修改引擎代码,却也能拥有优秀的开发体验。
为什么有这个项目#
- 蓝图不适合写复杂逻辑,C++ 开发迭代慢,需要一门文本脚本语言。AngelScript 是目前综合体验极好、和 C++ 亲和度很高的脚本语言:既能以字节码运行,也能转成 C++,性能也十分不错。
- 原有方案需要编译修改过的 UE 引擎,搭环境麻烦,和别人协作更麻烦;即使编译了一次,也会因为更新而烦。特别是小团队,少维护一份引擎 fork,可以省下很多时间。
- 如果一直只有引擎 fork 版本,社区就扩大不了,无法让更多开发者用上这套好的开发体验。
- 部分功能缺失,例如 UE 接口没有提供给脚本,会带来大量适配问题。这是技术选择问题,没有对错。但很多功能都是有总比没有好,特别是对于想利用各种外部插件的人来说,适配度很重要,所以,此项目甚至做了 AS 继承蓝图的功能(待发布)。
- AI 时代需要把功能模块化,便于把任务分给 AI,所以需要像 Mod 一样可以动态插拔的模块。AS 这种脚本语言能轻松改造,就十分适合在 UE 原本体系上做这些拓展。
- 尽可能自动地把更多的 C++ API 绑定给 AngelScript。AS 可以走得更底层一点,业务上就可以少用 C++;越少用 C++,迭代越快。
- 打包等流程也要像流水线一样自动化,特别是把 AS 转为 C++ 编译、大幅提升性能的那一套流程。
- 充分利用 AI 的能力,给 AI 足够好的脚手架。AS 代码很像 C++,只要给足够好的 API 文档和纠错机制,AI 就能轻松知道如何编写 AS 代码。
项目架构#
插件架构#
各插件都依赖核心,彼此独立;扩展和工具通过核心提供的扩展点接入。虚线框标「待发布」的尚未发布,实线框的已发布。
功能模组在哪一层(待发布)#
功能模组位于最上层:可以依赖游戏项目、Game Feature Plugin 和其他功能模组,反过来它们都不能依赖功能模组。
设计取舍#
不需要某项功能时,不启用对应插件,几乎没有开销;需要时随时都能插上,立等可用。