{"id":2817,"date":"2024-12-09T16:33:54","date_gmt":"2024-12-09T16:33:54","guid":{"rendered":"https:\/\/research.swissdigitization.ch\/?p=2817"},"modified":"2025-01-12T17:46:52","modified_gmt":"2025-01-12T17:46:52","slug":"sizecoding-case-breakout-und-die-erkenntnisse","status":"publish","type":"post","link":"https:\/\/research.swissdigitization.ch\/?p=2817","title":{"rendered":"Sizecoding-Case: Breakout und die Erkenntnisse"},"content":{"rendered":"\n<p>Die ist auch ein Case f\u00fcr die Idee Sizecoding als Designmethode zu diskutieren. <a href=\"https:\/\/research.swissdigitization.ch\/?p=2819\">Siehe dazu hier Sizecoding [DesignMethode] &gt;<\/a><\/p>\n\n\n\n<p>Wer das erste Mal ein Breakout programmiert denkt: Kein Problem. Da gibt es ja nur einen Schl\u00e4ger, einen Ball und Steine (Playfield). Die Grafik verwundert, ist sie doch in einer Zeit der monochromen Monitore entstanden. Das Problem l\u00f6st sich dann, wenn man liest, dass es sich um eine Farbfolie handelt. Aber Farbe ist heute ja auch kein Problem mehr. <\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Breakout - (1976) - Arcade - gameplay HD\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/AMUv8KvVt08?start=184&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Genese &#8211; Spielemechanik &amp; Technologie <\/h2>\n\n\n\n<p><br>Das Spiel selbst ist letztlich ein auf den Kopf gedrehtes Pong-Arcade (auch physisch) und aus dem einen Gegner wurden statische AIs alias Bl\u00f6cke. Aus einem Spiel mit 3 Sprites, die dieselbe Technologie benutzten (Sprites) wird ein Spiel mit Vordergrund 2 Sprites und einem Playfield und einem Hintergrund. Aus einem Multiplayerspiel wird ein Singleplayerspiel mit ganz anderer Motivationsmechanik und viel h\u00f6herer Reichweite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Klassische Implementation <\/h2>\n\n\n\n<p>Die klassische Implementation setzt auf einen Hintergrund  mit zwei movable Objects. Wie die genau Implementation des Orginalautomaten von Wozniack\/Jobs (Atari Arcades) tats\u00e4chlich ist, wurde hier nicht genauer betrachtet. <\/p>\n\n\n\n<p>Die klassische Programmierung findet man im folgenden Spiel &#8222;imagoBreakout&#8220; in Aktion:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"314\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-12.07.21.png\" alt=\"\" class=\"wp-image-2833\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-12.07.21.png 708w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-12.07.21-300x133.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-12.07.21-624x277.png 624w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p><a href=\"http:\/\/imagobreakout.and-or.ch\">Mehr zum Spiel &#8211; bei dem das Visuelle zunehmend ausgeblendet wird &#8211; hier &gt;<\/a><\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u00dcbliche Umsetzung<\/strong><\/h2>\n\n\n\n<p>Der <strong>Ball<\/strong> besteht nicht nur aus der Position, sondern auch aus der Bewegung. Es muss also zumindest noch zwei Variablen f\u00fcr Speed in X- und Y-Achse geben (F\u00fcrs Sizecoding schon 2 Bytes zuviel .-).  <br>Den Ballkoordinaten werden also einfach das VX\/VY hinzugez\u00e4hlt in jedem Frame.  Der Ball ist rasterlos unterwegs auf dem Spielfeld.<br><em>\/\/ Dies ist nat\u00fcrlich in Systemen ohne +\/- oder dann durch die Einschr\u00e4nkung auf 128 Byte nicht so einfach<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"574\" height=\"312\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.31.png\" alt=\"\" class=\"wp-image-2837\" style=\"width:541px;height:auto\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.31.png 574w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.31-300x163.png 300w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/figure>\n\n\n\n<p>Den <strong>Rahmen<\/strong> bilden 3 W\u00e4nde links, recht, und oben. Diese lassen sich am Einfachsten per if-Bedingung l\u00f6sen. Dabei wird entweder absolut die Richtung des Balles bestimmt oder per *-1 (falls dies der Prozessor zul\u00e4sst). <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"632\" height=\"592\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.08.43.png\" alt=\"\" class=\"wp-image-2838\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.08.43.png 632w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.08.43-300x281.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.08.43-624x585.png 624w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/figure>\n\n\n\n<p>Dasselbe gilt f\u00fcr das <strong>Paddle<\/strong>. Dies ist Input abh\u00e4ngig und muss jeweils auch upgedatet werden. Im Orginal ist es per Potentiometer gesteuert und hat eine absolute Eingabe (im Gegensatz sp\u00e4ter zum Joystick oder der relativ\/absolut benutzen Maus. Das Paddle ist ebenfalls rasterlos unterwegs. Trifft der Ball auf den Schl\u00e4ger kann dies auch per If-Bedingung abgefragt werden. Der Ball kann im Orginal aber auch noch anders abprallen &#8211; Spitzer vorne am Schl\u00e4ger und Flacher am hinteren Ende. Dies sind Features, die  sich auch in vielen Spielen gar nicht mehr finden lassen und auch oft weggespart werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"358\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.17.22-1024x358.png\" alt=\"\" class=\"wp-image-2844\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.17.22-1024x358.png 1024w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.17.22-300x105.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.17.22-768x268.png 768w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.17.22-1536x536.png 1536w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.17.22-624x218.png 624w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.17.22.png 1552w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u00dcberschreitet der Ball die Linie hinter dem Schl\u00e4ger &#8211; Realisierbar per if-Bedingung. Dann ist das Leben verbraucht.<br><em>\/\/ Mit Sprites eine einfache Sache. Wenn es direkt gezeichnet werden muss komplizierter. Vgl. Bitplanes etwa C64, Amiga<\/em><\/p>\n\n\n\n<p>Der komplexe Teil von Breakout, ist da wo die Neuerungen sind (das was den oberen Schl\u00e4ger in Pong ersetzt): Die <strong>Steine<\/strong>. Die Steine sind an einem Raster ausgerichtet und \u00fcberlappen sich im Orginal nicht. <br><br>Die Steine werden mehrheitlich als Tiles oder als Playfield abgelegt. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"286\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.11.09-1024x286.png\" alt=\"\" class=\"wp-image-2841\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.11.09-1024x286.png 1024w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.11.09-300x84.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.11.09-768x214.png 768w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.11.09-624x174.png 624w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.11.09.png 1332w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Das Herausfordernde ist nun diese beiden Ebenen miteinander zu managen: Rasterlose bewegende Objekte und die statischen Bl\u00f6cke in grosser Anzahl. Es ist auch das, was einiges an Code erfordert und das Spiel deswegen schwierig macht f\u00fcr Nanogames.<br><em>\/\/ Zum einen weil man die Paddles und den <br><\/em><br><strong>Trifft der Ball auf einen Stein<\/strong>, so reflektiert der Stein den Ball und verschwindet. Was hier einfach klingt ist in der einfachsten Implementation eine 2 fache Bewegung und eine 2fache Abfrage. Es muss nacheinander getestet werden, ob der Ball in Y-Richtung in den Stein f\u00e4hrt oder\/und in X-Richtung. Je nachdem muss nur die eine Richtung invertiert werden. All das braucht einfach Code, ob man will oder nicht und essentiell f\u00fcr ein Breakout-\u00e4hnliches Spiel. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"334\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.34-1024x334.png\" alt=\"\" class=\"wp-image-2839\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.34-1024x334.png 1024w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.34-300x98.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.34-768x251.png 768w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.34-624x204.png 624w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.34.png 1072w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"832\" height=\"430\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.39.png\" alt=\"\" class=\"wp-image-2840\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.39.png 832w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.39-300x155.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.39-768x397.png 768w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-15.07.39-624x323.png 624w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/figure>\n\n\n\n<p>Normalerweise wird zweifach getestet. <\/p>\n\n\n\n<p>Selbstverst\u00e4ndlich gibt es einen <strong>Score<\/strong>. Dieser muss upgedated werden. Dies ist gerade in 8Bit\/16Bit Konsolen ein St\u00fcck Arbeit.<\/p>\n\n\n\n<p><strong>Gewinnbedingung<\/strong> bzw. LevelUp ist, wenn alle Steine gel\u00f6scht sind. Das ben\u00f6tigt entweder eine Durchz\u00e4hlen oder ein Abz\u00e4hlen beim Aufl\u00f6sen. Dann m\u00fcssen wieder alle Steine gezeichnet werden.<\/p>\n\n\n\n<p><br>Diese Umsetzung braucht sehr viele Ifs (wie jedes Spiel) und ist fast nicht zu leisten in 256Bytes. Selbst auf alten Computern wie C64 (1 Befehl 2 Bytes) und schon gar nicht auf 16\/32Bittern (4Bytes pro Befehl und kein nutzbares Playfield, Amiga: Init. Sprites schwierig.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">&#8222;Optimierungsm\u00f6glichkeiten&#8220;<\/h3>\n\n\n\n<p>Dennoch kann man nat\u00fcrlich im grafischen Bereich streichen und der Ball bewegt sich zwar rasterlos aber wird nur im Grid dargestellt. Dasselbe kann selbstverst\u00e4ndlich auch mit dem Paddle gemacht werden.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Aber meist hilft alles nicht &#8211; es ist einfach nicht machbar mit diesem Ansatz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Alternative Umsetzung<\/strong> <\/h2>\n\n\n\n<p>\/\/ Gefunden f\u00fcr den Wettbwerb love.byte 2023 nanogames &#8211; 256 Bytes<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Levelbasiert?<\/h2>\n\n\n\n<p>Eine erste Frage muss sein: Braucht es die Levelfixiertheit oder liesse sich Breakout auch endlos spielen, indem immer wieder Steine entstehen. Dadurch w\u00e4re man doch einen Teil des Codes los.<\/p>\n\n\n\n<p>Angewendet wurde das etwa in EndlessBreakoutFever, hier ensteht der Level permanent &#8211; als eine Art Endlessrunner.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"796\" height=\"590\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.06.50.png\" alt=\"\" class=\"wp-image-2849\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.06.50.png 796w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.06.50-300x222.png 300w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.06.50-768x569.png 768w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.06.50-624x463.png 624w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><\/figure>\n\n\n\n<p><a href=\"https:\/\/demozoo.org\/productions\/319267\">https:\/\/demozoo.org\/productions\/319267<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Einfachere Abfragen Ball-Steine<\/h3>\n\n\n\n<p>Liesse sich die Ball-Steineabfrage vereinfachen? <br><br>Im Spiel BreakoutForever wurde genau dies gemacht. Statt der komplexen obig vorgestellen Version wurde nur der Abstand gemessen, vom Ball zu jedem Block. Es ist quasi die Bruteforce-Version die diese schnellen Fantasy-Consolen m\u00f6glich machen.  Dann wird verglichen, ob irgendwo ein Abstand kleiner als der Abstand was ist Gr\u00f6sser die Distanz in X oder Y-Richtung dann wird beim K\u00fcrzeren invertiert und der Block gel\u00f6scht. Dadurch entsteht ein ph\u00e4notypisch \u00e4hnliches Verhalten des Balles und der Bl\u00f6cke. <br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"618\" height=\"814\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.41.02.png\" alt=\"\" class=\"wp-image-2856\" style=\"width:385px;height:auto\" srcset=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.41.02.png 618w, https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/Bildschirmfoto-2024-12-09-um-17.41.02-228x300.png 228w\" sizes=\"auto, (max-width: 618px) 100vw, 618px\" \/><\/figure>\n\n\n\n<p>Das Ganze sieht dann folgendermassen aus in Aktion.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"256\" src=\"https:\/\/research.swissdigitization.ch\/wp-content\/uploads\/2024\/12\/screen.gif\" alt=\"\" class=\"wp-image-2852\" style=\"width:460px;height:auto\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Findings<\/h2>\n\n\n\n<p>Breakout ist letztlich ein recht komplexes Game. Die Komplexit\u00e4t in der Programmierung kommt vorallem aus dem Verhalten des Balles. Zudem sieht das Verhalten des Balles im ersten Moment gleich aus wie bei den Bl\u00f6cken\/Tiles. Aber das ist  nicht so. Das eine ist Sprite-Hintergrundverhalten, das andere Sprite-Sprite verhalten. Es ist damit auch anders als bei Space Invaders &#8211; das auch als Vorbild ein 1:1 Spiel hat und dann daraus ein 1:n macht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Gesellschaft<\/strong><\/h3>\n\n\n\n<p>Die Frage ist hier: Was programmiert man da eigentlich? <\/p>\n\n\n\n<p>Gesellschaftlich bricht Breakout mit Pong, wo die Hauptmotivation die Konkurrenz war. Hier spielt man gegen ganz viele ganz dumme andere &#8222;Schl\u00e4ger&#8220;. Diese Bewegen sich nicht und sind allein gef\u00e4hrlich, weil sind und der Ball davon abprallt. <\/p>\n\n\n\n<p>Der Spieler* k\u00e4mpft also gegen das statische System, indem er langsam abtr\u00e4gt oder anders gesagt, indem er seine &#8218;dummen&#8216; Gegner langsam beseitigt. Er k\u00e4mpt dabei  &#8211; wie einst bei Pong &#8211; dagegen, dass sich der Ball nicht mehr kontrollieren l\u00e4sst. Der Kontrollverlust bleibt also auch hier bestehen. <\/p>\n\n\n\n<p>Das Spiel k\u00f6nnte damit auch gelesen werden, als die n\u00e4chste Stufe nach der direkten Konkurrenz im kapitalistischen System: Nun geht es gegen die namenlose Masse und nicht mehr den pers\u00f6nlich bekannten Gegner wie bei Pong. Man setzt sich nicht mehr zusammen, man spielt nun gegen das System und das besteht aus einfachen &#8222;Spielern&#8220; alias NPCs. Diese Gegner sind aber auch namenlos, in einer Reihe gleich aussehend. \u00c4hnlich wie nicht viel sp\u00e4ter Space Invaders einsetzt. Aus der Kugel wird allerdings ein Schuss. <\/p>\n\n\n\n<p><strong>Weiterentwicklung<\/strong><\/p>\n\n\n\n<p>In der Weiterentwicklung via Arkanoid 1986 wird der Tileraum gestaltbarer, werden dann auch aus den namenlosen Bl\u00f6cken richtige Gegner, die abgetragen werden m\u00fcssen und nicht zu vergessen- die Bl\u00f6cke haben nun richtig konkrete andere sich bewegende &#8211; recht abstrakte &#8211; NPCs. Die erschwerte Schwierigkeit wird mit Extras vers\u00fcsst. Diese wiederum machen aber auch die Sache komplizierter, weil der Spieler* sich entscheiden muss &#8211; will er* das Risiko mit dem Extra eingehen?<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Arcade Longplay [270] Arkanoid\" width=\"625\" height=\"469\" src=\"https:\/\/www.youtube.com\/embed\/Th-Z6QQ5AOQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\/\/ ToDo: Vergleich mit Schweizerischen Breakouts\/Pongs<br>\/\/ ToDo: Diskussion mit den Schweizer Breakout-Entwicklern. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die ist auch ein Case f\u00fcr die Idee Sizecoding als Designmethode zu diskutieren. Siehe dazu hier Sizecoding [DesignMethode] &gt; Wer das erste Mal ein Breakout programmiert denkt: Kein Problem. Da gibt es ja nur einen Schl\u00e4ger, einen Ball und Steine (Playfield). Die Grafik verwundert, ist sie doch in einer Zeit der monochromen Monitore entstanden. Das [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2817","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/2817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2817"}],"version-history":[{"count":16,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/2817\/revisions"}],"predecessor-version":[{"id":3178,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=\/wp\/v2\/posts\/2817\/revisions\/3178"}],"wp:attachment":[{"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/research.swissdigitization.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}