See the above post for all the original details. All Bad Cards
is a party game for people who enjoy games like Cards Against Humanity, built for the masses. It's simple, reliable, and free. It supports up to 50 players per game. It's open source
. It runs solely on donations and sponsorships.
As the site has grown, my most difficult learning curve has been supporting traffic bursts on the servers. This week, I think I can finally say that problem is solved. It's been a bumpy ride, but after a VERY smooth week, it's all ironed out. 2 weeks ago was rough - but I figured out that problem and we're smooth sailing.
Crazy Shit Happened
As you may have noticed, there was a reckoning of games associated with or similar to Cards Against Humanity.
- CardCast is no more
- Remote Insensitivity (on playingcards.io) is no more
- Cards Against Humanity removed the CC-BY-NC license callout from the printout section of their website, and modified their FAQ to explicitly prevent all monetary compensation of any kind
The day before these sites were taken down, I received an email from Cards Against Humanity detailing ways in which they deemed I was violating their CC-BY-NC license. These basically boiled down to: mentioning CAH by name and claiming to be a clone of CAH, accepting donations/Patreon, and mimicking their "trade dress" (using black and white color scheme).
By my reading of the CC-BY-NC license, it's perfectly within the rights of any derivative creator to create revenue using their creation if the primary purpose of that revenue is not commercial advantage or monetary compensation
. The Creative Commons wiki is actually pretty specific about this, and explitictly states "The inclusion of 'primarily' in the definition recognizes that no activity is completely disconnected from commercial activity; it is only the primary purpose of the reuse that needs to be considered." (link
) Moreover, CC specifically states that license holders' attempts to explain or extend the "NC" portion of the license do not actually modify the license itself (see "Explanations of NC do not modify the CC license." here
Additionally, by my reading of the above link, Cards Against Humanity is itself violating the Creative Commons license by attempting to carve back the allowances described in CC-BY-NC, and should not be using it by name on their content. Irony! ANYWAY -
regardless of how I feel about this, I'm one guy making a website that is pretty popular. I can't pay for it myself, so I need to ask for donations or run ads, both of which are prohibited, or shut down the site. I didn't want to shut down the site, because it's fun and people like it, and it's giving lots of people joy during quarantine. So -
I had to remove the Cards Against Humanity cards from the site. I also changed the color scheme and removed any reference to Cards Against Humanity from the website, Twitter, and any other marketing materials. I left the Family Edition up, because I think it's important that people be able to play with their families, but removed all donation and Patreon links from it.
So that's why, if you go to All Bad Cards these days, you won't see any official packs. However, I accounted for this fact in a bunch of ways
. Below are all of the new things I've done to ensure that All Bad Cards is still a kickass game that is super fun.
Before I list all of the features that are new, let's talk about another thing:
CardCast Shut Down
This sucked! I assume it was related to a similar situation that I detailed above. CardCast existed for a really long time, and most people were using it for the API instead of the actual game. I'm guessing the creators just didn't feel like it was worth it to make a ton of changes.
The worst part of this is that everyone's card packs disappeared into the ether without warning.
Thankfully, I had recently added CardCast support to All Bad Cards, and I built in protections to avoid hitting the CardCast API too hard. Because of this, I had cached copies of every CardCast deck ever used on All Bad Cards by anyone
- roughly 3,000 packs.
I built a page for people to search and export their CardCast pack data here: https://allbad.cards/cardcast-export
But what use is a JSON file full of card data with nowhere to put it? Well. I thought the same thing. So, on to...
Custom Pack Creator: https://allbad.cards/packs
In a frenzy of coding and caffeine, I busted out a custom pack creator with a speed I probably have never created a single feature before. I think it took 2 days. If you have a pack saved from CardCast using the method above, you can import it back into All Bad Cards and be playing again within 5 minutes. The UI should be really straightforward and simple. You can create one card at a time, or use the multi-line editor to add a lot of cards all at once.
The search feature is a little bit more robust than CardCast's, which I thought made it a bit hard to find good packs. Their popularity sorting was based on user-rating, which is not awesome because nobody actually gives star ratings to anything. Instead, we use a popularity score based on the number of times a pack is "saved", using...
You can now log in to All Bad Cards using your Patreon account. Right now, this provides functionality that is pretty limited to custom packs - you can create packs and "save" packs. When you save a pack, it's essentially like adding it to your favorites, but the best part is that all of your saved packs will automatically be included in any games you play as long as you're logged in. You don't have to add them with a code.
Note - You do not need to be a backer or pay money in any way to use this feature
. You just need a Patreon account. Why did I do it this way? Well, for one, it is a LOT more secure to use an OAuth implementation than to roll my own account system. Your password and data is way more protected this way. The other reason is that I can use this connection to give extra benefits to Patreon subscribers.
To be clear, these benefits will NEVER gate features that already exist in the game. The game will always be for free. Any features Patreon subscribers would get would be on top of the systems that already exist.
New "official" packs
After the removal of the official packs, we were left with a divot of a couple thousand cards. Thanks to the generosity of Talking Out Uranus
, we added 9 additional packs of high-quality cards. It has gone super well - the cards are great, and I've had no complaints about missing the official packs.
Idle player detection
A big point of feedback was that games can get really slow if a player goes idle, especially public games where you aren't talking to anyone. Now, in public games, the site will automatically kick players who go idle (leave their window for at least 2 minutes). For private games, players will be marked as "idle" so the game owner knows they can kick them if they want.
I added this in the last major update, but I misunderstood what people wanted out of it. Before, you were forced to write in your own answer for every round, which isn't what people wanted. Now, if you enable the option, you are granted a write-in card for every round, in addition to the white cards you already had.
You probably aren't surprised about this, but adding chat resulted in a ton of trolls, racism, and just hateful behavior. It's anonymous chat, so of course that happened. So I added the option to mute people simply by clicking their username and approving the action.
Sometimes it's not obvious that it's your turn to be the Card Queen, so the site will send a (mutable) audio cue when it's your turn.
Automatic game length
Previously, all games defaulted to a 7-rounds-to-win state. This gets ridiculous if you have a game of 7+ players - you'll never actually finish. Most games last about 30 rounds before people want to pause or start over. That seems to be the sweet spot. As such, the site will automatically set the rounds-to-win based on the number of players playing. It's roughly (32 / playerCount)
, rounding up, with a minimum of 4 rounds right now. The algorithm also protects from early endings if more players join.
Boring stuff: server architecture improvements
It turns out the main reason my servers were struggling was due to excessive logging, which was filling up the smallish disks of the instances I'm running. That, plus a couple of other protections I added, has resulted in massively improved uptime. Additionally, I was able to cut some costs that reduced my monthly expenditure on the servers.
These, among a ton of other bug fixes, performance fixes, design changes, and general improvements, make the site a lot better and more solid. As always a HUGE shoutout to everyone who has supported the site and kept it running. Y'all are the real heroes.