https://github.com/josepedrodias/stdb-tictactoe
tictactoe game in spacetimedb - rust backend, ts frontend
https://github.com/josepedrodias/stdb-tictactoe
multiplayer-browser-game multiplayer-game multiplayer-game-server spacetimedb
Last synced: 28 days ago
JSON representation
tictactoe game in spacetimedb - rust backend, ts frontend
- Host: GitHub
- URL: https://github.com/josepedrodias/stdb-tictactoe
- Owner: JosePedroDias
- Created: 2025-04-15T17:27:51.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2025-04-15T17:34:16.000Z (about 2 months ago)
- Last Synced: 2025-05-05T05:08:25.801Z (28 days ago)
- Topics: multiplayer-browser-game, multiplayer-game, multiplayer-game-server, spacetimedb
- Language: TypeScript
- Homepage:
- Size: 26.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# tic-tac-toe
The simplest tic tac toe game, in [spacetimedb](https://spacetimedb.com/).
Server code in Rust.
Brower client code in TypeScript and vanilla DOM interface.## Tables
```
Game
id: u32
p1: Identity
p2: Identity
when: TimestampGameMove
id: u32
game_id: u32
player_id: Identity
when: Timestamp
position: u8Feedback
id: u32
game_id: u32
player_id: Identity
when: Timestamp
message: StringDeleteGameTimer (private, to trigger delete_game reducer later)
scheduled_id: u64
scheduled_at: ScheduleAt
game_id: u32PlayerStats
id: Identity
starts: u32
wins: u32
ties: u32
losses: u32
created_at: Timestamp
updated_at: Timestamp
```## Reducers
```
- play(game_id: u32, pos: u8)
- delete_game(game_id: u32) // not meant to be called from the client
- new_game() // problematic for now, not in use
```## Commands
```
spacetime generate --lang typescript --out-dir client-ts/src/module_bindings --project-path server-rs
clear && spacetime publish --project-path server-rs tic-tac-toe --delete-data -ycd client-ts
npm run build
npm run previewspacetime logs tic-tac-toe
spacetime sql tic-tac-toe "SELECT * FROM game"
spacetime sql tic-tac-toe "SELECT * FROM game_move"
spacetime sql tic-tac-toe "SELECT * FROM feedback"
spacetime sql tic-tac-toe "SELECT * FROM player_stats"spacetime sql tic-tac-toe "SELECT * FROM game WHERE p1='c20084e43db5f504f6a7c7d25fbc70f44722473634416bd58ea40c13969a320d'"
spacetime sql tic-tac-toe "SELECT * FROM game WHERE p2='0000000000000000000000000000000000000000000000000000000000000000'"
```## TODO
- improve rust code (strings, repeated code, make board into a struct?)
- show new game button or fix the new_game reducer usage