Nodes/ComfyUI DuckHunt/Duck Shooter Game
ComfyUI Node

Duck Shooter Game

A Node That Does Literally Nothing

By SKBv0Β·Created 9 months agoΒ·Updated 2 months agoΒ· 3
Duck Shooter Game

      ComfyUI has thousands of custom nodes that load models, sample latents, and batch images. This one loads a shotgun. DuckShooter_Input is the ComfyUI-DuckHunt pack's single node: the 1984 NES classic Duck Hunt, running inside your ComfyUI window. There's a duck, there's the laughing dog, there's a gun cursor, and there's a scoreboard. There is no AI involved anywhere, which is exactly why it's great.

      What it actually is

      This is a joke node, and it knows it. The author - SKBv0 on GitHub, skbphy on Reddit - announced it on r/comfyui as "ComfyUI, but different," with the caption "Started as a small ComfyUI experiment. Somehow became Duck Hunt. Please don't judge me." Same guy made ComfyUI-RetroEngine (Doom and MAME inside ComfyUI), so "play classic games inside the node graph" is apparently his whole genre. DuckHunt is a pure frontend extension: the node class DuckShooter_Input lives in category Game and is a dummy output node. It doesn't touch your image pipeline at all, and it isn't supposed to.

      How it works

      The real machinery is in __init__.py plus a folder of HTML/CSS/JS. The pack registers a WEB_DIRECTORY, which tells ComfyUI's frontend to load its JavaScript on startup. That script registers a ComfyUI frontend extension that drops a πŸ¦† button in the top-right corner of the UI the moment the page loads. Click it and the game opens - not in an iframe, but with its DOM embedded directly into the graph canvas container, so it overlays your workflow at full size. Click βœ• and it's back to business.

      Under the hood it's a faithful JS remake ported from polon59/Duck_shooter_game_JS. The pack serves the sprites, sounds (the quack, the dog laugh, the gunshot), and game scripts over its own aiohttp routes under /duck_shooter/..., which the node class registers with ComfyUI's server when it's imported. It also pulls jQuery 3.3.1 and the Bungee font from public CDNs.

      The inputs and outputs that matter

      There are none. The info schema for DuckShooter_Input is completely empty - no required inputs, no optional inputs, no outputs. It's an OUTPUT_NODE whose run() returns (). Nothing to wire, nothing to configure. You don't even have to place it on the canvas: the πŸ¦† button shows up whether or not the node is in your graph. The node exists so the pack has a proper home in the node picker (search "Duck Shooter Game"), in ComfyUI Manager, and on comfy.icu - a category marker, effectively. Difficulty and mode are chosen on the game's own start screen, not in the node.

      Installing it

      Easiest via ComfyUI Manager: Manager β†’ Install Custom Nodes β†’ search "DuckHunt" β†’ install β†’ restart. Or manually:

      cd ComfyUI/custom_nodes
      git clone https://github.com/SKBv0/ComfyUI-DuckHunt
      

      Then restart ComfyUI. That's the entire install. This is one of the rare packs with zero Python dependencies - pyproject.toml lists an empty dependencies array, there's no requirements.txt, no model downloads, no CUDA or VRAM demands. It's client-side HTML/JS/CSS served by ComfyUI's own backend, so anything that can run the ComfyUI frontend can run Duck Hunt on it.

      Gotchas

      • It needs internet for the CDN assets. jQuery and the Google Fonts come from public CDNs, so a fully offline or airgapped ComfyUI will show the panel but the game scripts silently fail - START GAME won't do much.
      • It covers your workflow while open. The game overlays the graph canvas at full size, so you'll want it closed while you're actually wiring things. The βœ• button restores everything.
      • It recolors your nodes while you play. The shot handler swaps node colors when you hit ducks - part of the bit. Closing the panel restores them.
      • It's a toy. If your render comes out wrong and you're eyeing Duck Hunt, stop - it can't influence a single pixel. It doesn't even run during a queue.

      Honest verdict: the best use is staring at it while a Flux or LTX-Video render chews through its minutes. Every generation machine deserves one console port.

      CategoryGame

      Inputs (0)

      No inputs

      Outputs (0)

      No outputs