While I was in college, I printed several thousand words onto a magnetic sheet and cut them out, essentially making a huge "magnetic poetry" kit, and stuck them on the fridge. Because I lived near the school, my apartment was a hub for students in-between classes and after school, and the words on my refrigerator were soon sorted into poems of all kinds. I had just finished a research project on creating multiuser Flash programs (this was Flash 4, when everyone thought that sort of thing was impossible). To prove it was, I decided a giant online magnetic poetry program would be a fantastic idea.
The program started as just words. Anyone could log on and drag around the existing words; it looked just like the word magnets on the refrigerator. Other people could log on and watch as words sorted themselves into poems.
Over time, I added instant messaging features and the small project exploded - it was featured on the NewGrounds main page as the first truly realtime multi-player Flash-based game and within a day gained 3,000 accounts. For nearly a year it maintained an average of 50 users logged at once, all writing and reading poetry.
- A virtual refrigerator that equates to approximately the surface area of the earth
- More than 50,000 words, games and pictures
- Footprints and name tags show other users' mouse cursor as they move words and play games
- Rich-text chat channels, personal messages, favorite locations, friends lists, integrated help
- Personal "pages" for each user
- Streaming music channels from free online radio stations
- "Clippets" - a 2d-space equivalent of an animated emoticon
One unique feature of this system is that developers can make their own multiuser games that get "dropped" on the virtual refrigerator and users can play. This presented a challenge; I couldn't allow users to run code on the server for security and performance reasons, but I also couldn't trust all clients to not cheat. The solution was a unique "peerserver" pattern in which the clients "agree" on an outcome. Any client that makes a decision that doesn't agree is assumed hacked and is removed from the game. The magnetic poetry server did no game computations - its only purpose was to serialize the clients commands and make sure that all peerservers were agreeing on the game outcome (the score, for example). Despite this restriction, programming a multiplayer flash game was simple - it followed a basic client/server pattern, except all code was written and run on the client.
I wrote more than 95% of the code and lots of plug-ins. Many more of the plug-ins were user-created content:
Reversi, checkers, chinese checkers, chess, go, whiteboards, simon says, riddles and puzzles, an english-to-LEET translator, widgets that give you access to a unique chat channel, targeted advertisements, embedded movie clips, user art.
To check it out yourself: