{"id":35746399,"url":"https://github.com/soulctcher/TetriNode","last_synced_at":"2026-01-12T20:00:46.485Z","repository":{"id":332019217,"uuid":"1126945670","full_name":"soulctcher/TetriNode","owner":"soulctcher","description":"ComfyUI node for playing Tetris","archived":false,"fork":false,"pushed_at":"2026-01-12T02:37:31.000Z","size":6032,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-12T08:04:55.871Z","etag":null,"topics":["comfyui","comfyui-custom-node","comfyui-nodes","tetris","tetris-clone"],"latest_commit_sha":null,"homepage":"https://registry.comfy.org/publishers/soulctcher/nodes/TetriNode","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soulctcher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-02T21:40:35.000Z","updated_at":"2026-01-12T02:37:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/soulctcher/TetriNode","commit_stats":null,"previous_names":["soulctcher/tetrinode"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/soulctcher/TetriNode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulctcher%2FTetriNode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulctcher%2FTetriNode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulctcher%2FTetriNode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulctcher%2FTetriNode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soulctcher","download_url":"https://codeload.github.com/soulctcher/TetriNode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulctcher%2FTetriNode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28354963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T16:14:38.383Z","status":"ssl_error","status_checked_at":"2026-01-12T16:14:34.289Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["comfyui","comfyui-custom-node","comfyui-nodes","tetris","tetris-clone"],"created_at":"2026-01-06T18:00:43.709Z","updated_at":"2026-01-12T20:00:46.469Z","avatar_url":"https://github.com/soulctcher.png","language":"JavaScript","funding_links":[],"categories":["Workflows created in 7 days"],"sub_categories":[],"readme":"# TetriNode\n\n\u003cp\u003e\n  \u003cimg src=\"docs/images/banner.png\" width=\"50%\"\u003e\n\u003c/p\u003e\n\nA ComfyUI custom node pack that embeds a playable Tetris game inside a node UI, with an image output for the live board.\n\n## Features\n\n- Live, playable Tetris inside the node UI\n- Matrix image output for the live board\n- Hold, next piece, and queue panels inside the node UI\n- Optional background image (scaled to cover, center-cropped)\n- Optional ghost piece and playfield grid\n- Official Tetris Guideline-based scoring (lines, T-Spins, drops, and back-to-back bonuses)\n- Level progression with official fall speeds\n- Pause/Play, Reset, Load State, and Save State controls\n- Seeded piece generation with a standard seed widget available\n- In-node toolbar with a single Settings screen (tabs: Settings, Controls, Block Style, Colors, UI Themes)\n- Block Style presets with extensive style sliders and per-slider reset\n- Optional block textures (Pixel Art, Brushed Metal, Wooden Block, Concrete, Toxic Slime)\n- Randomized texture sampling per block for supported textures\n\n## Nodes\n\n### TetriNode\n\nMain gameplay node.\n\n![TetriNode node UI](docs/images/tetrinode.png)\n\n**Inputs**\n- `seed` (INT): Seed used for piece sequence\n- `background_image` (IMAGE, optional): Background image for the game board (scaled to cover, then center-cropped)\n\n**Outputs**\n- `matrix` (IMAGE): current board\n\n**UI controls**\n- **Top toolbar**: Load State, Save State, Reset, Pause/Play, and a Settings screen.\n- **Load State**: Opens a screen to paste a serialized state.\n\n![Load State screen](docs/images/load_state.png)\n\n- **Save State**: Opens a screen with the current state JSON for copy/paste.\n\n![Save State screen](docs/images/save_state.png)\n\n### Settings screen\n\nAll configuration now lives inside TetriNode (no external options node). The Settings screen is tabbed.\n\n- **Settings**: Toggles (controls/ghost/next/hold/grid), lock-down mode, level progression, start level, and queue size.\n\n![Settings tab](docs/images/settings.png)\n\n- **Controls**: Click Add to capture a key (up to 5 per action). Remove any binding with the `X`, or reset per action. Capture supports the same allowed keys as before and shows human-friendly labels.\n\n![Controls tab](docs/images/controls.png)\n\n- **Block Style**: Presets plus detailed style sliders (border, bevel, gradients, glow, shadows, etc.) with per-slider reset.\n\n![Block Style tab](docs/images/block_style.png)\n\n- **Colors**: Per-piece colors plus background and grid colors. Presets dropdown includes multiple palettes; tetromino colors use 6‑digit hex; grid supports alpha.\n\n![Colors tab](docs/images/colors.png)\n\n- **UI Themes**: Glass/Flat/Neon/Minimal presets with editable colors and a “Reset Theme Colors” button.\n\n![UI Themes tab](docs/images/ui_themes.png)\n\n## Controls (Default)\n\nDisplayed inside the node UI and reflected in the game input handler.\n\n- Move Left: `ArrowLeft` / `Numpad4`\n- Move Right: `ArrowRight` / `Numpad6`\n- Rotate CW: `ArrowUp` / `Numpad5` / `X` / `Numpad1` / `Numpad9`\n- Rotate CCW: `Ctrl` / `Numpad3` / `Z` / `Numpad7`\n- Soft Drop: `ArrowDown` / `Numpad2`\n- Hard Drop: `Space` / `Numpad8`\n- Hold: `Shift` / `Numpad0` / `C`\n- Reset: `R`\n- Pause: `Esc` / `F1`\n\n## Scoring\n\nScoring follows the Official 2009 Tetris Design Guideline.\n\n**Line clears (× Level)**\n- Single: 100\n- Double: 300\n- Triple: 500\n- Tetris: 800\n\n**T-Spins (× Level)**\n- T-Spin: 400\n- T-Spin Single: 800\n- T-Spin Double: 1200\n- T-Spin Triple: 1600\n\n**Mini T-Spins (× Level)**\n- Mini T-Spin: 100\n- Mini T-Spin Single: 200\n\n**Drops**\n- Soft Drop: +1 per row\n- Hard Drop: +2 per row\n\n**Back-to-Back**\n- 0.5× bonus for consecutive Tetrises, T-Spin line clears, and Mini T-Spin line clears\n- Non-line T-Spins/Mini T-Spins do not start a B2B chain and do not break an existing chain\n- Singles/Doubles/Triples break a B2B chain\n\n**Variable goal line awards**\n- When `level_progression` is `variable`, the Lines Cleared counter uses awarded line clears per action.\n- Awarded lines: Single/Mini T-Spin = 1, Mini T-Spin Single = 2, Double = 3, Triple = 5, T-Spin = 4, Tetris/T-Spin Single = 8, T-Spin Double = 12, T-Spin Triple = 16\n- Back-to-Back adds +0.5× awarded line clears\n\n## Leveling\n\nLevels are capped at 15 and drive normal fall speed.\n\n**Fixed goal system (default)**\n- Level increases every 10 lines cleared\n\n**Variable goal system**\n- Level 1: 5 lines\n- Level 2: 10 lines\n- Level 3: 15 lines\n- …adding 5 more lines per level up to 15\n\n**Fall speed formula**\n- `(0.8 - ((level - 1) * 0.007))^(level - 1)` seconds per line\n- Soft Drop is 20× faster than the current fall speed\n\n**Fall speed (approx., seconds per line)**\n- Level 1: 1.000\n- Level 2: 0.793\n- Level 3: 0.618\n- Level 4: 0.473\n- Level 5: 0.355\n- Level 6: 0.262\n- Level 7: 0.190\n- Level 8: 0.135\n- Level 9: 0.094\n- Level 10: 0.064\n- Level 11: 0.043\n- Level 12: 0.028\n- Level 13: 0.018\n- Level 14: 0.011\n- Level 15: 0.007\n\n## Installation\n\n### Installation (preferred)\n\nInstall via ComfyUI Manager. Search for \"TetriNode\" and click install.\nThe node pack is also available on the Comfy Registry site by [clicking here](https://registry.comfy.org/publishers/soulctcher/nodes/TetriNode).\n\n### Installation (alternative)\n\n1. Copy this repository into `ComfyUI/custom_nodes/TetriNode/`.\n2. Restart ComfyUI.\n3. Add `TetriNode` from the node list.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulctcher%2FTetriNode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoulctcher%2FTetriNode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulctcher%2FTetriNode/lists"}