client | ||
data | ||
lib | ||
server | ||
.gitignore | ||
build | ||
CAH_PrintPlay2021-GameRules.pdf | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
readme.md | ||
tailwind.config.js | ||
test | ||
Trunk.toml |
Cards For Humanity
Live at https://cards.doordesk.net
A game master server for the popular game Cards Against Humanity using data from Chris Hallberg's project JSON Against Humanity (everyone say "Thanks, Chris!")
This started as a problem trying to play games with friends who are all on different platforms. This shall be as cross-platform as it gets. I want it to work on anything that can establish a connection and allow anyone to write any front-end they can dream up whether it be a web page, chat bot, VR, etc. Any clients who share a master server can play together across any platform.
Test/Dev:
Server
With auto-reload:
Then:
watch -i client -cx run
or if you're lazy like me just run ./test
Without auto-reload:
cargo run
Client
Then:
trunk serve --open
Build:
Client
trunk build --release
Server
cargo build --release
-
The server automatically serves the built client from
/dist
at127.0.0.1:3030
. When building for release the client automatically points to doordesk -
Configure any custom clients to connect to
ws://127.0.0.1:3030/websocket
for local testing orwss://cards.doordesk.net/websocket
to use my server
TODO:
- prevent zombie users after browser crash
- figure out proper auth - client's problem?
- use db
- test bincode and probably move away from json
- make typescript sdk
- support card text editing
- prevent import of cards that have been seen already and edited
- handle duplicates
- efficiency
- make demo clients for multiple platforms and screens