Hmm. I'm checking the code, but I can't find where this internal ID is.
In the SavedGame.cpp
it's calling sortReserchVector(_discovered);,
which calls std::sort(vec.begin(), vec.end(), researchLess); where researchLess is the element comparator function,
which compares the two elements by calling std::less<const RuleResearch *>{}(a, b);
I don't understand this. The RuleResearch class doesn't overload the < operator, so how exactly are two RuleResearch objects compared?