◀ VibeCruiser

howtofish

A free browser game — play it in your browser, no install. a 2D game. 把「钓鱼」和「打鱼」荒诞结合起来的 2D 网页游戏。单个 HTML 文件、零依赖、双击即玩。 玩法灵感来自 Steam 上的 How to Fish(渔力全开):那款游戏的核心笑点是 —— 钓鱼只是个开始。鱼钓上来会变成「疯鱼」乱蹦,你得抄起家伙把它打晕,不然它蹦回海里,你就白钓了。 原版是 3D 物理联机游戏。这里用纯原生 JavaScript 做了一个 2D 单机致敬版,保留了核心循环和大部分笑点。 张力涨得比落得快,所以你必须反复「按住 → 松手 → 按住」。鱼越大挣扎越凶,节奏越紧。 这个项目带了一套无头测试(_verify.js)。它用模拟的 DOM /…

by @sharkbuster · sharkbuster/howtofish on GitHubLANG HTMLHOSTED ON SHARKBUSTER.GITHUB.IOUPDATED 17 Sep 2026

Vote and save it — free account with email or sign in with GitHub

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

Controls: Space · Mouse

▶ Play full screen ▲ Vote: free account with email ▲ Or sign in with GitHub

GitHub may ask you to sign in, then to let VibeCruiser “Verify your GitHub identity” and “Act on your behalf”. We only read your profile and email, and never post anything.

Open the live demo Source on GitHub

From the README

把「钓鱼」和「打鱼」荒诞结合起来的 2D 网页游戏。单个 HTML 文件、零依赖、双击即玩。

玩法灵感来自 Steam 上的 How to Fish(渔力全开):那款游戏的核心笑点是 —— 钓鱼只是个开始。鱼钓上来会变成「疯鱼」乱蹦,你得抄起家伙把它打晕,不然它蹦回海里,你就白钓了。

原版是 3D 物理联机游戏。这里用纯原生 JavaScript 做了一个 2D 单机致敬版,保留了核心循环和大部分笑点。

张力涨得比落得快,所以你必须反复「按住 → 松手 → 按住」。鱼越大挣扎越凶,节奏越紧。

这个项目带了一套无头测试(_verify.js)。它用模拟的 DOM / Canvas 把游戏真跑起来,可以断言游戏内部状态,不需要浏览器也不需要显卡。

damageBoss() 里引用了一个未定义的变量 isl,抛 ReferenceError。 也就是说,这个游戏原本根本通不了关 —— 只要打死任意一个 BOSS 就报错。

掉落物生成在 x ≈ 480~960,而「鱼蹦回海里」的判定线是 468。 所以它们落地的第一帧就被判定为逃跑、直接销毁,玩家永远看不到这份奖励。

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 →