sides / war3observer

A Warcraft III observer API reader/renderer for streaming overlays
MIT License
51 stars 20 forks source link

1.0 #10

Closed sides closed 4 years ago

sides commented 4 years ago

Warcraft III: Reforged is slated for a December release and judging by its current state I find it possible it will roll out with the observer API still enabled instead of new native observer tools. If this is the case, I would like to dedicate some time to fill in the gaps this tool has with a 1.0 release.

I would also possibly like to create a new client so that this tool is no longer CLI only.

KorKux1 commented 4 years ago

This has been a very interesting project, unfortunately I discovered it very recently. A few days before the reforged, it would be great if you gave support for the reforged. 3 days ago when I saw the project it caught my attention and I made a small view where it shows a lot of the information you want to put in new views: the heroes, training units, upgrades, etc. It has been very easy because of the way you built the API, certainly a great job. Additionally to the todo list you have you could add to the dictionary that is sent from the war3structs the map information. In other words, the Map.py, this would be quite useful to put the map information. Since using the game.map_name found in the Observer.py returns the map patch.

sides commented 4 years ago

@KorKux1 Before dedicating time to it I'm going to see how Reforged releases. I've also edited the original post, I have some bigger ideas that I would like to spend some time on depending on the state of this January release.

Showing the map name can be done by reading the map header whenever a new path is encountered. Personally I don't understand the demand for it but it could be useful to add for other reasons.

KorKux1 commented 4 years ago

@sides Yes, I know that. What I mean is that you can add the option for the dictionary to return the MapHeader. I tried to make the server return this information to me without success. Unfortunately the [map_name]() that the obs returns is not what I expected

That aside with respect to the names of the upgrades you mentioned in the comments of the code that had been removed due to the decoding but that this information could be opposed from some tables of the game. What tables did you mean?

sides commented 4 years ago

@KorKux1 I was just mentioning it as a note to self/anyone on how to eventually implement it. Currently no processing is done by the server on the API, it's sent as-is from war3structs. Adding map name would include an additional step by game.py which reads the map file on disk (MapHeader.read_file(map_path) or something like that), stores the result and replaces map_name in the dict with the real (English) name.

Upgrade names et al: If these are to be included an added step is needed similar to extract_icons.py. A script will dig into an installation's game files, but instead of images, create a JSON file that matches IDs to names of game objects, such as upgrades and units. It would be an improved script that basically maps IDs to all information the overlay might need, such as a path to the icon and its English name.

Personally I'm against this because I have no idea how this will work on different locales: I think it is in the overlay's best interest to keep any text away. The script would be at the mercy of the locale of the client that the release build is created from (mine, in English). The map name will be at the mercy of whatever the map author put as the map name, but if the map includes different locale names (like all of the official maps) it will not be available on the overlay.

sides commented 4 years ago

Reforged is an unmitigated disaster and at this time I have no interest in spending my own time on this project anymore.