Inspiration
We decided very early on that we wanted to create something completely user controlled. Some of the most exciting projects are those where users have full control over making, and breaking, its success. One example is Twitch Plays Pokémon, where one rogue user could hold back thousands of others for hours. After going through various ideas of what could be controlled by the public, we realised that there wasn't really a neat way for a story to be written by the public, so now there is!
What it does
The concept is based on the age old 'Three Word Story' posts that float round Reddit and forums. Essentially, the system provides you with three words to start a sentence (from a database, chosen randomly). Users then have a set number of seconds to suggest what the next three words should be. After the time is up, every user can vote on what they think is the funniest. There are no points (so there is no motivation to vote for your own); the only prerequisite is a good sense of humour all round.
Once the best three words have been chosen they are added to the end of the sentence....and the process repeats!
After a sentence has reached 30 words (e.g. 10x 3-word rounds) the result is saved to the database and a new starting phrase is created.
Simple!
How we built it
Tales Against Humanity has three main parts: 1) Frontend This is Bootstrap and jQuery. 2) Server This connects to the database and negotiates the voting procedures. Data is stored in a MySQL database. 3) Pusher Pusher connects every user to the system.
Challenges we ran into
One major issue was ensuring no commands were lost in the lag time between the deadline being reached and the server batch processing the round's data. This was hacked around by using jQuery BlockUI, which essentially blocks the user from adding data to the system until the server deems it safe to do so.
Another issue we hit was keeping a live JavaScript countdown timer up to date. We have not fixed this yet!
We also had domain registration issues, so it's .tk for now.
Accomplishments that we're proud of
The system can theoretically cope with as many users as he Pusher API and backend server can permit. The UI was built with high load in mind. It'll be good to see if it holds up!
What we learned
PHP is not the best platform for anything asynchronous. Go learn Node.JS. Now.
What's next for Tales Against Humanity
Censored back history and some sort of profanity filter would be helpful, or at least an option to switch off NSFW! It's an easily abused system at this point. The app also needs better responsiveness on mobile.
Log in or sign up for Devpost to join the conversation.