All Projects → mkeeter → Pont

mkeeter / Pont

Licence: other
An online board game in Rust and WebAssembly

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Pont

Sandspiel
Creative cellular automata browser game
Stars: ✭ 2,476 (+1035.78%)
Mutual labels:  game, webassembly, wasm
Zemeroth
😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust
Stars: ✭ 940 (+331.19%)
Mutual labels:  game, webassembly, wasm
Rustynes
👾 An NES emulator by Rust and WebAssembly
Stars: ✭ 399 (+83.03%)
Mutual labels:  game, webassembly, wasm
Rs Asteroids
A variation on the game Asteroids, written in Rust
Stars: ✭ 146 (-33.03%)
Mutual labels:  game, webassembly, wasm
Tdl
Node.js bindings to TDLib.
Stars: ✭ 177 (-18.81%)
Mutual labels:  webassembly, wasm
Wasm Worker
Move a WebAssembly module into its own thread
Stars: ✭ 215 (-1.38%)
Mutual labels:  webassembly, wasm
Vue
The progressive framework for WebAssembly applications.
Stars: ✭ 211 (-3.21%)
Mutual labels:  webassembly, wasm
Raw Wasm
Raw WebAssembly demos
Stars: ✭ 183 (-16.06%)
Mutual labels:  webassembly, wasm
Carton
📦 Watcher, bundler, and test runner for your SwiftWasm apps
Stars: ✭ 171 (-21.56%)
Mutual labels:  webassembly, wasm
Wag
WebAssembly compiler implemented in Go
Stars: ✭ 177 (-18.81%)
Mutual labels:  webassembly, wasm
Prototype
(deprecated) The journey continues at ASNEXT: https://github.com/AssemblyScript/assemblyscript
Stars: ✭ 2,114 (+869.72%)
Mutual labels:  webassembly, wasm
Alchemyvm
WebAssembly Virtual Machine Built In Elixir
Stars: ✭ 176 (-19.27%)
Mutual labels:  webassembly, wasm
Serde Wasm Bindgen
Native integration of Serde with wasm-bindgen
Stars: ✭ 176 (-19.27%)
Mutual labels:  webassembly, wasm
Webassembly Examples
From Simple To Complex. A complete collection of webassembly examples.
Stars: ✭ 177 (-18.81%)
Mutual labels:  webassembly, wasm
Edit Text
Collaborative rich text editor for the web. Written in Rust + WebAssembly.
Stars: ✭ 171 (-21.56%)
Mutual labels:  webassembly, wasm
Lam
🚀 a lightweight, universal actor-model vm for writing scalable and reliable applications that run natively and on WebAssembly
Stars: ✭ 176 (-19.27%)
Mutual labels:  webassembly, wasm
Wasm Examples
WebAssembly Examples
Stars: ✭ 191 (-12.39%)
Mutual labels:  webassembly, wasm
Go Wasm
The in-browser IDE for Go
Stars: ✭ 186 (-14.68%)
Mutual labels:  webassembly, wasm
Wasmpatch
🧱Yet Another Patch Module for iOS/macOS via WebAssembly
Stars: ✭ 192 (-11.93%)
Mutual labels:  webassembly, wasm
Logging
Microsoft Extension Logging implementation for Blazor
Stars: ✭ 165 (-24.31%)
Mutual labels:  webassembly, wasm

About

Project homepage

pont is an online game based on Qwirkle (by Mindware Games)

Screenshot

Notably, both the client and server are written in Rust; the only Javascript is a shim to load the WebAssembly module.

Hosting

It's easiest to run the whole application on a single VM, using NGINX to both serve static content and to act as a secure proxy for websocket communication. The latter means we don't need SSL support in the game server itself.

The system looks something like this:

Screenshot

I'm hosting a copy of the game at https://pont.mattkeeter.com, using a $5/month droplet from Digital Ocean and Dreamhost for domain registration.

Initial setup

sudo apt update
sudo apt install build-essentials libssl-dev pkg-config
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

Installing NGINX and setting up Let's Encrypt

sudo apt install nginx
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

sudo certbot --nginx

(read and follow certbot's instructions)

Turn on a firewall to improve security

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 8081
sudo ufw enable

Building the client WebAssembly file

git clone https://github.com/mkeeter/pont.git
cd pont/pont-client
wasm-pack build --target web

Deploy the nginx config

sudo cp pont.conf /etc/nginx/sites-enabled/pont.conf
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -s reload

This won't work out of the box, because the configuration assumes the url is pont.mattkeeter.com, which won't be true for you; edit it accordingly.

Running the server

cd pont/pont-server
cargo run --release

(leave this in a screen session for easy persistence!)

License

© 2020 Matthew Keeter

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].