{"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=\"0b93dc498h\"><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=\"#0b93dc498h\" data-target=\"#f13b2792sc\" 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=\"f13b2792sc\" 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=\"#0b93dc498h\" data-target=\"#cc2d7e25d1\" 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=\"cc2d7e25d1\" 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=\"#0b93dc498h\" data-target=\"#19c77a4esq\" 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=\"19c77a4esq\" 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=\"#0b93dc498h\" data-target=\"#c335205096\" 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=\"c335205096\" 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=\"#0b93dc498h\" data-target=\"#e6e8e04bzr\" 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=\"e6e8e04bzr\" 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=\"#0b93dc498h\" data-target=\"#92708b70qy\" 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=\"92708b70qy\" 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=\"#0b93dc498h\" data-target=\"#bb888abnqv\" 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=\"bb888abnqv\" 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=\"#0b93dc498h\" data-target=\"#3560ccczcb\" 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=\"3560ccczcb\" 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=\"#0b93dc498h\" data-target=\"#961fb16lyg\" 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=\"961fb16lyg\" 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=\"#0b93dc498h\" data-target=\"#6548ecd6fi\" 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=\"6548ecd6fi\" 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=\"#0b93dc498h\" data-target=\"#89ac9a8u9d\" 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=\"89ac9a8u9d\" 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=\"68fcec6sod\"><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=\"#68fcec6sod\" data-target=\"#faa58352kr\" 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=\"faa58352kr\" 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=\"#68fcec6sod\" data-target=\"#a5f59edru2\" 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=\"a5f59edru2\" 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}]}}