GraylinKim / sc2reader

A python library that extracts data from various Starcraft II resources to power tools and services for the SC2 community. Who doesn't want to hack on the games they play?
http://sc2reader.readthedocs.org
MIT License
413 stars 85 forks source link

Standardize Ability Names #88

Closed GraylinKim closed 10 years ago

GraylinKim commented 11 years ago

Right now the ability names are all over the place with respect to scoping:

Differentiating abilities based on the type of unit using that ability makes it easy to see when specific things are done without also tracking the current selection at the time the ability is used. For instance, detecting roach burrow micro is easier with differentiation. If there are multiple unit types selected it becomes misleading though because there is no generic burrow ability. The game engine seems to just silently propogate the command to the rest of the unit types selected.

When you don't care what unit is being burrowed you need to do a substring search for burrow. The substring search is prone to breaking though. For instance BurrowCharge would be a false positive.

When you remove the scoping you lose that granular (but maybe misleading) level of information. If there are 3 building types selected (1-1-1) and you cancel one unit, you won't know which building had the cancellation. In return you get a much simpler model of abilities that is more conservative and potentially easier to work with.

We could also do a mix of both approach with cancels being scoped and everything else being generic. Food for thought. Decision needed soon(ish).

dsjoerg commented 11 years ago

How about we use the ability names given by Blizzard, for better and for worse? Is there such a thing?

GraylinKim commented 11 years ago

Short answer: There is such I thing, I am not sure how we'd automatically extract it but we could do it manually if needed. I'm not sure it would be better though.

The way that we currently handle Blizzard data is via an ability group with an index. The ability group has an internal name that isn't always useful; for instance TimeWarp => ChronoBoost. That ability group has up to 32 slots that actual abilities can be put in; for instance TerranBuild => [BuildCommandCenter, ..., CancelTerranBuilding]. Blizzard does have names for those inner abilities but I'm not sure how to get at them in an automated way. They are also likely not super straightforward or consistent since they are strictly internal.

Additionally we might run into issues where the same ability in WoL and HotS has a different name. For instance there are two armory research ability groups now: ArmoryResearch and ArmoryResearchSwarm. I wouldn't be surprised if this was more common on the specific abilities that may have been tweaked for HotS.

dsjoerg commented 11 years ago

Perhaps the thing to do is to represent the underlying data as closely as possible. So if the data permits differentiation by unit, let's do that. Losing information is bad because it restricts what can be done by sc2reader users.

GraylinKim commented 11 years ago

In light of Blizzard's new Data Export tool (from the 2.0.10 release) we will revisit this. Likely we will just switch to what ever internal names are assigned to units by Blizzard. This will make the upgrade potentially painful for end users but will make data maintenance less of a burden going forward.

This is now related pretty heavily to #129.

GraylinKim commented 10 years ago

Closing this in favor of #129. When we integrate the new Blizzard datapacks we will deal with standardization.