Hacking Homebrew app Project NinBadges - Nintendo Switch Achievements System

  • Thread starter Thread starter davimassini
  • Start date Start date
  • Views Views 17,082
  • Replies Replies 50
  • Likes Likes 35
Thanks for the support, really appreciate it! Hopes the project reach you in the future!


Such a good games, I'll definitely give it a try to map the achievements for them.
i think the bayonetta games got achivements built-in too
Post automatically merged:

Can I suggest Nintendo Quests as a name for the 'service'?
it got "nintendo" in the game, its better to stay away from their trademarks so that big N dont send a dmca lol
 
i think the bayonetta games got achivements built-in too
Post automatically merged:


it got "nintendo" in the game, its better to stay away from their trademarks so that big N dont send a dmca lol
Fair point. NQuests or just Quests. Or something different, I'm just thinking out loud, haha.
 
  • Like
Reactions: davimassini
I've been struggling with optimization in this sysmodule, not because of performance issues but due to the decreasing memory pool in applets. I guess most of you already know this, but with every new version, we have less memory to work with.
Rich (BB code):
18.1.0 -> 40MB
19.x.x -> 24MB
20.x.x -> 14MB
21.x.x -> 8MB (as a seen in this commit)
That said, I’ll need to make some core changes to Badges to make it lighter. However, if you really want the achievement system, you might need to disable all other sysmodules you’re using (at least on the latest firmware).

From what I can see, you're planning to make this work with a server like RetroAchievement. Have you thought about adding a totally local operation? This would allow you to unlock achievements even without an internet connection, as well as being able to use your own achievements even if they haven't been approved.
Quoting this old message just to say that I’ll be implementing a new logic based on this. You’ll need to be online at least once to log in and fetch the achievement list. These files (a simple .txt or something similar, nothing heavy) will be used for the same verifications as before, but this will allow for offline tracking and remove some cURL requests. These achievements will then be sent to the server (validating the file's checksum and other security checks to make sure they're all legit) the next time you open the Badges App with an internet connection.

This makes the Badges App a little more essential, but I don't think it'll be too much of a hassle.

Can I suggest Nintendo Quests as a name for the 'service'?
Fair point. NQuests or just Quests. Or something different, I'm just thinking out loud, haha.
I really like the suggestions! Unfortunately, like nekojin116 said, I’m hesitant to put anything related to Nintendo in the name. As for 'Quests', I’ll keep that in mind. Right now, I’m pretty much in love with 'Badges' and the overall concept (even though it's in a very early state and I’ll probably change most of the designs later). Every idea will be considered, and I'm really grateful for them. It's always amazing to see people engaging with this project.
 
I've been struggling with optimization in this sysmodule, not because of performance issues but due to the decreasing memory pool in applets. I guess most of you already know this, but with every new version, we have less memory to work with.
Rich (BB code):
18.1.0 -> 40MB
19.x.x -> 24MB
20.x.x -> 14MB
21.x.x -> 8MB (as a seen in this commit)
That said, I’ll need to make some core changes to Badges to make it lighter. However, if you really want the achievement system, you might need to disable all other sysmodules you’re using (at least on the latest firmware).


Quoting this old message just to say that I’ll be implementing a new logic based on this. You’ll need to be online at least once to log in and fetch the achievement list. These files (a simple .txt or something similar, nothing heavy) will be used for the same verifications as before, but this will allow for offline tracking and remove some cURL requests. These achievements will then be sent to the server (validating the file's checksum and other security checks to make sure they're all legit) the next time you open the Badges App with an internet connection.

This makes the Badges App a little more essential, but I don't think it'll be too much of a hassle.



I really like the suggestions! Unfortunately, like nekojin116 said, I’m hesitant to put anything related to Nintendo in the name. As for 'Quests', I’ll keep that in mind. Right now, I’m pretty much in love with 'Badges' and the overall concept (even though it's in a very early state and I’ll probably change most of the designs later). Every idea will be considered, and I'm really grateful for them. It's always amazing to see people engaging with this project.
Badges was a real product on the 3DS btw.
 
sounds great, and would be awesome if it can be a centralized sever for achievements (a-la RetroAchievements) where we can sign in and be able to keep track of from any (modded) switch we have, and even compare with others...
 
  • Like
Reactions: I pwned U!
Hello everyone, I'm excited to show you all my first project for the Nintendo Switch.
It's a WIP for now, but I think it will be a great idea to let others give ideas and/or follow the process.

NinBadges (still under study, open for suggestions)
For months, since I bought my Switch, I have asked myself why Nintendo never made an achievements system even though some first-party games have their own in-game systems for this.
When I started to learn and dive into the homebrew scene, everywhere I searched about it always came down to people complaining about it, but never anything concrete.
I work with Java and my background with C/C++ is pretty low, but I believe everything can be achieved, so I started to learn (especially in this forum).

First things first, why badges? My concept is to make the entire project revolve around scout badges.
I really like the shapes, designs, and I think that they will fit perfectly with the feeling of a Switch.
For example, for the categories I was thinking of something that refers to some classics:
  • Bronze Mushroom (15 points) [Bronze Achievement]
  • Silver Rupee (30 points) [Silver Achievement]
  • Golden Banana (50 points) [Golden Achievement]
  • Power Star (75 points) [Platinum]
  • Maybe other badges for events or other tasks (friendship, level, collaboration at project, etc)

The idea is simple, the project will be split into three parts:
sysmodule: works in the background, handles the memory read, makes requests to get/post the list of badges, shows the popup when unlocking some badge; (60% done)
application: will show and manage the list of games and badges of each, maybe a friend system and other things (nothing done yet, UI is a mess for me);
backend: receives requests, manages the db, login, level, friends, etc.; (70% done)

My biggest fear/concern will be mapping each memory pointer and value for the achievements… For games that already have achievements, my plan is to keep what the developers created (artwork, names, descriptions, etc.) and parse that together with the community (especially if the games are available on other platforms where it's possible to run Cheat Engine or similar tools to extract everything more easily).

For first-party titles and games that don’t have existing achievements, I believe it would be excellent to organize contests with the community where we can vote on and validate achievements created by you all. As soon as I define my search method, I intend to create materials to help people hunt for these addresses and values as a way to contribute to the project. Every bit of help is welcome!

FAQ (will be updated)
Is there a ETA?
Not for now. I'm making this post to show the idea and get some feedback. I'm a solo developer and don't want to rush this (because I'll get stuck and end up abandoning the project), so I am taking my time.

How is it going to work?
Once the sysmodule is enabled, and a game is open, a list of badges (which contains title, description, memory_pointer_address, and memory_pointer_value) will be received. If the badge is still locked, a memory search will happen in real time to see if the value of the address and the expected value match.

What about perfomance?
I developed this on a Switch Lite and have never had an issue or frame drop so far. Of course, a lot of new things will be added and performance is one of my priorities.

Is there any other place where I can get info about this project?
Not for now. This post will be updated with new things when the time comes.

Is there any GitHub project?
That will be my next step. I'm organizing everything to push and allow other people's collaboration.

CONCEPTS
View attachment 506339
1. Main Page

View attachment 506340
2.1. Pop-up Concept

View attachment 506341
2.2. Pop-up Concept

View attachment 506347
3. Badges Concept - For now, it's only stars because I don't want to waste time on this right now.

View attachment 506350
4. Real Badge PopUp - I used Plutonium (thanks to XorTroll), but I discarded the idea because of the limitations.

I have big ideas and many ambitions for the project. I'm trying not to let the scope grow too much until it becomes minimally viable. I would love to hear from you about what I can improve and what I should keep doing.
So how's the progress going and do you have Instagram or ticktock? Would love to keep asking here and there on updates.
 

Site & Scene News

Popular threads in this forum