Update doc. Split project part. 1

* Update doc. Still not the final version.
* Splite original Viewer into independent Decorator and Viewer project.
This commit is contained in:
2021-09-08 21:28:09 +08:00
parent 2b20f280eb
commit 60930da54c
12 changed files with 261 additions and 131 deletions

View File

@ -1,20 +1,66 @@
# 编译与调试
# 编译
本文档将指导您编译或调试`SuperScriptMaterializer`
本文档将指导您编译或调试`SuperScriptMaterializer`以及对`SuperScriptViewer`的编译。
## 需求
## SuperScriptMaterializer
- Visual Studio 2010即VC++ v100的工具集不能使用Virtools 2015及以上版本进行编译在编译Virtools 5.0 Standalone版本的时候亲测会出错且无法解决
### 需求
- Visual Studio 2010即VC++ v100的工具集不能使用Virtools 2015及以上版本进行编译在编译Virtools 5.0 Standalone版本的时候亲测会出错且无法解决但对于其他版本您可以尝试使用高版本的工具集进行编译
- Virtools SDK 或 Ballance Mod Loader如果以Virtools 2.1作为目标)
- SQlite SDK
- Python 3.x
## 编译之前
### 编译之前
编译之前,您需要先进入项目根目录下在此处打开终端我们首先需要生成编译的参数。自上一个版本以来我们将编译时需要的一些参数全部转为Visual Studio可识别的宏定义在独立的`Virtools.props`中,此步操作便是生成这个文件,以确定编译文件的相关参数
编译之前,对于SQLite SDK您可以从[sqlite.org](http://www.sqlite.org/)下载然后使用Visual C++的工具集执行`LIB /DEF:sqlite3.def /machine:IX86`以获取可以用于编译文件。
按如下格式运行指令
然后您需要先进入项目根目录下在此处打开终端我们首先需要生成编译的参数。自上一个版本以来我们将编译时需要的一些参数全部转为Visual Studio可识别的宏定义在独立的`Virtools.props`中,此步操作便是生成这个文件,以确定编译文件的相关参数。
按如下格式运行指令:
```
python3 mk_materializer_cfg.py [plugin|standalone] [21|25|35|40|50] [virtools_root_path] [sqlite_header] [sqlite_lib] [sqlite attach ref] [bml path]
```
每一项参数的含义:
* `[plugin|standalone]`:编译为插件还是独立程序
* `[21|25|35|40|50]`Virtools版本
* `[virtools_root_path]`Virtools Dev的根目录用于Virtools SDK的头文件链接库的寻找也决定程序编译后的输出位置
* `[sqlite_header]`SQlite头文件路径
* `[sqlite_lib]`SQlite链接库的路径用于找到下一项
* `[sqlite attach ref]`SQlite链接库通常来说是`sqlite3.lib`
* `[bml path]`BML的路径只有在以Virtools 2.1为目标编译时才有用
以下是一些指令示例:
```
python3 .\mk_materializer_cfg.py plugin 50 "E:\Virtools\Virtools Dev 5.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
python3 .\mk_materializer_cfg.py standalone 50 "E:\Virtools\Virtools Dev 5.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
python3 .\mk_materializer_cfg.py plugin 40 "E:\Virtools\Virtools Dev 4.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
python3 .\mk_materializer_cfg.py standalone 40 "E:\Virtools\Virtools Dev 4.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
python3 .\mk_materializer_cfg.py plugin 35 "E:\Virtools\Virtools Dev 3.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
python3 .\mk_materializer_cfg.py standalone 35 "E:\Virtools\Virtools Dev 3.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
python3 .\mk_materializer_cfg.py standalone 25 "E:\Virtools\Virtools Dev 2.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
python3 .\mk_materializer_cfg.py standalone 21 "E:\Virtools\Virtools Dev 2.1" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader"
```
### 编译
使用`Visual Studio`打开`SuperScriptMaterializer.sln`,选择`SuperScriptMaterializer`工程。然后选择编译模式Debug或Release然后编译即可基本上只要配置无误编译会很快完成
## SuperScriptViewer
### 需求
* Node.js
* gulp
* gulp插件待补充
### 编译
`SuperScriptViewer`本身分为2个部分由Python配合Flask所写的后端以及前端。后端无需编译而前端需要通过**gulp**进行操作,以减少文档本身的大小,进而减小传输开销。
编译的方法很简单,在`Viewer`目录下执行`gulp xxxx`即可让gulp自动完成相关操作。

View File

@ -0,0 +1,27 @@
# 部署
本文档将指导您部署属于您的`SuperScriptMaterializer`。它可以让您摆脱Virtools的限制在所有平台上都可以浏览到Virtools的脚本。您需要先了解README中标准的操作方式然后我们会根据部署的一些特殊性对标准步骤进行修改。
## 导出脚本
首先我们需要使用`SuperScriptMaterializer`将我们需要查看的脚本导出。众所周知Virtools各个版本之间的兼容性很差为一个版本的所作的文档可能在另一个版本中就无法打开或者是丢失相关的Building Block因此首先您需要根据您所需要查看的Virtools文件的对应版本来选取合适版本的插件这样可以获得更好的导出效果因为一旦文档中出现一些Building Block丢失之类的错误那么Virtools会让一些本可读的字段变成完全不可读的Binary格式。这也是我们的`Materializer`提供如此多版本选项的原因,为的是让每一份可能的文档都可以被正确地加载。
此外如果您遇到了NMS文件那么您可能需要使用Virtools创作环境并配合插件模式的`Materializer`来导出通过新建一个随意物件然后让脚本加载在其上进而导出。您可能无法在NMS文件上使用独立模式的`Materializer`因为它没有办法识别NMS文件。
当然您如果遇到了很多文件的情况您可以将需要的文件放在一起然后编写一个Shell脚本然后使用独立模式的`Materializer`来进行批量导出如果可以的话。这是一个针对Ballance游戏所有文件的脚本导出的Shell脚本和其生成器的示例可供您参考。
// todo: 贴上链接
如果您有来自不同Virtools版本您需要分别用对应的导出器进行导出然后将他们整理归类以供下一级的输入。无需担心不同版本的Virtools导出会导致错误`Decorator`会正确处理它们。
## 分析脚本
您需要准备好`SuperScriptDecorator`,和一份`import.txt`。正如标准操作方式中所言,您需要把需要综合的所有的导出数据库及各个文件的名字写入`import.txt`。我的操作是在上一步生成批处理的时候一并生成`import.txt`,因为它们之间联系很紧密。当然,您完全手写`import.txt`也是可以的。在完成之后,与标准操作方式内所述一致,直接运行即可。分析脚本的时间与您输入的脚本的数量和脚本的复杂度相关。
## 发布脚本
分析脚本完成后,我们就该将数据输入到`SuperScriptViewer`中了。与普通运行方式不同我们需要以非调试模式启动Flask部署后端并同时完成前端部署。您可以参阅[Flask部署文档](https://flask.palletsprojects.com/en/2.0.x/deploying/)来根据您的情况来进行选择。
我所作的Ballance脚本展示网页使用Gunicorn部署指令是`gunicorn ServerCore:app`,其中唯一需要注意的是`ServerCore:app`这个程序入口点在您选择不同于我的部署方式时这个入口点将不会改变。与此同时我使用Nginx做了反向代理具体配置可参考这里
// todo: 贴上链接