{"id":595,"date":"2025-12-07T12:21:18","date_gmt":"2025-12-07T12:21:18","guid":{"rendered":"https:\/\/blog.lerk.ing\/?page_id=595"},"modified":"2025-12-08T07:17:38","modified_gmt":"2025-12-08T07:17:38","slug":"godot-tetris","status":"publish","type":"page","link":"https:\/\/blog.lerk.ing\/index.php\/codingpirates\/godot-tetris\/","title":{"rendered":"Godot Tetris"},"content":{"rendered":"\n<h1 class=\"wp-block-heading has-text-align-center has-x-large-font-size\">The classic Tetris game ported to the Godot game engine<\/h1>\n\n\n\n<div style=\"height:1.25rem\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Tetris is a game where blocks fall from the top. your job is to move and drop the blocks, so they form an unbroken line, left to right. Once you have a unbroken line, the line disappears and you will be rewarded with points.<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">This is what the game will look like in the end.<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-3a88641f wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"744\" height=\"750\" src=\"http:\/\/blog.lerk.ing\/wp-content\/uploads\/2025\/12\/image-27.png\" alt=\"Godot Tetris\" class=\"wp-image-470\" srcset=\"https:\/\/blog.lerk.ing\/wp-content\/uploads\/2025\/12\/image-27.png 744w, https:\/\/blog.lerk.ing\/wp-content\/uploads\/2025\/12\/image-27-298x300.png 298w, https:\/\/blog.lerk.ing\/wp-content\/uploads\/2025\/12\/image-27-150x150.png 150w\" sizes=\"auto, (max-width: 744px) 100vw, 744px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-3a88641f wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class='pt-cv-wrapper'> <div class=\"pt-cv-view pt-cv-collapsible iscvblock iscvreal collapsible layout1\" id=\"pt-cv-view-b8qu10vg\"><div data-id=\"pt-cv-page-1\" class=\"pt-cv-page\" data-cvc=\"3\"><div class=\"panel-group\" id=\"fddf16ctch\"><div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#23b37267xh\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-create-project\/' onclick='event.preventDefault()'>\r\n\t\tTetris 01 &#8211; Create project\t<\/a>\r\n\t<\/div>\r\n<div id=\"23b37267xh\" class=\"panel-collapse collapse in\">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Open Godot. Click 'Create' in the top-left corner. Name your project - 'Tetris Game'. Select your project path. Then click ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-create-project\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#6646795tir\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-main-scene\/' onclick='event.preventDefault()'>\r\n\t\tTetris 02 &#8211; Main scene\t<\/a>\r\n\t<\/div>\r\n<div id=\"6646795tir\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Create a new Node2D scene. Rename the Node2D to 'Main'. Now add a Node2D node to 'Main'. Rename the new ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-main-scene\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#45c0b42rez\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-board-scene\/' onclick='event.preventDefault()'>\r\n\t\tTetris 03 &#8211; Board scene\t<\/a>\r\n\t<\/div>\r\n<div id=\"45c0b42rez\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Create a new Node2D scene. Rename the Node2D to 'Board'. Save the scene as 'board.tscn' Attach a script to the ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-board-scene\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#46148216xt\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-hudleft-scene\/' onclick='event.preventDefault()'>\r\n\t\tTetris 04 &#8211; HUDLeft scene\t<\/a>\r\n\t<\/div>\r\n<div id=\"46148216xt\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Create a new scene of type 'Control'. Rename the 'Control' node to \u2018HUDLeft\u2019. Add a 'VBoxContainer' to 'HUDLeft'. Now add ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-hudleft-scene\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#a99503c40l\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/hudright-scene\/' onclick='event.preventDefault()'>\r\n\t\tTetris 05 &#8211; HUDRight scene\t<\/a>\r\n\t<\/div>\r\n<div id=\"a99503c40l\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Create a new scene with type 'Control'. Rename the 'Control' to \u2018HUDRight\u2019. Add a 'VBoxContainer' to 'HUDRight'. Now add the ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/hudright-scene\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#87bc99dg1x\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/05\/tetris-game-over-scene\/' onclick='event.preventDefault()'>\r\n\t\tTetris 06 &#8211; Game Over scene\t<\/a>\r\n\t<\/div>\r\n<div id=\"87bc99dg1x\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Create a new scene of type 'Control'. Rename the 'Control' node to 'GameOver'. Save the scene as 'game_over.tscn'. Set Layout ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/05\/tetris-game-over-scene\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#cb05397ybw\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-board-script\/' onclick='event.preventDefault()'>\r\n\t\tTetris 07 &#8211; Board script\t<\/a>\r\n\t<\/div>\r\n<div id=\"cb05397ybw\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Open the 'board.gd' script. We start by adding constants right after the 'extends Node2D' line. extends Node2D const BOARD_WIDTH := ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-board-script\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#f05ea79itu\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-main-script\/' onclick='event.preventDefault()'>\r\n\t\tTetris 08 &#8211; Main script\t<\/a>\r\n\t<\/div>\r\n<div id=\"f05ea79itu\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Open the 'main.gd' script. We start by adding constants right after the 'extends Node2D' line. And then we add the ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-main-script\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#cd60837f3e\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-nextpreview-script\/' onclick='event.preventDefault()'>\r\n\t\tTetris 09 &#8211; NextPreview script\t<\/a>\r\n\t<\/div>\r\n<div id=\"cd60837f3e\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Open the 'next_preview.gd' script. We start by adding constants right after the 'extends Node2D' line. And then we add the ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-nextpreview-script\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#4937e9axea\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/05\/tetris-game-over-script\/' onclick='event.preventDefault()'>\r\n\t\tTetris 10 &#8211; Game Over script\t<\/a>\r\n\t<\/div>\r\n<div id=\"4937e9axea\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Open the 'game_over.tscn' scene. Select the 'GameOver' node. Attach a script. extends Control @export var final_score: int = 0 @export ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/05\/tetris-game-over-script\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#fddf16ctch\" data-target=\"#09ffc170br\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-test-run\/' onclick='event.preventDefault()'>\r\n\t\tTetris 11 &#8211; Test run\t<\/a>\r\n\t<\/div>\r\n<div id=\"09ffc170br\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Before we do a test run, we have to set the 'Main Scene' in 'Project Settings'. Now that we have ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/04\/tetris-test-run\/\" class=\"_blank pt-cv-readmore btn btn-success\" target=\"_blank\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div> <\/div> <style>\n#pt-cv-view-b8qu10vg {text-align: left}\n#pt-cv-view-b8qu10vg .pt-cv-meta-fields {  }#pt-cv-view-b8qu10vg .pt-cv-meta-fields * { font-size: 13px; }#pt-cv-view-b8qu10vg .pt-cv-title a { display: block; }#pt-cv-view-b8qu10vg .pt-cv-title:not(.pt-cv-titlesm) a { font-weight: 600;text-decoration: none;font-size: 20px; }#pt-cv-view-b8qu10vg .pt-cv-titlesm a { font-weight: 600;font-size: 18px; }#pt-cv-view-b8qu10vg .pt-cv-content { font-size: 15px; }#pt-cv-view-b8qu10vg .pt-cv-rmwrap {  }#pt-cv-view-b8qu10vg .pt-cv-readmore { color: #fff;background-color: #0075ff;font-size: 14px; }#pt-cv-view-b8qu10vg .pt-cv-taxoterm {  }#pt-cv-view-b8qu10vg .pt-cv-taxoterm * { color: #222;background-color: #fff6f6;font-size: 14px; }#pt-cv-view-b8qu10vg + .pt-cv-pagination-wrapper {  }#pt-cv-view-b8qu10vg + .pt-cv-pagination-wrapper a { font-size: 14px; }\n@media all and (max-width: 1024px) { \n\n} \n@media all and (max-width: 767px) { \n\n} <\/style><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class='pt-cv-wrapper'> <div class=\"pt-cv-view pt-cv-collapsible iscvblock iscvreal collapsible layout1\" id=\"pt-cv-view-v4xsx04m\"><div data-id=\"pt-cv-page-1\" class=\"pt-cv-page\" data-cvc=\"3\"><div class=\"panel-group\" id=\"b5e08da27a\"><div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#b5e08da27a\" data-target=\"#c1a47f61bf\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/05\/tetris-extras\/' onclick='event.preventDefault()'>\r\n\t\tTetris Extras\t<\/a>\r\n\t<\/div>\r\n<div id=\"c1a47f61bf\" class=\"panel-collapse collapse in\">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">Here we have a few ideas\/examples of expanding and tweaking our Tetris game. Game Over tweak ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/05\/tetris-extras\/\" class=\"_self pt-cv-readmore btn btn-success\" target=\"_self\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div>\n<div class=\"panel panel-default pt-cv-content-item pt-cv-1-col\" >\r\n<div class=\"panel-heading pt-cv-title\">\r\n    <a class=\"panel-title\" data-toggle=\"cvcollapse\" data-parent=\"#b5e08da27a\" data-target=\"#9ffe39b5j6\" href='https:\/\/blog.lerk.ing\/index.php\/2025\/12\/06\/tetris-extras-gameover-tweak\/' onclick='event.preventDefault()'>\r\n\t\tTetris Extras 01 &#8211; GameOver tweak\t<\/a>\r\n\t<\/div>\r\n<div id=\"9ffe39b5j6\" class=\"panel-collapse collapse \">\r\n\t<div class=\"panel-body\">\r\n\t\t<div class=\"pt-cv-taxoterm above_title\"><a href='https:\/\/blog.lerk.ing\/index.php\/category\/coding-pirates\/' title='Coding Pirates' class='pt-cv-tax-coding-pirates'>Coding Pirates<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/programming\/gdscript20\/' title='GDScript 2.0' class='pt-cv-tax-gdscript20'>GDScript 2.0<\/a><a href='https:\/\/blog.lerk.ing\/index.php\/category\/godotgameengine\/' title='Godot Game Engine' class='pt-cv-tax-godotgameengine'>Godot Game Engine<\/a><\/div>\n<div class=\"pt-cv-content\">We will be updating our GameOver routine as follows. Blur background (GameRoot) Show GameOver in 2x size Let's begin with ...<\/div>\n<div class=\"pt-cv-rmwrap\"><a href=\"https:\/\/blog.lerk.ing\/index.php\/2025\/12\/06\/tetris-extras-gameover-tweak\/\" class=\"_self pt-cv-readmore btn btn-success\" target=\"_self\" >Read More<\/a><\/div>\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div> <\/div> <style>\n\n#pt-cv-view-v4xsx04m .pt-cv-meta-fields {  }#pt-cv-view-v4xsx04m .pt-cv-meta-fields * { font-size: 13px; }#pt-cv-view-v4xsx04m .pt-cv-title a { display: block; }#pt-cv-view-v4xsx04m .pt-cv-title:not(.pt-cv-titlesm) a { font-weight: 600;text-decoration: none;font-size: 20px; }#pt-cv-view-v4xsx04m .pt-cv-titlesm a { font-weight: 600;font-size: 18px; }#pt-cv-view-v4xsx04m .pt-cv-content { font-size: 15px; }#pt-cv-view-v4xsx04m .pt-cv-rmwrap {  }#pt-cv-view-v4xsx04m .pt-cv-readmore { color: #fff;background-color: #0075ff;font-size: 14px; }#pt-cv-view-v4xsx04m .pt-cv-taxoterm {  }#pt-cv-view-v4xsx04m .pt-cv-taxoterm * { color: #222;background-color: #fff6f6;font-size: 14px; }#pt-cv-view-v4xsx04m + .pt-cv-pagination-wrapper {  }#pt-cv-view-v4xsx04m + .pt-cv-pagination-wrapper a { font-size: 14px; }\n@media all and (max-width: 1024px) { \n\n} \n@media all and (max-width: 767px) { \n\n} <\/style><\/div>\n<\/div>\n\n\n<div class=\"wp-block-post-author\"><div class=\"wp-block-post-author__avatar\"><img alt='' src='https:\/\/secure.gravatar.com\/avatar\/ea6dfb9dc4a5852f1a3635e4cb2c81deba1b9e5a2fec2c492f0abd9df8882821?s=48&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/ea6dfb9dc4a5852f1a3635e4cb2c81deba1b9e5a2fec2c492f0abd9df8882821?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' \/><\/div><div class=\"wp-block-post-author__content\"><p class=\"wp-block-post-author__name\">Jan Lerking<\/p><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>The classic Tetris game ported to the Godot game engine Tetris is a game where blocks fall from the top. your job is to move and drop the blocks, so they form an unbroken line, left to right. Once you have a unbroken line, the line disappears and you will be rewarded with points. This [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":224,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-595","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/pages\/595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/comments?post=595"}],"version-history":[{"count":9,"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/pages\/595\/revisions"}],"predecessor-version":[{"id":655,"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/pages\/595\/revisions\/655"}],"up":[{"embeddable":true,"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/pages\/224"}],"wp:attachment":[{"href":"https:\/\/blog.lerk.ing\/index.php\/wp-json\/wp\/v2\/media?parent=595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}