• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[General] Wold Editor team development experience

Status
Not open for further replies.
Level 2
Joined
Jun 25, 2019
Messages
5
Hello everyone. Recently I wanted to do with something using World Editor. Also there were guys who wanted to help me in parallel. But only one person can do some work on the map at the some moment.
=> we have couple of huge disadvantages:

  • It's not convinient to exchange the map. We need to upload it to somewhere and share the link;
  • It's hard to check and to track the changes of each other, for instance, if someone changed only title of an ability I have to download whole map anyway (who knows maybe it was changed something else and this person forgon to tell about it) => it's easy to lose some changes what can lead to unexpected bugs and etc;
  • It's hard to support huge tons of text in one style, i.e. if you have combining item and you want to include the total price to the description you hardcode these values and you have to update it manually each time you change the actual price of the item => you also need to update descriptions of consuming items. I'd wanted to have whole control on item/ability/hero/etc descriptions to use some variables dynamically;
  • It's not possible to work parallelly. For instance, Someone could work on script files and anotherone could work on unit balances and third one could work on map relief/decorations but if we use single map we have to wait until current developer finish the work;
  • Versioning problem.
I think this list can be extended but it's enough to show several disadvantages why it's hard.

After my thinks I tried to do research to find best practices and ways how to improve this process.

In software develpment world we use control version systems like git and remote repositories like github. I suppose in game dev it's the same.

Ok, we could use git to keep in track the map changes and commit new ones and github to share it.
But map is archive file. We can not see visual changes of some text data/code/constants and etc.
We just see that the archive is changed.

As known war3 map is archive (MPQ berofe Warcraft III 1.30 and CASC since Warcraft III 1.30)
which can be explored using following tools:

For MPQ: MPQ Archives - Downloads
For CASC: Casc Storages - Main page

Let's consider MPQEditor tool. It have both UI and console API.
Console API is more interesting for me as I want to improve development process.

It has following common commands: New, Open, Add, Rename, Move, Delete, Flush, Close

You can become acquainted with it here: ChiefOfGxBxL/Ice-Sickle or even using console API. If you run MPQEditor.exe with the /console flag you can type help in the newly opened console window to get a list of all commands. After, for instance, type "help new" to see description of specified command.

So, using these commands we could write some scripts to parse archive files and build new archives based on work files.
We could save pices of our map in some git repository and keep working on it using CVS.
But only some pices could be open in text editors.
For instance, script files could be used easily.

As result we could make changes in particular files, commit it, track changes, work parallelly.
Archive structure I explored here:

Guide - Explanation of W3M and W3X Files
If you know more suitable article please provide it.

What's related to scripts I'd say that JASS is not so convenient language as I expected. vJASS improves a lot of things but it still has a lot of problems.

Recently I found that Lua can be used as scripting language for war3 maps. It was surprise for me and I'm not familiar with all details and restrictions but this fact is awesome.
I don't intend to start holywar but I'd say that Lua is more convinient that vJASS.
Plus Lua has a lot of plugins (for instance, EmmyLua) for powerful programming IDEs like IntelliJ IDEA.

Also I found topic for vscode extension which is Warcraft III map development tool set of Lua.
A Warcraft III map development tool set of Lua for vscode
I want to pay respect the author. It's very awesome.

Here is another examples:
Lua VSCode Integration
Lua API - WarCraft 3 / Модмейкинг - XGM: eXtreme Gamedev & Modmaking

If Lua quick start I found following articles:
JNGP Lua Edition - Combining JASS/vJass/Lua
Lua Object Generation
Ceres - a WC3 build tool for Lua maps

Moreover I saw a lot of content/articles/tools but unfortunately it was in China without translation.

Here I collected my thought and investigation results.
I'm sure it's small part of knowledge related to development processes in world editor.

Could you please share your own experience of this area ? Maybe additional article, tools, puglins, scripts, technics, approaces, your own experience, thoughts.

Also it's important to indicate compatible version of Warcraft III. Whether it's for 1.26 or for > 1.26.

BTW
Can I calmly use Lua in Warcraft III 1.26. Which problems can I face?
 
Last edited:
Level 39
Joined
Feb 27, 2007
Messages
5,013
Honestly I didn’t read all you wrote in great detail, but it sounds to me like you need to be using Wurst to build your map. As I understand it allows you to build your map as if it was a github project with assets (in addition to being its own scripting language).

@Frotty or @Cokemonkey11 can provide more information.
 
Last edited:

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,198
Can I calmly use Lua in Warcraft III 1.26. Which problems can I face?
All problems. 1.26 does not support Lua at all. Only Warcraft III 1.31.0 and later supports Lua. This is why one should not be silly and use old versions.

In software develpment world we use control version systems like git and remote repositories like github. I suppose in game dev it's the same.
And you can in Warcraft III as well thanks to a Chinese tool called W3x2Lni. All one has to do is update it to be 1.31.1 compatible and then one can convert maps to a pure textual and separate file format and hence a format which GIT and SVN can manager.
 

Cokemonkey11

Spell Reviewer
Level 29
Joined
May 9, 2006
Messages
3,534
I heard that wc3 world editor will some day support an editing experience with source files unarchived until packing/release.

Anyway, yes, you can already use wurstscript.

- It supports defining units at compiletime Cokemonkey11/the-gorge
- It supports *some* map metadata at compiletime WurstScript • wurst.build file
- All the map script is versioned in filesystem Cokemonkey11/the-gorge
- Check in a map base file - wurst build process performs a copy operation before compiling. There is no mutation of he source mapfile - so it's effectively just for terrain and doodads

WurstScript • Home

Good luck
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,198
Then that may already be good enough for use with a git repository
Yes and no. The issue being that the files are still binary and git is not very good with binary files as it cannot diff them for more efficient change storage resulting in repositories which bloat fast.

This is an issue tools like W3x2Lni promise to solve since in Lni form it converts many of the binary formats into text files which Git, SVN and the like can natively diff.
 
Status
Not open for further replies.
Top