Player 1
0
⚡
Player 2
0
W / S — Player 1
↑ / ↓ — Player 2
Space — Pause
🔮 Equivalent FORGE Code
// FORGE Pong — @parallel physics engine
module Pong {
struct Ball { x: i32, y: i32, vx: i32, vy: i32 }
struct Paddle { y: i32, score: i32 }
struct GameState {
ball: Ball,
left: Paddle,
right: Paddle,
frame: i32
}
fn init_game() -> GameState {
return GameState{
ball: Ball{ x: 40, y: 12, vx: 1, vy: 1 },
left: Paddle{ y: 10, score: 0 },
right: Paddle{ y: 10, score: 0 },
frame: 0
}
}
@parallel
fn update_physics(state: GameState) -> GameState {
let nx: i32 = state.ball.x + state.ball.vx
let ny: i32 = state.ball.y + state.ball.vy
// Wall bounce, paddle hit, scoring...
// Auto-parallelised across CPU cores
return GameState{ ... }
}
fn render_frame(state: GameState) -> void {
// Terminal render (80x25)
print("Left: {d} Right: {d}",
state.left.score, state.right.score)
}
fn run_loop() -> void {
let game = init_game()
while true {
render_frame(game)
game = update_physics(game)
}
}
}