X-LIK 框架
X-LIK 是什么?
X-LIK 是一个魔兽争霸3地图开发框架,可在 windows 平台上运行。它致力于解决过去中发现的问题,合理地优化设计从而得到更优质的体验,它结合了各方运行环境,以独特的概念运行。在游戏运行执行时,尽可能地维持安全的环境,保持稳定。支持更灵敏先进的热更新机制,完善测试流程的各个方面,并包含全局代码混淆加密(甚至是中文),并对音效等进行了全新优化。在引用资源方面更是得到了全面的优化,能更加准确提示用户资源滥用或是资源引用的缺失,更支持多种路径的配置方便外部资源、原生资源、项目资源的引入。在实现高级功能的同时,依然包容支持过去制式的体验。
获取框架
框架结构
(*)Required 必要性,丢失崩溃
(~)Automatic 临时性,缺少自动构建
(·)Customize 自定义,按需构建
├── projects -(~|·)用来放置你的地图项目目录,如 project_demo
│ └── project_demo -(·)
│ ├── assets - 资源引用
│ ├── slk - slk引入
│ └── library(·)项目子库
├── vendor -(·)工具资源目录,你可以放置assets/w3x2lni/we等(当然也可以不放)
│ ├── assets -(*|·)资源库
│ │ ├── war3mapBgm - 放音乐,只支持 mp3、wav
│ │ ├── war3mapFont - 放字体,只支持 ttf(可搭配lua配置)
│ │ ├── war3mapImage - 放图片,如过去lik的图标,只支持 tga、blp
│ │ ├── war3MapLoading - 载入图,只支持单图 tga 或 规则组合 tga
│ │ ├── war3mapModel - 放模型,只支持 mdx,贴图不要扔进来
│ │ ├── war3mapModelNew - 放新的未测试模型,测试完成后再放入war3mapModel(使用命令model -n测试)
│ │ ├── war3mapPreview - 预览图,只支持 tga
│ │ ├── war3mapSelection - 放选择圈,参考已提供格式
│ │ ├── war3mapTerrain - 放地形贴图,参考已提供格式,支持 tga、blp
│ │ ├── war3mapTextures - 放模型贴图,只支持 blp
│ │ ├── war3mapTexturesNew - 放新的未测试模型贴图,测试完成后再放入war3mapTextures(使用命令model -n测试)
│ │ ├── war3mapUI - 放UI套件,已有格式参考
│ │ ├── war3mapVoice - 放vcm、v3d、vwp音效,只支持 mp3、wav
│ │ └── war3mapVwp - 放武器音效配置,只支持 yaml
│ ├── w3x2lni - w3x2lni工具(v:2.7.2)
│ └── WE - 新马仔
├── env.yaml -(~|·)开发环境配置
├── xlik.exe -(*)命令工具
└── .tmp -(~)缓存
安装工具及插件
使用编码工具(仅作参考之用,你亦可以使用其他工具如golang、cursor等工具)
插件安装
可选插件 EmmyLua,获得lua语法支持
可选插件 Image Icon Viewer,获得目录略缩图支持
可选插件 Color Highlighter,获得颜色代码高亮支持
可选插件 CSV Editor,获得.csv文件编辑优化
可选插件 Markdown,获得.md文件编辑优化
可选插件 CodeGeeX/TONGYILingma/MarsCode/Continue 等,获得代码AI助手协助
终端操作
打开终端并进入框架根
> cd ./x-lik
创建新项目
> xlik.exe new demo
本地调试、测试调试、构建调试
> xlik.exe run demo
> xlik.exe run demo -l
> xlik.exe run demo -t
> xlik.exe run demo -b
使用历史工具管理项目
你应该使用版本代码历史管理工具(Git、Svn等)来管理你的开发项目。 你可以使用第三方的托管平台(如GitHub、GitLab、Gtiee、Bitbucket),或自建(如Gogs)管理工具,请至少在本地使用工具构建本地版本。 人无远虑必有近忧,没有人会知道自己什么时候会犯错。代码历史可让你查看每一次的修改,回滚版本、备份成果。
对比lik功能结构
下面将以表格列出比较重要或核心的改动。其他部分的细节改动,具体请浏览各个功能模块的代码注释。
功能模块 | lik | xlik |
---|---|---|
命令exe:new | 依赖vendor/lni | 不再依赖vendor |
命令exe:run | 以-h启动热更新 | 新的本地模式 -l -t -b 模式都支持热更 |
存在此模块 | 废弃 | |
assets/war3mapBgm | 无 | 新的声音模块,专门处理BGM,现支持wav音乐 |
assets/war3mapFont | 不能配置字体数据 | 模块得到优化,可使用lua配置字体数据 |
assets/war3mapImage | 旧模块为assets/war3mapIcon用于图标 | 模块得到优化,变为通用的图片资源,现支持blp图片 |
assets/war3mapModelNew assets/war3mapTexturesNew | 无 | 新的new模块,用于代替assetsNew |
assets/war3mapTerrain | 无 | 新的地形贴图模块,专门处理地形16个贴图,悬崖2个贴图 |
assets/war3mapVoice | 无 | 新的声音模块,专门处理音效,资源文件得到合并与优化,现支持wav音乐 |
assets/war3mapVwp | 无 | 新的武器音配置模块,以yaml配置武器击打声音 |
library/ability/crackFly | 不支持frequency参数 | 支持frequency参数 |
library/ability/leap | 支持shake参数 | 不再支持shake参数 支持frequency参数 |
library/ability/missile | 支持shake参数 | 不再支持shake参数 支持twist参数 支持frequency参数 |
library/ability/serpentine | 无 | 新的技能 |
library/class | prop机制 不同类混乱 | index+类别机制 Meta类 UI类 Vast类 |
library/class/meta/process | 配置过程函数 | 定义过程函数,而不再是配置 |
library/class/meta/uiKit | 配置过程函数 | 定义过程函数,而不再是配置 |
library/common | 管理通用功能 | 管理更多的通用功能 |
library/common/effector | 由Effect管理特效 | 废弃Effect 由effector全权管理 |
library/foundation | 存在此模块 | 废弃 部分功能移至common |
library/japi | 存在此模块 | 更精练的Api |
library/encrypt | 以json配置 | 以yaml配置仅支持部分版本 |
env | ini配置文件 | yaml配置文件 支持工具路径配置 |
vendor | 核心部分 | 不再为核心部分,可选依赖 |
各项测试
lik | x-lik | 比率 | 变化 | |
---|---|---|---|---|
array create[100000] | 0.787 sec | 0.181 sec | 23.0% | -77.0% |
effect create[10000] | 1.034 sec | 0.137 sec | 13.2% | -86.8% |
Unit create[10000] | 55.913 sec | 10.726 sec | 19.2% | -80.8% |
Item create[10000] | 11.682 sec | 7.625 sec | 65.3% | -34.7% |
Ability create[10000] | 5.005 sec | 0.221 sec | 4.42% | -95.6% |
Timer[100000*3] | 14.250 sec | 0.804 sec | 5.64% | -94.4% |
Buff[100000] | 11.025 sec | 3.147 sec | 28.5% | -71.5% |
attr defend modify[100000] | 1.653 sec | 0.958 sec | 58.0% | -42.0% |
attr attack modify[100000] | 1.667 sec | 1.026 sec | 61.5% | -38.5% |
attr exp modify[100000] | 8.905 sec | 1.347 sec | 15.1% | -84.9% |
ConvertWorldPosition[100000] | 4.057 sec | 1.775 sec | 43.8% | -56.2% |
UI Event register[100000] | 3.941 sec | 3.014 sec | 76.5% | -23.5% |
encrypt | 17.925 sec | 9.474 sec | 52.9% | -47.1% |
missile shoot[150] | 57.3 frames | 63.4 frames | 110.6% | +10.6% |
missile shoot[300] | 23.1 frames | 62.3 frames | 269.7% | +169.7% |
missile shoot[500] | 7.8 frames | 57.2 frames | 733.3% | +633.3% |
missile shoot[750] | 2.7 frames | 55.3 frames | 2048.1% | +1948.1% |
missile shoot[1000] | 0.5 frames | 54.1 frames | 10820.0% | +10720.0% |
orderRoute at 50frames | 250 units | 500 units | 200.0% | +100.0% |