oneshotlm
Compare all models on this prompt →

Brick breaker · llama-4-scout

Using the pre-provided phaser.min.js (global Phaser), build a playable brick-breaker game with a paddle (arrow keys or mouse), a bouncing ball, and a wall of breakable bricks with a score. Use ONLY procedurally generated graphics via the Phaser Graphics API or generated textures — no external image or audio assets whatsoever.

⚠ no runnable output

This one-shot run produced no runnable artifact.

agent produced no index.html

The transcript below shows what the model did — read it to see why the one shot fell short.

transcript · 2 messages
user

Using the pre-provided phaser.min.js (global Phaser), build a playable brick-breaker game with a paddle (arrow keys or mouse), a bouncing ball, and a wall of breakable bricks with a score. Use ONLY procedurally generated graphics via the Phaser Graphics API or generated textures — no external image or audio assets whatsoever.

assistant

[write(index.html, <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Brick Breaker</title> <style> /* Add some basic styling to our game */ body { margin: 0; background-color: #f0f0f0; } #game-container { width: 800px; height: 600px; border: 1px solid black; margin: 20px auto; } </style> </head> <body> <div id="game-container"></div> <script src="phaser.min.js"></script> <script> // Create the game var config = { type: Phaser.CANVAS, parent: 'game-container', width: 800, height: 600, scene: { preload: preload, create: create, update: update } }; var game = new Phaser.Game(config); // Game variables var paddle; var ball; var bricks = []; var score = 0; var scoreText; function preload() {} function create() { // Create the paddle paddle = this.add.rectangle(400, 550, 100, 20, 0xffffff); paddle.setCollideWorldBounds(true); paddle.setBounce(0); // Create the ball ball = this.add.circle(400, 300, 10, 0xffffff); ball.setCollideWorldBounds(true); ball.setBounce(1); ball.setVelocity(200, 200); // Create the bricks for (var i = 0; i < 5; i++) { for (var j = 0; j < 8; j++) { var brick = this.add.rectangle(100 + j * 90, 50 + i * 30, 80, 20, 0xffffff); bricks.push(brick); } } // Create the score text scoreText = this.add.text(10, 10, 'Score: 0', { fontSize: '24px', fill: '#ffffff' }); // Input events this.input.keyboard.on('keydown_LEFT', function() { paddle.x -= 10; }); this.input.keyboard.on('keydown_RIGHT', function() { paddle.x += 10; }); // Mouse input this.input.on('pointermove', function(pointer) { paddle.x = pointer.worldX; }); } function update(time, delta) { // Update the ball if (ball.x < 0 || ball.x > 800) { ball.setVelocityX(-ball.body.velocity.x); } if (ball.y < 0) { ball.setVelocityY(-ball.body.velocity.y); } // Collision with paddle if (Phaser.Geom.Intersects.GetRectangleToRectangle(paddle.getBounds(), ball.getBounds())) { ball.setVelocityY(-ball.body.velocity.y); } // Collision with bricks for (var i = 0; i < bricks.length; i++) { if (Phaser.Geom.Intersects.GetRectangleToRectangle(bricks[i].getBounds(), ball.getBounds())) { bricks[i].destroy(); bricks.splice(i, 1); ball.setVelocityY(-ball.body.velocity.y); score++; scoreText.setText('Score: ' + score); } } // Game over if (ball.y > 600) { this.scene.restart(); } } </script> </body> </html> )]

TAKE IT TO CODE

This run produced no artifact — reuse the prompt with a different model or your own pi-agent run.

RUN

modelllama-4-scout
vendorMeta · Llama
harnesspi-agent
generated2026-08-02

METRICS

runtime8.1s
tokens in1.6k
tokens out891
cached0
cost / run$0.0004