Since SLM is one of the weirder aspects of this game, I think it might be a good idea to explain what the player needs to know about it, as well as how it works. The system is designed to be as simple as possible for the player, although under the hood things get a bit more complex. From a player's perspective, this is all you have to do:
1. Ensure you and your teammates join the same game. This can be verified using the Lobby Name when playing a Unix game, or using the same numerical seed when playing a Custom game.
2. Play the game as normal. You may want to communicate with your team so that each of you go in separate directions from the starting area, so that you can clear rooms faster.
3. Upon clearing a room, press the "PASS CODE" button to see any codes you've unlocked on the left half of the screen.
4. Enter this code into your keypad on the right to redeem your powerup.
5. Share your code with your teammates, and input codes your teammates give to you.
For those of you curious as to what's happening under the hood, here's a quick breakdown:
When you start the game, the initial state of the random number generator is set according to a seed. Every time a seeded random number is needed, this seed is modified by a nonce to produce new (but replicable) values. These values are then used to determine the initial conditions for the level itself, including passcodes required to redeem powerups and confirm room completions.
The result is that players are exploring two identical copies of the same dungeon, and are thus able to assist each other by sharing codes across different open copies of the game.
For those wondering about players cheating and collecting all of the codes before the start of the game, I'm looking into implementing a feature which salts the seed (ONLY for passcode generation) with respect to the current Unix timestamp (truncated to the nearest 60 seconds.) This will ensure that maps will still look the same if players input the same custom seed multiple times, but the codes will be different, preventing players from using codes unlocked in previous playthroughs.
There are a couple other uses for these codes as well. A feature I plan on implementing in the future is a modular boss with large chunks that drop codes when defeated. Players can focus on separate parts of the boss to kill it more easily.