INSTRUCTIONS: Press space to change the color of your column. If each person claims 8 columns, it's possible to chat in ASCII. Please don't do this, as chat rooms are not allowed. When you get bored of this because it isn't fun because this project is merely intended as a demo for how to make an infinite-player online game, don't press the stop button. Instead, press q. This will make the game know that you aren't playing anymore and also stop the game for you. NOTES: (for people who aren't playing the dumb game and are instead trying to make an infinite-player game in Scratch) This project is not intended as a real game, but more of a demo of how to use cloud variables for a game with unlimited players. The line ((floor of (x/y)) mod 2), where x is any number, and y is a power of 2, returns the digit of the binary number x specified by log_2(y). Feel free to check this yourself. The expression (e^ of ((ln of 2)*x)) returns 2^x. (Of course, this is only approximate. If you are only raising 2 to the power of integers, use a round block around this.) This is not used in the project, but could be useful if you wanted the player numbers not to be powers of 2. The expression ((ln of x)/(ln of 2)) returns lg x, or log_2(x). Again, this is approximate. I did not need to round this because it is only used for the positioning of the bars, and the error is tiny. One disadvantage of this system is that you have to explicitly quit (by pressing Q in this case), and if you stop, everyone is forever locked out of that player, including you. One possible way to fix this is that each player has a timer that toggles every half-second between 0 and 1 while that player is playing, and if anyone finds a player whose timer has not changed for 3 seconds, they boot the player out. The problem with this is that everyone will boot someone at once. In this case, the PlayersJoined variable would go down by a very large amount (if a lot of people are playing, which won't happen because it's Scratch, but you should design for border cases). To fix this, we have a few options. a) There is a "hall pass" cloud flag that is either 0 or 1, as well as a personal "hall pass" variable that is either 0 or 1. If you just joined ant the "hall pass" variable is 0, you take it and set your flag to 1. You then wait 3 seconds and clean up inactive players, and then give the pass back. The problem is that someone might take the hall pass and quit. This is very bad and would grind the process to a halt. b) Player is a VIP that checks for inactivity. If Player is inactive, Player can see this and become the VIP. If Players and are both inactive, VIP privilege goes to Player , and so on. The problem with this is that all players might leave at the same time. Then, when a new player joins, they see the tragedy and become the VIP no matter what, cleaning up all inactive but joined players. The PlayersJoined and totalOn variables should be treated as binary numbers, where each 1 or 0 denotes whether that player is joined/on or not. If you need to store more than one bit of data per player, you have a few choices. a) You can make 32 variables for a 32-bit number. Not recommended. b) You can give each player 32 bits of data, and whenever using the floor-div-mod block, make sure to raise the player number to the 32nd power. Negative numbers would be hard and you can probably figure them out.