Homebrew Homebrew app NX Plaza - Online StreetPass System for the Switch

Insektaure

Well-Known Member
Member
Joined
Aug 31, 2024
Messages
132
Reaction score
129
Trophies
1
Age
40
XP
680
Country
France

NX Plaza​


An Online StreetPass System for the Nintendo Switch.

In the 3DS days, you could trade a few hundred bytes with every console you physically walked past.
The Switch has no radio homebrew that can drive that way, so NX Plaza keeps everything else about the idea and moves the trade to the internet.

Your console quietly swaps a small pass with other consoles that share your network or your corner of the internet, and you come back later to a stack of them.

Roadmap​

The app is in active development and new features will be added with time such as (if possible, and not limited to) :

- A StreetPass Sysmodule (get pass even when playing games, no need to open the full app to receive)
- A sticker collection (so we are collecting something else than people Cards)
- ...

What a pass is​


About 450 bytes of JSON. A chosen name, a greeting of at most 60 characters, a card theme, your Mii, optionally a title you have played, up to four small things you are "carrying", and a "place" label you typed yourself.

The title is picked, not typed : the console keeps a play history, so Your pass →Title on your pass steps through the last five games and defaults to the most recent.

It is deliberately "last played" rather than "playing now".

Settings → Show what I am playing strips it from the outgoing pass entirely, and a console that has played nothing shows the row as empty rather than inventing one.

It never contains your account name, your friend code, your IP, or a position.

Your Mii​

Make a face in Your pass → Your Mii : face shape, skin, hair and its colour, eyes and theirs, eyebrows, nose, mouth, glasses, facial hair, headwear, build, and the placement of it all.

A pass that has never been through the maker still shows a face : one derived from the portrait seed the pass already carries. Nobody is a blank silhouette.

Identity​

On the very first launch the app generates:

[TABLE=full]
[TR]
[th]Field[/th][th]Size[/th][th]Purpose[/th]
[/TR]
[TR]
[td]id[/td][td]128 bits, hex[/td][td]public; travels with every pass so repeat crossings can be recognized[/td]
[/TR]
[TR]
[td]token[/td][td]256 bits, hex[/td][td]secret; bearer token that proves the id is yours[/td]
[/TR]
[/TABLE]

Both come from the console's CSPRNG (csrngGetRandomBytes, falling back to randomGet) and are stored at sdmc:/switch/nx-plaza/identity.json.

Nothing about them is derived from the hardware : no serial, no MAC, no account id.

Copy that file to move your plaza identity to another console ; delete it (or use Settings → Start over) and you are somebody new, with everything you already handed out permanently unlinkable from you.

The first-run screen shows a short human form of the id (e.g. K4M-92X7) plus a 9×9 fingerprint pattern, so two people standing together can confirm they are looking at the same console without reading 32 hex characters aloud.

How "walking past someone" works without a radio​

Two signals, both of which the console can produce honestly :
  1. Place token - SHA-256("nx-plaza/place/v1|" + SSID), truncated to 64bits, computed on the console. Two Switches on the same café, station or campus network land in the same bucket. The SSID itself never leaves the console.
  2. Network area - the server buckets the source address by /24 (IPv6/48). This catches consoles on Ethernet, and groups people behind the same ISP egress.
Settings → How far a crossing reaches picks how much of that you accept : Same network (closest to real StreetPass), Nearby, or Anywhere - a world plaza.

Anywhere is the default. The narrower settings are closer to what StreetPass actually was.

Exchanges are mutual and rate limited : at most 12 crossings a day by default, one crossing per pair per six hours.

Light and Dark Theme​

The app opens in light and can be switched in Settings → Appearance →Theme : Light, Dark, or Console (follow the Switch's own light/dark setting, re-read whenever the app regains focus). The choice is saved in profile.json.

Known limits (for now)​

- At most 12 crossings a day (you can modify it up to 48 in the settings), one per pair per six hours.
- The collection keeps the 5000 most recent people. Past that the oldest cards you have already opened are dropped first, and unread ones are only touched if dropping every read card still is not enough.
- Only the 64 most recently played titles are looked at.

Disclaimer​

This is a homebrew app. It is not affiliated with Nintendo, and it is not officially supported. Use at your own risk. The author is not responsible for any damage or loss of data that may occur from using this app.


GitHub : https://github.com/Insektaure/NX-Plaza
 

Attachments

  • 001.jpg
    001.jpg
    107.1 KB · Views: 1
  • 002.jpg
    002.jpg
    68.9 KB · Views: 1
  • 003.jpg
    003.jpg
    64.8 KB · Views: 1
  • 004.jpg
    004.jpg
    65.4 KB · Views: 1
  • 005.jpg
    005.jpg
    103.2 KB · Views: 1
  • 006.jpg
    006.jpg
    79.9 KB · Views: 1
  • 007.jpg
    007.jpg
    73.2 KB · Views: 1
  • 008.jpg
    008.jpg
    66.9 KB · Views: 1
  • 009.jpg
    009.jpg
    50.9 KB · Views: 1
  • 010.jpg
    010.jpg
    52.4 KB · Views: 1
  • 011.jpg
    011.jpg
    94.8 KB · Views: 1
Last edited by Insektaure,

Site & Scene News

Popular threads in this forum