client | ||
data | ||
lib | ||
server | ||
.gitignore | ||
CAH_PrintPlay2021-GameRules.pdf | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
readme.md | ||
tailwind.config.js | ||
test | ||
Trunk.toml |
Cards For Humanity
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
-
The server automatically serves the built client from
/dist
at0.0.0.0:3030
-
Configure any custom clients to connect to
ws://0.0.0.0:3030/websocket
TODO:
- finish game logic
- 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