libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.33k stars 1.84k forks source link

Retro Achievements TODO #4867

Open leiradel opened 7 years ago

leiradel commented 7 years ago
--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/44689703-retro-achievements-todo?utm_campaign=plugin&utm_content=tracker%2F296058&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F296058&utm_medium=issues&utm_source=github).
meleu commented 7 years ago

Is it fair to request to add "Remove save/load state options from Quick Menu when hardcore mode is enabled" to this list?

meleu commented 6 years ago

Hey @leiradel. That leaderboards item can be checked. ;-)

leiradel commented 6 years ago

Is it fair to request to add "Remove save/load state options from Quick Menu when hardcore mode is enabled" to this list?

I thought load/save were already disabled when hardcode mode is on. I'll take a look.

meleu commented 6 years ago

I think I wasn't clear. I mean the option appearing on menu when hardcore mode is on.

Currently the option appears, but don't worry, it doesn't work when hardcore mode is on.

The request is just a cosmetic. To be honest I'm not even sure if it worths the work to hide it under that condition.

leiradel commented 6 years ago

But the user can select those options? If yes, it's confusing because the user will think that the state is saved and it's not.

So I believe the functions should be there but disabled, and they should include a subtext stating that they're disabled because hardcode mode is on.

ghost commented 6 years ago

im confused about leaderboards... should there suppose to be a new entry for those or even at least a popup? ddnt notice any for nes and snes at least.

thanks and great work.

On Tue, Nov 21, 2017 at 9:49 PM, Andre Leiradella notifications@github.com wrote:

But the user can select those options? If yes, it's confusing because the user will think that the state is saved and it's not.

So I believe the functions should be there but disabled, and they should include a subtext stating that they're disabled because hardcode mode is on.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/4867#issuecomment-346031640, or mute the thread https://github.com/notifications/unsubscribe-auth/AWPDtvgMsX8A77zlEl92_msI879Se5gVks5s4tThgaJpZM4NMhxD .

andres-asm commented 6 years ago

So far only submitting leaderboards is implemented. It will give you an osd message when a leaderboard attempt is being tracked.

Try time trials in super Mario Kart

On Tue, Nov 21, 2017, 4:47 PM retro-wertz notifications@github.com wrote:

im confused about leaderboards... should there suppose to be a new entry for those or even at least a popup? ddnt notice any for nes and snes at least.

thanks and great work.

On Tue, Nov 21, 2017 at 9:49 PM, Andre Leiradella < notifications@github.com> wrote:

But the user can select those options? If yes, it's confusing because the user will think that the state is saved and it's not.

So I believe the functions should be there but disabled, and they should include a subtext stating that they're disabled because hardcode mode is on.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub < https://github.com/libretro/RetroArch/issues/4867#issuecomment-346031640>, or mute the thread < https://github.com/notifications/unsubscribe-auth/AWPDtvgMsX8A77zlEl92_msI879Se5gVks5s4tThgaJpZM4NMhxD

.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/4867#issuecomment-346172020, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpC0Cs0GziC8AEJ-BRP6HQCnmxg2KM3ks5s40UIgaJpZM4NMhxD .

kikeminchas commented 6 years ago

Regarding the offline achievements, I have heard/read conflicting info about the feasibility of this feature. Lots of concern about possible cheating, etc... I personally think it would be a great feature since more and more people is playing on mobile/handheld devices. Is there really a way to implement this on a secure way (or at all, actually). Thanks for the work!

leiradel commented 6 years ago

@kikeminchas it's definitely feasible, and some simple anti-cheat measures can be taken. They won't stop all the cheaters, but will prevent the easiest ones.

ahstro commented 4 years ago

Just checking: Has offline been implemented? I'd love to be able to play on my Switch on the go 😅

mtoensing commented 4 years ago

-1 for offline Achievements on the Switch. After I read all comments I think is is better to leave it more secure.

XargonWan commented 3 years ago

Sorry to post here one year after the last post, but is there any news about the offline achievements? A lot of retro handled devices doesn't have a constant access to the internet and I think that this would be a great feature.

Littlemac123 commented 3 years ago

currently how it works is it downloads all the cheevos in RAM and doesn't save that locally for unknown reasons, then as you get the cheevo it connects to you can lit open this in a browser and unlock anything you want retroarch could just save this link and go to it when your online again like honestly idk why this has taken so long to get offline cheevos it's so simple

Jamiras commented 3 years ago

It's not nearly as simple as you think it is. Because of the competitive nature of the site (ranks based on scores), we have to be very careful about any functionality we add that makes it easier for users to game the system.

Offline support leaves a lot of loopholes for cheating. If you decide to store the fact that achievements 3, 4 and 5 have been unlocked, what's to prevent the user from modifying that list to include 6, 7, 8, and 9 too? Or even some other achievement for some game that they're never played?

Another issue is the upfront loading. Many achievement sets are in flux as bugs are found and fixed, or achievements are added or removed. By fetching the most recent version on each login, we ensure the user is playing with the correct version of the achievements. Similarly, validating the game's hash ensures the user isn't playing with a patched ROM where they have infinite lives. Once we start storing the information locally, it becomes trivial for the user to modify it. Sure, we can add checksums or other logic, but with an open source project it's really hard to keep your secrets secret.

As you've identified, it's easy to unlock whatever you want whenever you want, so why should we even have achievements? Let users just rack up points by abusing their browser without even opening the games. But I guess they can't do that offline either, so it doesn't address this ticket. Please remove the URL from your comment to limit the abuse of that loophole.

I would not be against a completely offline implementation, where the achievement definitions were stored and ran offline, but it would not be wise to allow such a configuration to participate in the global rankings for reasons mentioned above. It's bad enough that we have to allow older versions of RetroArch to connect, as they may not contain anti-cheat measures or bugfixes that have been added to newer versions.

For this to truly work, we'd need to capture not only the achievement IDs that were unlocked, but their definitions, and the game hash used while offline and validate the achievement definition and game hash when doing the unlock after going back online. And all of that would have to be done in such a way that the user couldn't easily modify the unlocks to add additional items or spoof the definition/game hash. If you still think that's simple, feel free to open a PR.

mtoensing commented 3 years ago

I removed my +1 for this feature. After I read the comment of @Jamiras I think we should leave to as it is. I can always use tethering to my phone to keep my handhelds online. It is better if the system is more secure than to have the comfort of offline usage. At least that is my opinion. I like the competitive nature of the retroachievements. if everyone can unlock every achievement then the whole thing no more fun. Right now wasting 1h hour of my precious time to beat a stage in Super Mario World without a balloon feels like an accomplishment. ;-)

Littlemac123 commented 3 years ago

Offline support leaves a lot of loopholes for cheating.

@Jamiras

good thing it all ready has this regardless if you wish to implement this or not, I been doing cheevos offline then using the URL method when im online just fine to say i got them legit this hole time. idk what your trying to prevent at this point when its all ready there right infront of you

Littlemac123 commented 3 years ago

im not saying implementing better security is a bad thing, but currently if your never going to do that regaless or if no ones working on it then what the hell is the harm rn??

Jamiras commented 3 years ago

Because right now, not everyone knows how easy it is to generate your own URLs, and I'd like to ask you again to remove that from your earlier comment.

As for future plans, it's hard to say what we're going to do or when we're going to do it. Offline support is pretty low on the list, and there's only a handful of people doing any sort of coding.

Littlemac123 commented 3 years ago

im sorry but when your highest security is a http get command that even just posting the URL in discord then Discord servers can auto give you a cheevo this is a valid issue that belongs here regardless on its own regardless of the offline implementation I so dream for.

Littlemac123 commented 3 years ago

if you guys really love valid real users getting real cheevos you should put more sole in your hard work at this point, you been using this for YEARS. it has to stop

Jamiras commented 3 years ago

I agree. It would be great to plug that hole, but even if we fixed it today, we couldn't actually enforce it because we allow older versions of RetroArch to continue to talk to the server because many standalone systems (like RetroPie) come prepackaged with a specific version of RetroArch, and their users don't know how to upgrade, or are unwilling to because "if it ain't broke, don't fix it".

And if you don't want your account to become Untracked, I'd recommend you stop circumventing the implementation. We have right in the documentation that what you're doing will get you in trouble. You have admitted to violating rule 1, and you're clearly violating rule 9 by not taking down that link.

Littlemac123 commented 3 years ago

actually I never used it I was just saying that so you can understand a senerio where offline cheevos work, you can see that if you look at my account logs, that I never used older retroarchs other then current, and I'm offended that you removed my post as it's a real issue in your server. as it didn't brake any retroarch rules in this gethub, just your site rules.

Littlemac123 commented 3 years ago

if you don't like the fact the issue exists then just pull the pug and force current retroarch like lit what's the harm? preventing cheating is good right???

Littlemac123 commented 3 years ago

ok fine

On April 2, 2021 5:50:39 PM GMT-05:00, Jamiras @.***> wrote:

I agree. It would be great to plug that hole, but even if we fixed it today, we couldn't actually enforce it because we allow older versions of RetroArch to continue to talk to the server because many standalone systems (like RetroPie) come prepackaged with a specific version of RetroArch, and their users don't know how to upgrade, or are unwilling to because "if it ain't broke, don't fix it".

And if you don't want your account to become Untracked, I'd recommend you stop circumventing the implementation. We have right in the documentation that what you're doing will get you in trouble. You have admitted to violating rule 1, and you're clearly violating rule 9 by not taking down that link.

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/libretro/RetroArch/issues/4867#issuecomment-812745288

-- Sent from my Android device with K-9 Mail. Please excuse my brevity.