---
title: "Pixel Pizza"
url: "https://aigamehub.app/zh-tw/games/telar-demo-874c33"
source: "https://github.com/deeptelar/telar-demo"
source_type: "github"
play_url: "https://deeptelar.github.io/telar-demo/"
platform: "both"
login_required: false
pricing: "free"
origin: "original"
ai_tools: []
game_languages: ["en"]
author: "deeptelar"
author_handle: "deeptelar"
category: "休閒"
categories: ["casual", "puzzle", "simulation"]
tags: ["ai-agents", "browser", "educational", "kotlin", "open-source", "wasm"]
added: "2026-10-22T02:47:12.182Z"
updated: "2026-10-22T02:47:20.299Z"
locale: "zh-tw"
content_locale: "zh-tw"
---

# Pixel Pizza

Pixel Pizza 是一款關於 AI 代理工作流程的小型瀏覽器遊戲：你經營披薩店的客服中心，同時 Telar 圖形會逐節點處理票證，橫跨八個關卡，外加一個獎勵廚房益智遊戲。

## Description

Pixel Pizza 是一款建立在 Telar 教學之上的可玩遊戲。你扮演披薩店的客服中心：顧客寫信進來，Telar 圖形寫回覆，而你看著票證逐節點跨越看板。八個關卡各引入一個新概念，從簡單的雙節點線到條件邊、迴圈、平行節點、儲存點、帶工具的模型迴圈、重試，以及一個有四種票證的完整客服中心。一個獎勵的 K"Kitchen rush" 益智關卡增加了基於班次的排序挑戰。看板、票證面板和執行日誌是從 stream() 事件即時繪製的；執行日誌顯示每個步驟寫入票證的內容，以及條件邊選擇了哪個分支。按下看板磚塊會顯示其背後的程式碼，直接取自遊戲本身的原始碼檔案。一個「Show JSON + saves」標頭會將票證資料以 JSON 開啟，並標記變更的行，以及由 history() 讀取的檢查點，每個檢查點都可以檢查。一個 Compose Multiplatform 程式碼庫可在瀏覽器（Kotlin/Wasm）、桌機（JVM）和 Android 上運行。不需要帳號，也不需要 API 金鑰。

## Original post

Pixel Pizza: a small game about AI agent workflows in Kotlin. Eight stages, each a Telar graph that runs in your browser. Compose Multiplatform for Wasm, desktop and Android. No API key needed.

Topics: agentic-workflow, ai-agents, claude, compose-multiplatform, demo, game, human-in-the-loop, kmp, kotlin, kotlin-multiplatform, kotlin-wasm, llm, telar, tutorial, webassembly

# Pixel Pizza A small game about graphs. You run the help desk of a pizza shop: customers write in, a [Telar](https://github.com/deeptelar/telar) graph writes back, and you watch the ticket cross the board node by node. **[Play it in your browser](https://deeptelar.github.io/telar-demo/)** ![Stage 8: the kitchen and the driver run at the same time](docs/stage.png) It is the [Telar tutorial](https://github.com/deeptelar/telar/tree/main/docs/tutorial) made playable. Eight stages, one new move each, the same Pixel Pizza help desk growing from two nodes to a full agent workflow. One Compose Multiplatform codebase runs it in the browser (Kotlin/Wasm), on the desktop (JVM) and on Android. No account and no API key needed. ## Stages | # | Stage | The move | |---|---|---| | 1 | A line | Two nodes in a row: `node`, `then`, `invoke` | | 2 | Choices | `conditionalEdge` picks one of three paths | | 3 | Loops | An edge that goes back until the reply passes a check | | 4 | Two at once | Fan-out to nodes with a `work` and an `update`, which run at the same time, and a node that runs once for each dish of the order | | 5 | Save points | `interruptBefore` stops the run for you; `resume` continues it, also after a reload; `effect` pays the refund once when `pay` runs twice | | 6 | The agent | A model that calls tools, as a loop of two nodes | | 7 | Game over | A node with a `retry` tries again by itself, then fails; `resume` retries from the last save | | 8 | The full desk | All of it on one board: four kinds of ticket, four ways through | Each stage is the level of the tutorial with the same number: stage 3 is level 3. Watching a run with `stream()`, the second half of level 4, is not only in stage 4. It is the game: the board, the ticket panel and the run log are drawn from the events of `stream()` as they arrive. Under each step, the run log lists what the step wrote into the ticket (`topic = "delivery"`, `facts += "..."`), and after a conditional edge it says which node the edge picked. In the stages that ask a model, the log shows the answer word by word while the model writes it. Press a tile on the board to see the code behind it: the node, its arrows and the functions it calls. The text is cut out of the game's own source files when the app is built, so it is always the code that runs. **Show JSON + saves**, in the header of the ticket, opens what Telar keeps of the run: the ticket as the JSON of its data class, with the lines the last step changed marked, and the checkpoints that `history()` reads from the checkpointer, the latest first. Both change while the run moves across the board. Press a checkpoint to see the ticket it saved. The game remembers the switch. | | | |---|---| | ![A run waiting at a save point](docs/save-point.png) | ![A failed node, with a retry from the last save](docs/game-over.png) | ## Bonus stage: Kitchen rush ![The board with two sorters, in the middle of a shift](docs/kitchen.png) A puzzle. A pizzeria works through a shift, and
