1、魔兽地图编辑器Lua作图教程5:X-LIK框架①概述.webp

一、什么是X-LIK框架

X-LIK 是来自阿魂小站的一个魔兽争霸3地图开发框架,可在 windows 平台上运行。

它提供一套完整的War3地图开发框架(xlik-sdk),通过声明式配置简化地图开发流程,支持资源管理和自动化构建,实现核心功能与项目特定功能的解耦。

最宝贵的是这个框架项目里提供了很多markdown文档和演示地图,无疑是黑夜里的一盏明灯。

当然也有视频资源:bilibili火魂侠的X-LIK系列教程


二、核心功能

  • 资源管理:

支持多种游戏资源(音乐、字体、图片、模型等)
提供资源测试和验证机制
自动资源加载和路径管理

  • 脚本系统:

无require的自动加载机制
全局定义和流程代码分离
支持脚本执行顺序控制

  • 扩展架构:

主核心库(library)提供基础功能
项目子库(project/library)支持定制扩展
模块化设计(UI、技能、类系统等)

三、框架获取

点击跳转以下地址,可以通过Git clone获取,也可以直接下载zip文件解压后使用
https://gitee.com/xlik-tutorial/xlik-sdk

四、使用前的准备工作

1、安装Visual Studio Code,并安装官网推荐插件,如Emmylua、Color Highlight等

2、双击xlik.exe会生成env.yaml文件

3、配置env.yaml文件中的魔兽争霸3客户端文件路径。这里要注意路径里不使用\,而是使用/。如:

# 魔兽争霸3客户端文件路径
# Warcraft 3 client file path
war3: "F:/Warcraft III Frozen Throne"

4、修改env.yaml文件中assets资源目录路径。这个文件夹目前位于vendor文件夹下。所以路径要改成:

# assets资源目录
# assets resource directory
assets: "vendor/assets"

5、使用VS code打开xlik-sdk的项目文件夹

五、X-LIK框架的学习之旅

(一)熟悉终端命令

1、新建lua项目

点击VS code菜单终端——新建终端——输入:.\xlik.exe new mylua。注意这里mylua可以自定义名称。

恭喜你!你已经新建了一张空白地图,你可以做左侧资源管理器里的project目录下看到mylua的文件夹。

2、使用we编辑地图信息

继续在终端里输入.\xlik.exe we mylua,可以打开we编辑器对地图进行编辑。

这里的we编辑器使用的是vendor目录的WE编辑器。建议不要折腾怎么换编辑器,直接用完事。

3、使用run运行地图

继续在终端里输入.\xlik.exe run mylua,可以打开魔兽测试地图。

注意,如果输入命令后,魔兽窗口一闪而过,多半是魔兽客户端有问题,推荐重下载阿魂小站推荐的纯净版。

(二)下载演示项目

一共有四个演示项目,其中Gitee有3个,分别是xlik-defence(防守)、xlik-tower(塔防)、xlik-demo(tpl和process演示),Github有1个,demo-retro(SLK演示)。

火魂侠目前在B站有详细视频教程,这里就不赘述了。

(三)熟悉框架结构

框架里已经有了详细md介绍。这里主要想说的是,一般不改动library核心文件夹里的代码。主要的增删改在projects项目文件夹。

└── project_demo - 项目目录
    ├── assets - 项目资源引入, 必须写在此名字目录下,不要把流程代码写里面
    ├── slk - slk物编配置引入, 必须写在此名字目录下,不要把流程代码写里面
    ├── scripts - 项目脚本代码,必须写在此名字目录下
    │   ├── globals - 全局定义(仅供参考)
    │   │    ├── setup - 用于定义游戏设定(仅供参考)
    │   │    ├── tpl - 用于建立对象模版(仅供参考)
    │   └── process - 项目流程代码,流程以 start 开始
    ├── library -(·)局部子核心库(只编写对核心库的自定义拓展,文件对应结构须与全局library一致)
    │   └── encrypt.yaml -(·)混淆规则
    └── w3x - 地图文件(没事别乱改,使用we命令修改参数,保存后自动生成备份)
        ├── resource - 地图独立资源(原始资源载入方式)
        ├── map - 地图lni(不要轻易改,除非你懂)
        ├── table - ini式的物编(不要改,不搭理物编)
        └── war3mapMap.blp - 略缩图(不用改)