Regional Support Should be a Global Effort by ladynadiad - RetroAchievements/RANews GitHub Wiki
This article was sent in as a challenge for the Rack It Up event. For more information, you can check the forum topic here.
The majority of us can agree that sets supporting as many versions as possible is a good thing. Believe it or not, even developers agree with this. However, implementing it is easier said than done and the current trend of pushing all the work on developers is not going to make things improve any time soon. Supporting as many versions of a game as possible should be an effort shared by the community;, yes this includes regular users.
To be quite honest, developers have very little incentive to be linking new hashes. Whatever developer links a new hash to a set has to be responsible for maintaining that set and handling any tickets that are opened as a result of adding the new version. This creates more work for the developer who already had to put in a decent amount of work to even add the new version. Few people are willing to put in work to give themselves more work and even more so when there is no way to even know how much benefit there is. Developers have no access to stats regarding who has played what version beyond players telling us, usually in a ticket.
To be clear since a lot of users don't know what sort of work has to be put in, here is the general process of adding a new version to a set:
-
The game has to be loaded into an emulator that has developer tools such as RALibretro, Bizhawk or the various standalones.
-
The new version has to be tested for compatibility. It needs to be confirmed that the content and general gameplay are a similar experience as the currently linked versions and that no unfair advantages are given to players who play this new version over players playing the current version.
-
Achievements must be confirmed to work on all versions with the existing logic. If needed, some or all achievements may need to be recoded and then confirmed to work on all versions.
-
If the new version is linked, the developer must maintain the set with the new version.
So let's go more into depth on each of these steps and how regular users can help developers and reduce the amount of work needed to add a new version.
The game has to be loaded into an emulator that has developer tools such as RALibretro, Bizhawk or the various standalones. To be honest, it is shocking that any requests to add a new version to a set fail to allow us to even do this much. Some requests have a hash with no information about it. How is someone to get a ROM to even load it? Some ask to link a patch with no information about where to obtain the patch. In some rare cases, the new version being requested may not even work in supported emulators.
How users can help: Make sure your request has enough information to allow others to be able to dump a ROM that would have a matching hash. If there's a patch involved, please link a download. If it's a hack or translation and the only downloads available are pre-patched then consider making a patch. Most tools to apply patches allow for patches to be created as well. If making a patch, please include a readme file that tells what version of the game the patch should be applied to and provides as much information as possible about what the patch does, who made it, what version it is, and so on. Users also can confirm it even works in supported emulators before making a request and provide information if there is a specific core or emulator needed or any specific settings or BIOS required to make it work that would be different from a normal setup. This helps both the developer who is going to look into linking and future players.
The new version has to be tested for compatibility. This includes a few things. It has to be confirmed that gameplay is similar between them. A version that has differences in content, difficulty, or gameplay can't be linked to the set. Often this part can be confirmed with some research into regional differences and looking up information about a patch. If this information doesn't exist then it has to be confirmed by actually loading up the ROM and playing it. Overall this step confirms if it even is allowed to link the new version. Sadly, some versions have too much difference between each other to be linked to the same set.
How users can help: Ensure that information is available. This is especially important if it's a patch and the only information available is not in English since that may not be as easily found by someone not fluent in the language. If there are vast differences, don't request it. If you need to make a patch to ensure someone can load the ROM, make sure to include a readme that provides information that was included with the prepatched ROM. If this information is not in English and you are fluent in the language and English, consider providing a translation along with the original text. Remember that like yourself, developers are only fluent in so many languages too and if it's not in English we're likely going to need to use a machine translation to figure out what it says and those are far from ideal with technical and game specific terms. Also consider overall the type of game and the achievements that exist in the set. It's well known that EU and US have framerate differences, but this only tends to be an issue if it makes gameplay easier. If the set contains a bunch of speedruns, it's unlikely such a version will be linked. However, a turn-based RPG is less likely to have any gameplay effects from the framerate differences.
Achievements must be confirmed to work on all versions with the existing logic. This is hands down the most time-consuming and difficult step, but also one of the most essential. The game may load and have no content differences, but under the hood the memory could work completely differently and break the set as it is currently written. Everyone wants achievements to work and poorly-implemented regional support can result in a less than stable set and a poor experience for players of any version. It also can be difficult to do in the case of translations because the developer of the set may not be fluent in the language translated to and have difficulty even playing the game for long enough to confirm achievements work. Depending on the game it also may be difficult to adjust the logic to work with all versions. If the game's memory changes under the hood, there needs to be a way for the logic to know what to use for which version and with our current tools, that isn't always easy. Without that, there can be issues with achievements triggering at the wrong time for all users. Some older sets may use less than ideal coding that only works on a specific version and need a complete rewrite to allow them to work on other versions. If a new version has multiple languages, we also have to confirm each language behaves the same because some games shift memory based off language too.
How users can help: While users who aren't developers can't help with the coding aspects, there is a lot here that users can assist with. Anyone can test new hashes. If a user has a device running windows, they can also run the new version in test mode and be able to test the set as if the new version is linked and report results and provide saves and states near where achievements would unlock. Even if they don't have a windows device, they can still play the game and provide save states at various points of progression before achievements would unlock to save a developer a lot of time having to play through a longer game. A user who is fluent in a language the developer is not will have a much easier time playing a new translation patch in a language they are fluent in. Any states or saves gathered can be placed into an archive, uploaded to a filesharing site and shared with QATeam.
Problem is, very few have the wish to spend the time here. Playing a set in test mode doesn't allow the tester to keep achievements earned even if playing in hardcore. Testing has to be pretty in-depth too because sometimes the changes between versions come later in the game. The developer who made the set has already spent many hours making the set and is burnt out on the game and many don't even go on to play the set once released. However, this is the part where contributions from non-developers are the most essential if people want to see more regional support happen. This is hands down the most common reason why regional support doesn't happen because it requires someone to be willing to spend the time to ensure a good player experience and a stable set, and there is no incentive to spend this time as things stand now.
If the new version is linked, the developer must maintain the set with the new version. This is also essential because if the other steps have been completed and the new version is linked, there is still a potential of issues cropping up after the fact once players start playing. This part is what is likely to result in a linked hash being unlinked or a developer being turned off from ever putting in the work again if this part goes poorly.
How users can help: It may sound like there is little users can do here, but there is actually a decent amount users can do to help make supporting a set with multiple regions linked as smooth as possible. One of the most essential is that if you are reporting an issue, always make sure to select what version you are playing. This is hands down the easiest thing users can do and is often not done even when the set only supports one version. If this information isn't provided and the achievement logic varies between versions, then the developer has to ask and wait for a response and is delayed from even starting to resolve the issue. If the version supports multiple languages, it also helps to provide what language you are playing on. Some games do shift memory based off language and there may be changes based off that in the set. Providing saves or states with your ticket is also very helpful and helps us to actually resolve a ticket. Since getting this information can be like pulling teeth with some users, there are some developers who refuse to support multiple versions as long as users can open a ticket with no information about what they played. The more rare this becomes, the more likely this could change.
Also consider taking the time to thank developers who support multiple versions and report that you were able to master the set with no issues. This can easily be posted to the game wall or the developer's user wall, or send them a DM. Developers have no way of knowing what users played what version so a quick comment of something like "I played on the EU version and mastered with no problems, thanks so much for the set and support!" can go a long way to encouraging a developer to continue to support multiple versions and also provide confirmation that the set is stable on that version that wouldn't exist otherwise. Even if there were some issues, thank the developer for getting them fixed. Players and developers working together is what is going to make for the highest quality of sets. Be the helpful player, not the unhelpful one that makes them regret adding support for that version.
Now having gone over all there, there are some final points to mention:
If a developer opts not to link a hash this is NOT due to discrimination against the user, their country/region, the language they speak, or any other potential form of discrimination one can think of. It is either due to content differences or lack of time or skill needed to ensure stable support. Saying they are discriminating against you for any reason is not going to change their mind and is far more likely to result in that developer being less willing to spend the time on future sets.
Harassing a developer who has said they cannot link another version is also not a way to change their mind. That's a great way to get reported to admins, and if serious enough could result in being banned from the site. The same goes if a developer unlinks a previously linked version due to issues found. They unlinked because they didn't have the time to resolve the issues or the other version should never have been linked due to too many differences.
Do you want to learn how to add regional support yourself? It isn't a quick process but it is something open to any user willing to spend the time. Only full developers can add regional support, so a user would have to first become a junior developer and graduate to full developer which will require making a few sets for games that do not currently have sets. Junior developers are welcome to add whatever support they wish on the sets they make, so they can learn how to support multiple regions first with their own work. Once they have graduated they can work with other developers and QATeam to add support to existing sets they didn't create. No programming experience is needed to become a developer and there are plenty of experienced developers willing to help a junior developer graduate if they are willing to take the time to learn and improve. The only essential skills needed are the patience and willingness to learn a new skill and accept feedback about your work. The rest can be taught while making sets.
So in conclusion, if users want to see a change regarding regional support it will have to be a community effort. One doesn't need to be a developer to contribute here and in fact, users can do a great deal to contribute here. Very often the users wanting the support are the ones who are the best suited to do some of the steps needed just because they are fluent in the languages that the support would add when the developer is not and would have difficulty doing the testing. In the end, contributions rather than complaints will be what results in change. As time goes on there may be improvements to the toolkit to make things easier, but until then the more users can assist, the easier it will be to support as many regional variants of games as possible. If all the work is put solely on developers, then nothing will change.