{"id":7350,"date":"2020-10-26T20:09:36","date_gmt":"2020-10-26T20:09:36","guid":{"rendered":"http:\/\/www.gamelab.ch\/?p=7350"},"modified":"2020-10-29T09:37:34","modified_gmt":"2020-10-29T09:37:34","slug":"8bit-gamedesign","status":"publish","type":"post","link":"https:\/\/www.gamelab.ch\/?p=7350","title":{"rendered":"8bit-GameDesign"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"661\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.19.08-1024x661.png\" alt=\"\" class=\"wp-image-7362\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.19.08-1024x661.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.19.08-300x194.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.19.08-768x496.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.19.08.png 1276w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In Zeiten von Unity und Unreal, wo die Engines virtuelle Maschinen sind, die auf was-auch-immer-f\u00fcr-eine-Hardware laufen, ist kaum noch vorstellbar, wie die Entwicklung von Games zu Zeiten der 8Bitter wie Z80, Atari 2600, ColecoVision, Vectrex, C64 von statten ging. 8bit bezieht sich dabei auf die &#8218;Breite&#8216; der verarbeitbaren &#8218;W\u00f6rter&#8216; alias Bytes. 8bit entspricht dabei dem Zahlenraum von 0-255 (oder Hexadecimal von 00 &#8211; AA). <\/p>\n\n\n\n<p><strong>Produktionsbedingungen<\/strong><\/p>\n\n\n\n<p>Aber was waren die Bedingungen damals bei der Produktion\/Programmierung von diesen 8bit Spielen? Wie River-Raid? Space-Invaders? Wie konnte man aus diesen relativ primitiven &#8218;Consolen&#8216; so viel rausholen (demgegen\u00fcber standen extrem teure Mainframes mit weit komplexeren Spielen etwa auf der Plato-Platform) . Die Antwort dazu heisst fast immer Maschinen-nahes-Programmieren oder anders gesagt: die Kontrolle \u00fcber jeden abgearbeiteten Befehl. Und da kam man an Assembler einfach nicht vorbei &#8211; nur so holte man das Maximum aus diesen Maschinen heraus. Und da gilt heute wie damals dasselbe: Je mehr Eye-Candy desto besser.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>GameEngine des 8bits: Prozessor und Hardware (Sprites, Scrolling)<\/strong><\/p>\n\n\n\n<p>Was heute GameEngines sind war zu 8bit-Zeiten, die GameHardware. Was heute Programmiersprachen sind, waren damals die Prozessoren und ihre je eigenen Chips mit ihrem je eigenen Befehlssatz genannt Assembler (Maschinensprache). Die Geschichte der 8bits begann auch mit dem relativ teuren 6800 Prozessor werkelt(e) in der Vectrex. Dieser Prozessor wurde alsbald kopiert wurde mit dem 6500. Er werkelt in Hardware wie C64, NES. Und ganz selten fand auch der 80xx eine Hardware. <\/p>\n\n\n\n<p><strong>Entwicklung von 8bit heute<\/strong><\/p>\n\n\n\n<p>Die Situation ist heute recht komfortable um in diesen Bereich des Gamedesigns einzusteigen. Die Games k\u00f6nnen auf einem Rechner heute entwickelt, compiliert und dann auch gerade in einem Emulator getestet werden. Damit lassen sich schon viele b\u00f6se \u00dcberraschungen aus dem Weg schaffen, bevor das Spiel auf einer Orginalhardware per spezieller Cartridge meist mit USB-Anschluss getestet wird. <\/p>\n\n\n\n<p><strong>Level 1: Assembler auf Fantasy-Consolen online<\/strong><\/p>\n\n\n\n<p>Interessanterweise gibt es heute recht simple und einfache Arten einmal mit Assembler sogar online herum zu spielen.  Dabei benutzt man quasi Pseudocodes auf einer vereinfachten Pseudokonsole:<\/p>\n\n\n\n<p><a href=\"http:\/\/www.6502asm.com\">http:\/\/www.<\/a><a href=\"http:\/\/www.6502asm.com\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"6502asm.com (\u00f6ffnet in neuem Tab)\">6502asm.com<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"599\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.25.12-1024x599.png\" alt=\"\" class=\"wp-image-7351\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.25.12-1024x599.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.25.12-300x176.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.25.12-768x449.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.25.12.png 1432w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Die Einstiegsh\u00fcrde ist minimal, die Ergebnisse immer gleich sichtbar auf der rechten Seite und es gibt sogar Beispiel mitgefliefert etwa ein Game wie im Folgenden:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"580\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.26.29-1024x580.png\" alt=\"\" class=\"wp-image-7352\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.26.29-1024x580.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.26.29-300x170.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.26.29-768x435.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-13.26.29.png 1494w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Dabei wird schnell klar, Assemblerprogrammierung ist keine Hexerei. Schliesslich ist meist eine Zeile auch ein Befehl: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>;***********************************************************\n; CODE SECTION\n;***********************************************************\n; INIT\n; start cartridge\n\n        ; init\n        lda \t #0\n        sta\t state\n        lda      #0\n        sta      level\n        lda      #42 ; 42\n        sta\t highscore\n        lda      #0\n        sta      score\n        lda      #12 ; 12\n        sta      spritesnr\n\n; visual presets\n        jsr     Intensity_5F    <\/code><\/pre>\n\n\n\n<p>Legende: lda &#8211; load into register A | sta &#8211; store register A to state<\/p>\n\n\n\n<p>Die Komplexit\u00e4t von Assembler liegt in der Disziplin, die man an den Tag legen muss. Schnell ist ein Fehler passiert, schnell kommen Daten durcheinander und Dinge wie Arrays m\u00fcssen mehrheitlich mit Pointern und Verweisen gel\u00f6st werden. Fast alles ist dabei Handarbeit.<\/p>\n\n\n\n<p>Die meiste Arbeit wird in der CPU-Verichtet. So muss oft alles zuerst in die Register verschoben, dort gerechnet und wieder zur\u00fcckverschoben werden. Jedes Register besitzt auch oft eigene zus\u00e4tzliche Spezialbefehle wie etwa Adressverwaltung etc.<\/p>\n\n\n\n<p>Hier ein kleines Beispiel, um die Komplexit\u00e4t zu visualisieren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"776\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-08.50.55-1024x776.png\" alt=\"\" class=\"wp-image-7378\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-08.50.55-1024x776.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-08.50.55-300x227.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-08.50.55-768x582.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-08.50.55-1536x1164.png 1536w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-08.50.55.png 1974w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Aus all diesen Gr\u00fcnden beginnt man auch hier sehr bald eine eigene kleine Engine zu bauen mit Objekten und nimmt damit die Speicherverwaltung etc. in die eigenen H\u00e4nde.<\/p>\n\n\n\n<p>Eine Einf\u00fchrung als eine Art Kurs findet sich hier:<\/p>\n\n\n\n<p><a href=\"https:\/\/skilldrick.github.io\/easy6502\/\">https:\/\/skilldrick.github.io\/easy6502\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-14.10.07-1024x812.png\" alt=\"\" class=\"wp-image-7383\" width=\"580\" height=\"459\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-14.10.07-1024x812.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-14.10.07-300x238.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-14.10.07-768x609.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-27-um-14.10.07.png 1284w\" sizes=\"(max-width: 580px) 100vw, 580px\" \/><\/figure>\n\n\n\n<p>oder spielerischer: Code in Assembler Grafiken (mit Levels) in <a rel=\"noreferrer noopener\" aria-label=\"http:\/\/box-256.com (\u00f6ffnet in neuem Tab)\" href=\"http:\/\/box-256.com\" target=\"_blank\">box-256.com<\/a>!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"780\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.32.33-1024x780.png\" alt=\"\" class=\"wp-image-7390\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.32.33-1024x780.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.32.33-300x228.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.32.33-768x585.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.32.33-1536x1170.png 1536w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.32.33.png 1694w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Wer in Handarbeit a la Assembler noch spielerischer eintauchen will, ist sicherlich bei Human Resource Machine gut aufgehoben. <br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"577\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.35.24-1024x577.png\" alt=\"\" class=\"wp-image-7392\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.35.24-1024x577.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.35.24-300x169.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.35.24-768x433.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-29-um-10.35.24.png 1196w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Einen Video dazu findet man hier: <a rel=\"noreferrer noopener\" aria-label=\"https:\/\/youtu.be\/HDrVlvUGfMI (\u00f6ffnet in neuem Tab)\" href=\"https:\/\/youtu.be\/HDrVlvUGfMI\" target=\"_blank\">youtu.be\/HDrVlvUGfMI<\/a><\/p>\n\n\n\n<p>Das Entwickeln mit OnlineTools ist aber auch enorm tr\u00fcgerisch. Denn so einfach lassen sich dann reale Prozessoren a) nicht programmieren, b) haben reale Prozessoren einen Haufen von Bits, die an oder aus sein k\u00f6nnen und c) funktioniert der Videospeicher nicht so simpel.  Aber dennoch man lernt die &#8222;Sprache&#8220; des 6502 kennen im Prinzip kennen und es macht Spass! <\/p>\n\n\n\n<p> <strong>Level 2: Simulierte Prozessoren, simulierte Hardware<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"431\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.37.26-1024x431.png\" alt=\"\" class=\"wp-image-7364\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.37.26-1024x431.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.37.26-300x126.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.37.26-768x323.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.37.26-1536x647.png 1536w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.37.26-2048x862.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>F\u00fcr einige Consolen wie Atari 2600 oder Computer wie C64 gibt es inzwischen auch schon Online-Tools, die schon mit einigem ausf\u00fchrbarem Code daherkommen (Aber auch hier gilt: ob dann der Source-Code auch auf einer realen Hardware l\u00e4uft, steht auf einem ganz anderen Blatt Papier)<\/p>\n\n\n\n<p><a href=\"https:\/\/8bitworkshop.com\">https:\/\/8bitworkshop.com<\/a><\/p>\n\n\n\n<p>Selbstverst\u00e4ndlich gibt es inzwischen auch einfachere Wege etwa ein Spiel auf einem Atari 2600 zu programmieren etwa mit speziellen Basics f\u00fcr diese System wie etwa das Batari-Basic. <\/p>\n\n\n\n<p><strong>Level 3: Reale Prozessoren, reale Hardware, reale Probleme<\/strong><\/p>\n\n\n\n<p>F\u00fcr viele nicht g\u00e4ngige Consolen oder Arcades gibt es keine integrierten Entwicklungsumgebungen und der Entwicklungsalltag \u00e4hnelt mehr oder weniger dem urspr\u00fcnglichen Prozess:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"393\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.25.57-1024x393.png\" alt=\"\" class=\"wp-image-7363\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.25.57-1024x393.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.25.57-300x115.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.25.57-768x295.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-20.25.57.png 1308w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Ab diesem Zeitpunkt spielt dann neben dem Prozessor auch die Hardware eine Rolle. Was l\u00e4sst die Hardware zu, was sind Tricks. So ist etwa die Entwicklung eines Spiels f\u00fcr die Atari 2600 Konsole ein H\u00f6llenritt, da die Konsole \u00fcber<a rel=\"noreferrer noopener\" aria-label=\" kein Videomemory verf\u00fcgt und nur 192 Bytes als Speicher (\u00f6ffnet in neuem Tab)\" href=\"https:\/\/de.slideshare.net\/chesterbr\/atari-2600programming\" target=\"_blank\"> kein Videomemory verf\u00fcgt und nur 192 Bytes als Speicher<\/a> zu Verf\u00fcgung hat.  Keine leichte Aufgabe das Programm entlang des Zeichnen des Screens zu designen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"704\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2014-04-22-um-22-1.37.08-1024x704-1.png\" alt=\"\" class=\"wp-image-7365\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2014-04-22-um-22-1.37.08-1024x704-1.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2014-04-22-um-22-1.37.08-1024x704-1-300x206.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2014-04-22-um-22-1.37.08-1024x704-1-768x528.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><a href=\"http:\/\/www.gamelab.ch\/?p=6188\" target=\"_blank\" rel=\"noreferrer noopener\">  (\u00f6ffnet in neuem Tab)&#8220;&gt;Einen Einblick zu dieser Vorh\u00f6lle der Programmierung bietet die Entwicklung eines Atari 2600 Spiels hier &gt; <\/a><\/p>\n\n\n\n<p>Die meisten anderen Konsolen wie etwa Intellivsion  kommen aber mit schon recht modernen Konzepten daher und bieten neben Videomemory, Hintergrundzeichenmethoden, Sprites, Kollision-Detection und diverse Rauschgeneratoren und H\u00fcllkurvensounds. <\/p>\n\n\n\n<p><strong>Level 4: ein funktionierender Workflow<\/strong><\/p>\n\n\n\n<p>Je weniger Mainstream die ausgew\u00e4hlte Konsole ist, umso schwieriger ist es, einen lauff\u00e4higen Workflow zusammenzustellen. Es muss also zuerst ein passender Assembler gefunden werden (6802?), die passenden Libraries dazu (etwa Vectrex-Libraries), ein Compiler, der verf\u00fcgbar ist (vieles wird nicht mehr unterst\u00fctzt oder muss selbst zuerst kompliert werden) und anschliessend muss man noch einen Emulator finden, der ad\u00e4quat die Binaries abspielt. Hat man dieses alles zusammen (oder man beginnt hier), muss es noch eine M\u00f6glichkeit Cartridge geben, wie man das ganze auch auf einer realen Console testen kann. <\/p>\n\n\n\n<p>Wenn dann alles klappt dann sieht es etwa wie folgt aus:<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"vecZ 2016 - vectrex - vertical-shootemup by la1n (launch 5. nov at gamezfestival)\" width=\"640\" height=\"480\" src=\"https:\/\/www.youtube.com\/embed\/9hp4abvgUa0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Und im besten Fall findet man noch jemanden aus der Community, der die entsprechenden ROMS dazu brennt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"768\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/screen2-1024x768.jpg\" alt=\"\" class=\"wp-image-7374\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/screen2-1024x768.jpg 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/screen2-300x225.jpg 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/screen2-768x576.jpg 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/screen2-1536x1152.jpg 1536w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/screen2-2048x1536.jpg 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Das obige Spiel findet man zum Downloaden f\u00fcr einen Emulator hier:<\/p>\n\n\n\n<p><a href=\"http:\/\/www.la1n.ch\/vecz\/\">http:\/\/www.la1n.ch\/vecz\/<\/a><\/p>\n\n\n\n<p><strong>Level 5: eigene Tools<\/strong><\/p>\n\n\n\n<p>Gerade bei der Herstellung von Grafiken lohnt es sich dann aber auch sehr schnell eigene Tools zu entwickeln. So dass etwa die Vektorgrafiken in Illustrator gezeichnet werden k\u00f6nnen und per Processing-Script schnell in Daten etwa f\u00fcr die <a href=\"https:\/\/atariage.com\/forums\/topic\/237191-sinz-v07-vectrex-demo-playing-around-with-sinus\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Vectrex umgewandelt werden k\u00f6nnen (\u00f6ffnet in neuem Tab)\">Vectrex umgewandelt werden k\u00f6nnen<\/a>. Denn nicht immer m\u00f6chte man jede Grafik im Hexcode von Hand ver\u00e4ndern oder gar Animationen erstellen. Eine Technik die \u00fcbrigens auch &#8218;Gang und g\u00e4be&#8216; war. So enstande viele Grafiken f\u00fcr den C64 etwa in den letzten Jahren letztlich auf dem Amiga. <\/p>\n\n\n\n<p><strong>Level 6: Community und Publishing<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"409\" src=\"http:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-18.11.33-1024x409.png\" alt=\"\" class=\"wp-image-7356\" srcset=\"https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-18.11.33-1024x409.png 1024w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-18.11.33-300x120.png 300w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-18.11.33-768x307.png 768w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-18.11.33-1536x613.png 1536w, https:\/\/www.gamelab.ch\/wp-content\/uploads\/2020\/10\/Bildschirmfoto-2020-10-26-um-18.11.33-2048x818.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Der erste Umschlagpunkt f\u00fcr die Retro- und Homebrewszene ist atariage.com. Hier findet man Ressourcen und eine Community rund um fast alle Gameplatformen vom Atari 2600 bis hin zu Konsolen wie Atari Jaguar. Und hier findet man auch immer die neusten Releases dieser Community.  Viele dieser Releases kommen sogar als Cartridges auf den Markt in Kleinstserien!  Des \u00d6fteren findet man hier auch sogenannte DEMAKES, also Spiele von anderen Platformen etwa HALO, die dann in irgendeiner Form als Release einer 8bit Konsole ver\u00f6ffentlicht werden. <br><a href=\"https:\/\/www.atariage.com\">https:\/\/www.atariage.com<\/a><\/p>\n\n\n\n<p><strong>Level 7: Assembler als Spielmechanik: TIS-100<\/strong><\/p>\n\n\n\n<p>Anwenden l\u00e4sst sich dieses Wissen letztlich auch in Programmierspielen wie TIS-100. Hier programmiert man Assembler und muss Probleme l\u00f6sen in einem Signalprozessor. <\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"TIS-100 - The Assembly Language Puzzle Game That Nobody Asked For\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/TxJVH5TZQFY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><a href=\"https:\/\/store.steampowered.com\/app\/370360\/TIS100\/\">https:\/\/store.steampowered.com\/app\/370360\/TIS100\/<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Mehr zu Programmiergames findet man auch hier:<\/p>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-gamelab-ch\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"5dpoaTx54Y\"><a href=\"http:\/\/www.gamelab.ch\/?p=370\">Programmierspiele von Krieg der Kerne \u00fcber Robowar zu HumanRessourceMachine<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8222;Programmierspiele von Krieg der Kerne \u00fcber Robowar zu HumanRessourceMachine&#8220; &#8212; GAMELAB.CH\" src=\"http:\/\/www.gamelab.ch\/?p=370&#038;embed=true#?secret=5dpoaTx54Y\" data-secret=\"5dpoaTx54Y\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>oder hier:<\/p>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-gamelab-ch\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"DZRMzVNRmJ\"><a href=\"http:\/\/www.gamelab.ch\/?p=398\">Loops &#8211; Ausgewalzt versteh- und kontrollierbar<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8222;Loops &#8211; Ausgewalzt versteh- und kontrollierbar&#8220; &#8212; GAMELAB.CH\" src=\"http:\/\/www.gamelab.ch\/?p=398&#038;embed=true#?secret=DZRMzVNRmJ\" data-secret=\"DZRMzVNRmJ\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Entwicklung und Herausforderung ist alles. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Zeiten von Unity und Unreal, wo die Engines virtuelle Maschinen sind, die auf was-auch-immer-f\u00fcr-eine-Hardware laufen, ist kaum noch vorstellbar, wie die Entwicklung von Games zu Zeiten der 8Bitter wie Z80, Atari 2600, ColecoVision, Vectrex, C64 von statten ging. 8bit &hellip; <a href=\"https:\/\/www.gamelab.ch\/?p=7350\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts\/7350"}],"collection":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7350"}],"version-history":[{"count":23,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts\/7350\/revisions"}],"predecessor-version":[{"id":7393,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=\/wp\/v2\/posts\/7350\/revisions\/7393"}],"wp:attachment":[{"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gamelab.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}