Oh because just because? "Good" beginning, no comment.
Because pretty much every place that accepts relative paths will also accept an absolute path. There's no reason to avoid the norms of most software. In fact, I've never used a program that accepts relative paths and does not accept absolute paths.
- it work for you also when you will move whole main game directory to the other place,
Obviously you wouldn't use an absolute path then! I'm not here to debate the merits of relative paths. I'm a programmer; I know full well their uses. But I also know that absolute paths do occassionally have valid purposes.
- it may work for other players in the same way when you need this (when you need, so absolute paths in other cases are allowed),
But again, that doesn't matter because typically one wouldn't share just any command line argument. Command line arguments are largely to allow you to tweak how the program runs and may not be relevant to others. In this particular case, you simply wouldn't share the command line argument. But all that said, absolute paths can absolutely work for other people. Surely you've executed things like
vim ~/.vimrc? I can share that around and anyone who has vim on a *nix system can use it.
- it is easy to use, proposition of "%%APPDATA%%" is pitiful, how to document usage of this and where? if in the --help then most likely it will be too long, if not in the --help then it is not enough easy accessible,
I used
%%APPDATA%% as an example of MG replacing variables with absolute paths to show that this is clearly unexpected behavior (since you can't use said variables if only relative paths are allowed). The poor documentation of said variables is off topic. Code tells a lot about the intentions. However, a better example of something that users would actually do is
~/megaglest_shit or
%appdata%/customMG. Both of those include variables that are swapped by the OS before the data is even sent to the application (by the shell).
- it will work on every OS and every command line env cause MG is cross platform, using characters like "%" in the command line is just asking for trouble.
Again, there's no need for command line arguments to be cross platform. I mean, heck, Windows and OS X are case insensitive, so you can already create command line arguments that are Windows only. To lazy to check, but pretty sure you'd be able to use backslashes in the path, too. Windows allows that for relative paths, but for Linux, it's just a regular character in a filename.
What magic?
On which OS? (cross-platform!) This one which your variable seems to suggests, where even simple usage of %programfiles% may return unexpected results? or this magic related with sending personal data to mICROSOFT? 
When you wanna cross-platform support then you need to avoid as much "unexpected magic" as it is possible.
By "magic", I was referring to the fact that all modern OSes retain a working directory for which relative paths are based against. Usually this is the working directory of the terminal which you use to launch MG, but shortcuts can usually specify their own working directory. And I dunno why you're bringing up sending personal data to Microsoft. That seems very off topic here and makes me question if you're just trolling me here.
Some months back there was a bug related with paths and every "git user" had to use for ~ 1-2 days --ini-path=./ --data-path=./ to even launch game (relative? relative, simple? simple) and even now our headless servers 3.11.1 have relative path to ini in the configuration.
I'm not sure why you think the fact that a bunch of people use relative paths is a good reason not to support absolute paths.
Did you ever tried to help someone or write a documentation related with absolute paths?
Try to write something like this: "if ... then Please use --ini-path=<path_to_the_file>" and you have a guarantee to get some % responses like this does not work, I see an error: '<path_to_the_file> not found' and those will be from just normal avg users.
Yes I have. I help with the annual Unix Bootcamp at my university, which caters to people who have never used a terminal in their life. But the reality is that anyone who's dumb enough to make the mistake you showed is not someone who should be using command line arguments. They're not exactly hard to use, but require the ability to read and understand what the arguments are. When creating documentation for intelligent people, I've never had issues with simply using the placeholder
<path> and stating whether or not it must be absolute (there's a small number of cases where relative paths would be too confusing due to the lack of an obvious path which they'd be relative from).
At any rate,
here's a recent example of why you'd use absolute paths. It's a per user thing and Tomreyn is clearly banking on the reader having the intelligence to change the paths to whatever value they are using. You could use relative paths here, but it's more confusing because you'd have to figure out the point that we're relative to. Absolute paths are often superior for personal usage because they remove that source of confusion -- you always know where the path is pointing.
In the *nix community, absolute paths are used all the flipping time, usually relative to the home directory (using the nifty
~ variable -- the Windows equivalent is a bit more verbose:
%userprofile%, but PowerShell allows the use of
~).