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.
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
├── 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.)
Plugin Recommendations
Optional plugin EmmyLua for Lua syntax support
Optional plugin Image Icon Viewer for directory thumbnail support
Optional plugin Color Highlighter for color code highlighting support
Optional plugin CSV Editor for optimized .csv file editing
Optional plugin Markdown for optimized .md file editing
Optional plugins such as CodeGeeX/TONGYILingma/MarsCode/Continue for AI code assistant assistance
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 Module | lik | xlik |
---|---|---|
exe command:new | Depended vendor/lni | No more depend on vendors |
exe command:run | Start hot updates with -h | The new local mode - l - t - b mode supports hot updates |
Has | revoke | |
assets/war3mapBgm | None | New sound module, specialised in BGM, now supports wav music |
assets/war3mapFont | Font data cannot be configured | Module optimised to use lua to configure font data |
assets/war3mapImage | Old module for assets/war3mapIcon for icons | Module optimised to be a generic image resource, now supports blp images |
assets/war3mapModelNew assets/war3mapTexturesNew | None | New new module to replace assetsNew |
assets/war3mapTerrain | None | New terrain mapping module, specialising in terrain 16 maps, cliffs 2 maps |
assets/war3mapVoice | None | New sound module, dedicated to sound effects, resource files have been merged and optimised, now supports wav music! |
assets/war3mapVwp | None | New weapon sound configuration module to configure weapon hit sounds in yaml |
library/ability/crackFly | Frequency parameter is not supported | Support frequency parameter |
library/ability/leap | Shake parameter is supported | No longer support shake parameter No longer support frequency parameter |
library/ability/missile | Shake parameter is supported | No longer support shake parameter Support twist parameter Support frequency parameter |
library/ability/serpentine | None | New |
library/class | Prop mechanism different class confusion | index+Class Meta Class UI Class Vast Class |
library/class/meta/process | Configuring process functions | Define procedure functions, no longer configuration |
library/class/meta/uiKit | Configuring process functions | Define procedure functions, no longer configuration |
library/common | Managing common functions | Manage more general functions |
library/common/effector | Managing effects by Effect | Effect revoke New effector |
library/foundation | Has | revoke Some functions moved to common |
library/japi | Has | super api |
library/encrypt | Configured in json | Configured in yaml only some versions are supported |
env | Configured in ini | Configured in yaml Support for tool path configuration |
vendor | Core component | No longer a core component, optional dependencies |
Comparison of various performance tests
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% |