-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Retroachievements support (work-in-progress) #17589
Conversation
How we can use achivements now |
Stay tuned, it's not ready enough yet. |
5da62b4
to
b5d33e6
Compare
Rebased on top of #17594 . |
Got pinged about this, please maintain my copyright notice in DuckStation-derived files (and add your own, obviously), thanks. Also, feel free to relicense those files to GPL2 to match the rest of the emu if that makes things easier (in DS it's GPL3). |
@stenzek will do, thank you! |
8f113fe
to
58e9afd
Compare
cb0d65f
to
ca82a6a
Compare
Progress report: You can now login through the UI, and play and get achievements, and you do get nice little popups with achievement icons and text when you do. There is also an achievement list on the pause screen, if achievements are enabled for the game. Logging in works on all desktop platforms currently - or if you have a physical keyboard for your phone somehow. This will of course be fixed soon. I'll do a more general fix for text input UIs on master soon, then bring it into this PR. EDIT: Confirmed working fine on Android except a weird centering issue, the code updates are coming soon. |
60f2cea
to
9242066
Compare
This is starting to get usable now, opening for review, but don't merge until the below is solved: I think we should probably store the RetroAchievements login token somewhere slightly more secure than in PPSSPP.ini, it's too easy to accidentally leak your token while sending that file in for debugging or something. On Android we'll just store it in a file in the app private directory. On Windows, Mac, Linux, I'm thinking just store it in a separate file in the home directory somewhere? |
9242066
to
ee30ce5
Compare
Hello sir.. When will this be ready to download. Just a tentative release Window.? |
Next week it will be in the "nightly" builds. |
Currently you can also download the artifacts from https://github.com/hrydgard/ppsspp/actions/runs/5360144898?pr=17589 if you want to test it. |
…oid (other platforms not so good)
37a557c
to
4134acc
Compare
Should be ready for initial review/merge now. |
Hm, actually need to clean up the choice of directory for secrets storage. It's not making good choices on some platforms. |
Ok, I've been thinking about where to put the login token on various platforms. One idea would be the following:
However, after some chats I think I might be overthinking it. It's only really important to keep it out of the .ini as we often ask people to post that. But just putting the login token in a file next to the ini on all platforms may be good enough, really. |
Alright, I think this is a pretty good checkpoint, and I'm just gonna get it in and work from that state. |
// for testing | ||
std::string GetFirstIconName() const { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure what this is for specifically, but it should be using lock_
in case someone starts calling it later.
-[Unknown]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I never used it for anything, I'll just delete it. Was gonna be used to test achievement popups without getting achievements.
Implement RetroAchievements support (#16169). Not to be confused with RetroArch, these are two different projects.
Most of RetroAchievements.cpp was adapted from DuckStation's integration by @stenzek.
So far, login works (unless you're on a touchscreen device), game identification and basic achievement listing works, and unlocking achivements works.
TODO list before initial merge:
Next steps after this: