Skip to content

X-LIK 框架 ​

X-LIK 是什么?

X-LIK 是一个魔兽争霸3地图开发框架,可在 windows 平台上运行。它致力于解决过去中发现的问题,合理地优化设计从而得到更优质的体验,它结合了各方运行环境,以独特的概念运行。在游戏运行执行时,尽可能地维持安全的环境,保持稳定。支持更灵敏先进的热更新机制,完善测试流程的各个方面,并包含全局代码混淆加密(甚至是中文),并对音效等进行了全新优化。在引用资源方面更是得到了全面的优化,能更加准确提示用户资源滥用或是资源引用的缺失,更支持多种路径的配置方便外部资源、原生资源、项目资源的引入。在实现高级功能的同时,依然包容支持过去制式的体验。

x-lik

获取框架 ​

GitHub/x-lik-jade 璞玉版(完全开源,适合自研型的你)

文档、工具、依赖组件

查阅技术文档是入门的正经操作,项目内已包含docs文档目录,你可以直接查看也可以 下载EX阅读器

你也可以浏览 框架开源技术分析wiki 了解更多的结构设计。

在项目中引入依赖是必备的操作,你可以查看 GitHub/x-lik/vendor

框架结构 ​

(*)Required 必要性,丢失崩溃

(~)Automatic 临时性,缺少自动构建

(·)Customize 自定义,按需构建

text
├── 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 -(~)缓存

安装工具及插件 ​

推荐使用编码工具

GoLand

Visual Studio Code

你亦可以使用其他工具如 IDEA、void、cursor 等工具

IntelliJ IDEA Community Edition

Void editor

Cursor

插件安装(以jetbrains系列为例) ​

可选插件 EmmyLua,获得lua语法支持

Emmylua

可选插件 Image Icon Viewer,获得目录略缩图支持

ImageIconViewer

可选插件 Color Highlighter,获得颜色代码高亮支持

ColorHighlighter

可选插件 CSV Editor,获得.csv文件编辑优化

CSVEditor

可选插件 Markdown,获得.md文件编辑优化

CSVEditor

可选插件 CodeGeeX/TONGYILingma/Trae/Continue 等,获得代码AI助手协助

CodeGeeX

TONGYILingma

TraeAI

Continue

终端操作 ​

打开终端并进入框架根

> 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)管理工具,请至少在本地使用工具构建本地版本。 人无远虑必有近忧,没有人会知道自己什么时候会犯错。代码历史可让你查看每一次的修改,回滚版本、备份成果。

分享仓库 ​

欢迎提交你的PR,与他人分享你的智慧:访问仓库 share-collection

对比lik功能结构 ​

下面将以表格列出比较重要或核心的改动。其他部分的细节改动,具体请浏览各个功能模块的代码注释。

功能模块likxlik
命令exe:new依赖vendor/lni不再依赖vendor
命令exe:run以-h启动热更新新的本地模式
-l -t -b 模式都支持热更
assets/war3mapSound存在此模块废弃
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/classprop机制
不同类混乱
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配置仅支持部分版本
envini配置文件yaml配置文件
支持工具路径配置
vendor核心部分不再为核心部分,可选依赖

各项测试 ​

likx-lik比率变化
array create[100000]0.787 sec0.181 sec23.0%-77.0%
effect create[10000]1.034 sec0.137 sec13.2%-86.8%
Unit create[10000]55.913 sec10.726 sec19.2%-80.8%
Item create[10000]11.682 sec7.625 sec65.3%-34.7%
Ability create[10000]5.005 sec0.221 sec4.42%-95.6%
Timer[100000*3]14.250 sec0.804 sec5.64%-94.4%
Buff[100000]11.025 sec3.147 sec28.5%-71.5%
attr defend modify[100000]1.653 sec0.958 sec58.0%-42.0%
attr attack modify[100000]1.667 sec1.026 sec61.5%-38.5%
attr exp modify[100000]8.905 sec1.347 sec15.1%-84.9%
ConvertWorldPosition[100000]4.057 sec1.775 sec43.8%-56.2%
UI Event register[100000]3.941 sec3.014 sec76.5%-23.5%
encrypt17.925 sec9.474 sec52.9%-47.1%
missile shoot[150]57.3 frames63.4 frames110.6%+10.6%
missile shoot[300]23.1 frames62.3 frames269.7%+169.7%
missile shoot[500]7.8 frames57.2 frames733.3%+633.3%
missile shoot[750]2.7 frames55.3 frames2048.1%+1948.1%
missile shoot[1000]0.5 frames54.1 frames10820.0%+10720.0%
orderRoute at 50frames250 units500 units200.0%+100.0%

All publicly available technologies are released under the AGPL3 licence.