Framework v3 is a preview. A v3 game ships two files:
/src/lib.rs: the game's rules, written in Rust against the boardweaver_live SDK (see v3-rust-sdk). Other /src/*.rs files are modules you declare from lib.rs with mod name;./src/frontend.tsx: the React client, on v3's own boardweaver/react: the same UI and animation libraries as v2 and the same no-props default export, but reading the view of the state its player may see. See v3-react-client.A game is pinned to v3 when it is created with create_game and frameworkMajor: 3. It starts as tic-tac-toe, and get_example with tic-tac-toe-rust shows the same seed.
validate_code, start_game and commit compile /src/lib.rs to WebAssembly. The SDK owns Cargo.toml: a game uses Rust's standard library, boardweaver_live, serde and serde_json, and nothing else. A compile error comes back as /src/lib.rs:LINE:COL: error[...].Rng), whose seed is the server's, and one that picks from a group the player cannot tell apart, which the server draws from at random.choice, confirm, cancel, undo), the seed it drew from, and the log lines it wrote.Table. Reads are free (table.state()); every change goes through a Table method, which is how the platform learns what changed.static or global variables: a match can be reloaded from its state at any time, and anything kept outside it is lost.Rng for anything random. There is no clock and no other source of randomness.table.allow_undo() lets a player take a move back and table.log(...) writes the game log; see "Undo" and "Game log" in v3-rust-sdk.meta_data reaches every client. A player's hidden picks, hands and bids go in private state or a private space (see "Hidden information" in v3-rust-sdk).public_kind is what everyone sees; what it really is goes in private_kind, which only its viewers receive.render_game does not run on preview environments.start_game and apply_action, or in a real match./src/frontend.tsx for v3 games; validate_code checks that it bundles.