Do Terrible is a Commentary Game. You might have heard of another similar game called Cards Against Humanity. I want to make it absolutely clear that I have nothing to do with them.
An instance of the game is hosted at https://doterrible.com. Have fun!
The game is perfectly playable including real-time game state updates and chat (with autoscroll and user name/presence updates) even when JavaScript is disabled.
I found the (Ab)use the Platform project very inspirational and I've always fancied the idea of doing things without requiring script. This project is a successful experiment in delivering a polished real-time gaming experience without requiring a client to execute any script whatsoever.
A list of interesting technologies and techniques used in this project:
- Remix
- Vite
- Forms
- Progressive enhancement
- Response, Server-sent events, and long polling including at the top level to transform the React pipeable stream output
- Algorithm L reservoir sampling to efficiently generate custom decks for each game from a large pool of packs
- Dynamic text scaling (when scripts are enabled)
Install the dependencies with npm
:
npm install
You must install some packs before you can play. Check out
https://github.com/crhallberg/json-against-humanity and copy e.g. cah-all-full.json
to the
data/packs
directory.
NOTE: The grammatical quality of many of those packs (even/especially the Official™ ones) leaves a great deal to be desired.
Finally, you may:
npm run dev
to run a dev server.
npm run build
After that, you're on your own, hero. 🙂
Probably! Feel free to create issues and tell me what I screwed up. :) The no-js acrobatics are probably terrible for accessibility. I'd love to know how to improve!