Skip to content

X-LIK Framework

What is X-LIK?

X-LIK is a Warcraft 3 map development framework that runs on the windows platform. It is dedicated to solving the problems found in the past, rationally optimising the design so as to get a better experience, it combines the running environment of all parties, and runs with a unique concept. Maintains as safe an environment as possible to maintain stability while the game is running and executing. It supports a more responsive and advanced hot update mechanism, improves all aspects of the testing process, and includes global code obfuscation encryption (even for Chinese), and new optimisations for sound effects and more. In terms of referencing resources, it has been fully optimised to more accurately alert users to resource abuse or missing resource references, and supports multiple path configurations to facilitate the introduction of external resources, native resources, and project resources. It also supports multiple path configurations to facilitate the introduction of external resources, native resources, and project resources. While realising advanced features, it still supports the experience of the past system.

x-lik

Getting the framework

x-lik Jade Edition (Completely open source, suitable for self-researchers like you)

::: Documents, tools, and dependent components Checking technical documentation is a great beginner's operation. The project already includes a directory of docs documents, which you can view directly or use Download EX Reader

Introducing dependencies into your project is a must, you can see it at GitHub#x-lik-vendor :::

Framework Structure

(*)Required

(~)Automatic

(·)Customize

text
├── projects - (~|-) used to place your map project directory, such as project_demo
│   └── project_demo -(-)
│       ├── assets - resource references
│       ├── slk - slk introduction
│       └── library (-) project sub-library
├── vendor -(-) tool resource directory, you can place assets/w3x2lni/we etc (or not of course)
│   ├── assets -(*|-) repository
│   │   ├── war3mapBgm - put music, only mp3, wav are supported.
│   │   ├── war3mapFont - put fonts, only support ttf (can be configured with lua)
│   │   ├── war3mapImage - put image, such as past lik icon, only support tga, blp
│   │   ├── war3MapLoading - Load image, only support single tga or rule combination tga.
│   │   ├── war3mapModel - Load model, only support mdx, don't throw in maps.
│   │   ├── war3mapModelNew - put new untested model, test it and then put it into war3mapModel (use command model -n to test)
│   │   ├── war3mapPreview - preview map, only support tga
│   │   ├── war3mapSelection - put selection circle, refer to the provided format
│   │   ├── war3mapTerrain - put terrain map, refer to the provided format, support tga and blp.
│   │   ├── war3mapTextures - Put model textures, only support blp.
│   │   ├── war3mapTexturesNew - put new untested model textures, put them into war3mapTextures after test (use command model -n to test)
│   │   ├── war3mapUI - put the UI package, there is a format reference.
│   │   ├── war3mapVoice - put vcm, v3d, vwp sound, only support mp3, wav
│   │   └── war3mapVwp - put weapon sound configuration, only support yaml
│   ├── w3x2lni - w3x2lni tool (v:2.7.2)
│   └── WE - New Horseman
├── env.yaml - (~|-) development environment configuration
├── xlik.exe - (*) command tool
└── .tmp - (~) cache

Installing Tools and Plug-ins

Programming Tools (For reference only, you can also ignore it and use other tools like golang, cursor, etc.)

IntelliJ IDEA Community Edition

Visual Studio Code

Plugin Recommendations

Optional plugin EmmyLua for Lua syntax support

Emmylua

Optional plugin Image Icon Viewer for directory thumbnail support

ImageIconViewer

Optional plugin Color Highlighter for color code highlighting support

ColorHighlighter

Optional plugin CSV Editor for optimized .csv file editing

CSVEditor

Optional plugin Markdown for optimized .md file editing

CSVEditor

Optional plugins such as CodeGeeX/TONGYILingma/MarsCode/Continue for AI code assistant assistance

CodeGeeX

TONGYILingma

MarsCode

Continue

Terminal operations

Open a terminal and go to the frame root directory

> cd ./x-lik

Create a new project

> xlik.exe new demo

Local debug, Test debug, Build debug with hot update

> xlik.exe run demo
> xlik.exe run demo -l
> xlik.exe run demo -t
> xlik.exe run demo -b

Managing Projects with the History Tool

You should use versioning code history management tools (Git, Svn, etc.) to manage your development projects.

You can use third-party hosting platforms (e.g., GitHub, GitLab, Gtiee, Bitbucket), or self-built (e.g., Gogs) management tools, and please at least use the tools locally to build a local version. No one knows when they're going to make a mistake.

Code history allows you to view every change, roll back versions, and back up results.

Compare the functional structure of lik

The more important or core changes are listed in the table below. For details of the changes in other parts, please refer to the code comments of each functional module.

Functional Modulelikxlik
exe command:newDepended vendor/lniNo more depend on vendors
exe command:runStart hot updates with -hThe new local mode
- l - t - b mode supports hot updates
assets/war3mapSoundHasrevoke
assets/war3mapBgmNoneNew sound module, specialised in BGM, now supports wav music
assets/war3mapFontFont data cannot be configuredModule optimised to use lua to configure font data
assets/war3mapImageOld module for assets/war3mapIcon for iconsModule optimised to be a generic image resource, now supports blp images
assets/war3mapModelNew
assets/war3mapTexturesNew
NoneNew new module to replace assetsNew
assets/war3mapTerrainNoneNew terrain mapping module, specialising in terrain 16 maps, cliffs 2 maps
assets/war3mapVoiceNoneNew sound module, dedicated to sound effects, resource files have been merged and optimised, now supports wav music!
assets/war3mapVwpNoneNew weapon sound configuration module to configure weapon hit sounds in yaml
library/ability/crackFlyFrequency parameter is not supportedSupport frequency parameter
library/ability/leapShake parameter is supportedNo longer support shake parameter
No longer support frequency parameter
library/ability/missileShake parameter is supportedNo longer support shake parameter
Support twist parameter
Support frequency parameter
library/ability/serpentineNoneNew
library/classProp mechanism
different class confusion
index+Class
Meta Class
UI Class
Vast Class
library/class/meta/processConfiguring process functionsDefine procedure functions, no longer configuration
library/class/meta/uiKitConfiguring process functionsDefine procedure functions, no longer configuration
library/commonManaging common functionsManage more general functions
library/common/effectorManaging effects by EffectEffect revoke
New effector
library/foundationHasrevoke
Some functions moved to common
library/japiHassuper api
library/encryptConfigured in jsonConfigured in yaml only some versions are supported
envConfigured in iniConfigured in yaml
Support for tool path configuration
vendorCore componentNo longer a core component, optional dependencies

Comparison of various performance tests

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.