◀ VibeCruiser

td radish

A free browser game — play it in your browser, no install. 保卫萝卜风格塔防 — TDRadish 的 Web 复刻(Phaser 4 + TypeScript)

by @dawncoolm · dawncoolm/td-radish on GitHubLANG TypeScriptHOSTED ON RADISH.CCLLIANG.COMUPDATED 7 Sep 2026

Vote and save it — continue with GitHub or sign in free

Made this, @dawncoolm? See how many people played it → or use email

▶ Play full screen ▲ Vote with GitHub ▲ Vote with email

GitHub asks to share your profile and email with us. We never post anything.

Open the live demo Source on GitHub

From the README

把 Unity 项目 dawncoolm/TDRadish 逐条复刻到浏览器: Vite + TypeScript(strict) + Phaser 4,纯静态、无后端,存档走 localStorage。

游戏本身能做什么、怎么玩,见 docs/features.md。 复刻的取舍与原版机制的逐条基准,见 docs/技术选型与复刻计划.md 和 docs/原版机制规格.md。

public/assets/ 下的全部美术与音频均提取自商业游戏《保卫萝卜》(Carrot Fantasy), 版权归凯罗天下 / 原始权利人所有。

分层约束:src/core/** 不许 import phaser。战斗逻辑全部在 core 里, 场景层只负责「把快照画出来 + 把事件翻译成动画和音效」。 渲染层每帧必须调一次 world.consumeEvents(),否则事件队列会无上限增长。

每张贴图都有对应的占位图形(纯色方块 / 圆形),BootScene 加载失败只会 console.warn 并退回占位纹理,不阻塞任何流程——只是画面会变成一堆色块。 要整体换成自己有权使用的素材,改这一份清单就够,可以先跑起来再逐张替换。

可以在控制台里 __tdGame.scene.getScene('Battle').world.snapshot() 直接看模拟状态, 或者用 __tdGame.

Read the full README on GitHub →

Built something like this? Submit your vibe — free account, takes a minute. How listing works.

More like this

Made this?

Claim it: create a free account, then press CLAIM THIS in the cruiser. Put the badge below in your README or on your demo page first; that link is how we know it's yours.

Your project is on the cruise, loaded live from your own site. Put the badge in your README or on the demo page: it shows your live play count, it links back to this page, and everyone who lands here is one click from running the real thing.

On VibeCruiser

How listing, the badge and claiming work →