2.2 KiB
Cards For Humanity
Live at https://humanity.cards
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:
./test
Without auto-reload:
cargo run -p server
Use -b <ADDR>
or --bind <ADDR>
to bind the server to a specific address. Default is 127.0.0.1:3030. You can also pass arguments to the test script.
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 the live server. -
Configure any custom clients to connect to
ws://127.0.0.1:3030/websocket
for local testing orwss://humanity.cards/websocket
to use my server.
Tools:
There is a tool named socket_blaster used for stress testing the server.
Run
cargo run -p socket_blaster -- -h
to see available options.
Then
cargo run -p socket_blaster -- [COMMAND]
to run a command.
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