|
From my tests it seems like the analyzer is broken with map files modified by the editor post patch 1.4.
It reads the wrong map-size and therefore refuses to analyze the map.
My conclusion after some quick look at the format of the MapInfo file is that the version number has been increased from 0x18 to 0x19 which causes some kind of problem.
As dimfish has sent me the code for the analyzer about half a year ago, I took a look at it and found what I guess is the cause of the problem: a condition checking fileVersion == 24. If fileVersion is 24 (0x19), 8 bytes should be skipped before reading map size. Those 8 bytes were introduced between version 23 and 24, and still remain in version 25. Which means that when the MapInfo says that the version is 25, the analyzer will not skip those 8 bytes and read the wrong map size, resulting in the failure.
I have tried to compile the analyzer from that source, and I've succeeded. But when I run the analyzer I don't get any output at all, and it does not crash. I guess it has something to do with me compiling windows software on OS X, but still, it compiled and ran without a crash :/ Unfortunately I don't have the time to try and get a windows environment to work, and compile it there.
I've found a workaround though:
Workaround (hacky):
We're going to change the version byte manually:
Stuff which is needed:
- Program which can edit files in hexadecimal
OS X: HexFiend
- Program to unpack and pack MPQ files
OS X: MPQExtractor and DropMPQ
1. Unpack the map file to a folder 2. Open MapInfo with the hex-editor 3. The first bytes are 49 70 61 4D, after that is a 19 if it is made using patch 1.4 4. Replace the 19 with 18 (ie. change 25 -> 24) (HexFiend: Select the 19 by dragging over it, then look at the bottom where it says 25, double-click on it and write 24) 5. Save 6. Make sure to remove (attributes) and (listfile) files from the folder if they are present 7. Compress the folder to a MPQ archive 8. Rename to .SC2Map 9. Run the analyzer 10. ... 11. Profit!
If anyone can find a good program for windows for editing hex-files and (un)packing MPQ files, let me know and I'll update it.
|
And now we wait to be fixed :p
|
On September 22 2011 03:36 synd wrote: And now we wait to be fixed :p Except dimfish (the creator) hasn't been around for a couple of months. Someone else might need to take over this project (or at least get it working properly).
I vote NullCurrent. <3
|
On September 22 2011 04:11 funcmode wrote:Except dimfish (the creator) hasn't been around for a couple of months. Someone else might need to take over this project (or at least get it working properly). I vote NullCurrent. <3
I've already tried :
I have tried to compile the analyzer from that source, and I've succeeded. But when I run the analyzer I don't get any output at all, and it does not crash. I guess it has something to do with me compiling windows software on OS X, but still, it compiled and ran without a crash :/ Unfortunately I don't have the time to try and get a windows environment to work, and compile it there.
So I need to set up a windows environment with all the libs and so on, and that will take some time as the only windows I have is one for gaming. OS X is my OS for both StarCraft and development.
|
Well in the meantime, here's links for a free mpq and hex editor for windows;
mpq hex
|
Uggh I'm so tempted to try and work on it, but I don't want to promise anything. Sad news it's borked due to version number. =(
|
aauuuuuuuuugggggggggggggggghhhhhhhhhhhhhh broken map analyzer!
I have tried to compile the analyzer from that source, and I've succeeded. But when I run the analyzer I don't get any output at all, and it does not crash. I guess it has something to do with me compiling windows software on OS X, but still, it compiled and ran without a crash :/ Unfortunately I don't have the time to try and get a windows environment to work, and compile it there.
what is needed to compile this thing?
|
sc2mapanalyzer-src-build.zip (1.8 MB)
Compiled on Windows. Latest svn source of map analyser, which may or may not be out of date. Provide your own to-analyse.txt and output.txt. Everything else should be there. Changed the offending line in read.cpp to if( fileVersion >= 24 ). Can someone please confirm if it works for them? I only gave it a quick test.
|
I get this error;
|
|
sc2mapanalyzer-src-build.zip
Ok, I've updated the file to include that dll. You shouldn't need it if the exe was statically linked to the GCC library, but I don't know the correct makefile flag that does that. If none of that makes sense to you, then you understand my predicament :/
|
Thanks for doing this meatpudding! I just tried this, and it seems to be working, however it seems like the version you modified was a development version, I had to add some new variables to colors.txt before it would work and the output looks very strange and glitchy: + Show Spoiler +influenceshortest pathssummaryIt looks like the original creator was working on some new features in base expansion detection? multiple viable third detection? new openness algorithm?
I think the most recent stable version might be 1.4.6 (this is what I have been using)
|
Cool. That's good news so far. The colors.txt I uploaded contains 2 new debug variables that I had to add before it would work, too. I'll take a look for the latest stable version and do an update soon.
|
Updated using SVN revision 43, date 5 March 2011. According to the notes this is for exe version 1.4.7, algo v1.3.
Apparently the only changes since the previous release are some bugfixes. There were some major changes after this that may have been unfinished (the most recent revision is #45. #44 was listed as "working towards another major release")
sc2mapanalyzer-src-build.zip
|
Seems like 1.4.6-unofficial is the version which produced the best and most output. Sadly I cannot find the source for that one. Anyone know where to find it (no, it is not on SVN)?
1.4.4 was the version in SVN before 1.4.6-unofficial, and that one is missing output, same goes for 1.4.7 which is the next version and that one also seems to be unfinished.
Also, I've managed to compile a native sc2mapanalyzer for Mac, but sadly it is only the "unfinished" version: http://www.theplanetaryworkshop.com/sc2mapanalyzer-build-1.4.7-mac.zip (it produces some tmp files and I haven't changed it completely for Mac, so filenames are a bit messed up and so on, compiled for x86_64)
|
One thousand cookies to you guys for working on this. That's 3 cookies a day for a year! o.O
I've tried playing around with colors.txt but the output images all seem not to include the tint that indicates change of level (up and down ramps). I guess it's not implemented the same/at all in revision 43?
|
On September 23 2011 01:17 EatThePath wrote: One thousand cookies to you guys for working on this. That's 3 cookies a day for a year! o.O
I've tried playing around with colors.txt but the output images all seem not to include the tint that indicates change of level (up and down ramps). I guess it's not implemented the same/at all in revision 43?
That is the reason I want to get the source to 1.4.6-unofficial :/
|
|
I made some quick hacks to the exe. After this I'm going to refrain from changing anything til dimfish comes back. The last thing we need is more branching versions of the analyser.
sc2mapanalyzer.exe
Changes:
Now supports iGrok's colour scheme. + Show Spoiler +Add this to colors.txt + Show Spoiler + ############################## # # iGrok's openness scheme # ############################## opennessLow1 = 0.71, 0.98, 0.54 opennessLow2 = 0.61, 0.68, 0.99 opennessMid1 = 0.61, 0.88, 0.44 opennessMid2 = 0.51, 0.58, 0.97 opennessHigh1 = 0.51, 0.78, 0.34 opennessHigh2 = 0.41, 0.48, 0.87
Add this to constants.txt + Show Spoiler + ##################################### # # for iGrok's openness scheme # ##################################### int numOpennessGradientColors = 2
Added some info to the bases image, including map size and resource density.
Previous versions supporting patch 1.4: + Show Spoiler +
|
On September 23 2011 05:15 Barrin wrote: By the way... I actually talked to dimfish once about the possibility of someone taking over this project for him some day. He told me that he would like to continue this project himself and that he expected to be here to continue updating it. That was at least a few months before he disappeared, so maybe his opinion changed. But maybe it hasn't and he'll be backs soonish.
I could probably give it a go, I haven't programmed C++ in a serious project before, but it should not be that hard to pick up. Would be good if we could get it up on github or something and get a group of us collaborating on it.
On September 23 2011 05:15 Barrin wrote: dimfish is my friend and I would not want to cross him, so I would ask that we respect his intellectual property rights (he has some right?). Obviously fixing it for the newest patch for him is great, he won't mind that.
It is licensed as GPL v3 according to sc2mapster.com, and the current SVN repository is also there (but it is missing version 1.4.6-unofficial, which was released by dimfish but never added to the SVN ). So according to the license it is ok, but I'd like to get an ok from dimfish first before continuing the development as he both has the code to 1.4.6 and knows the direction he wants the project to take.
On September 23 2011 05:15 Barrin wrote: I would REALLY love these things on the summary image: % of map space that is pathable width of map * height of map / number of resources on map I would love you forever.
Well, the first thing I'd want to do (if I will work on the analyzer) is to make the code itself compile on both Windows, Mac and Linux (the needed libraries work for all three of them, but needed some coercion to compile with Mac Ports) without changes, as currently it botches the file-naming and file opening on BSD-style OS:es (in addition to some other annoyances, like not being able to remove temporary files by itself).
I would probably also swap out the Dijkstra's algorithm with A* for determining shortest paths, as A* is generally faster and has a good heuristics function for square grids. In addition I want to add a path smoothing algorithm as the current pathfinding algorithm only supports cardinal directions, diagonals and lines directly between them (which means that the distances it finds usually are a slight bit longer than they actually are in game).
The changes you want seem to be easy to implement, but as the current code we have still is in an incomplete state, I think it would be better to first improve it until the result is as good as 1.4.6 or better. (I will continue to use 1.4.6 for my analyzer pictures, but 1.4.7 to just get the images when I make maps)
|
|
|
|