[[Vorlage(Getestet, focal)]]
{{{#!vorlage Wissen
[:Packprogramme:Archive entpacken]
[:Terminal:Ein Terminal öffnen]
[:mit Root-Rechten arbeiten:] (optional)
[:Programme starten:Ein Programm ohne Menüeintrag starten]
[:Menüeditor:Programme zum Menü hinzufügen]
}}}
[[Inhaltsverzeichnis(1)]]
[[Bild(lexaloffle-pico8.png,64,align=left)]]
[https://www.lexaloffle.com/pico-8.php PICO-8] {en} ist eine virtuelle Maschine, welche eine erfundene "Fantasy Console" emuliert. Für die Programmierung wird [https://www.lua.org/ Lua] {en} verwendet. Die Titel können später als HTML5-Webspiel exportiert werden. Alternativ kann man diese auf Lexaloffle veröffentlichen. 
Der Einstieg in die Spieleprogrammierung, durch die integrierten Editoren (Quellcode, Sprites, Sound... ). Interessant ist die Sammellizenz für [https://www.lexaloffle.com/pico-8.php?page=schools Schulen] {en}. 

{{{#!vorlage Tabelle
<tablestyle="float:right; clear:right" :>[[Bild(pico-8.png, x200)]]
[[Bild(rambo.png, x200)]]
[[Bild(Editor.png, x200)]]
+++
<:>PICO-8
<:>[#Module Rambo]
<:>[#Programmierung Editor]
}}}
= Installation =
== Humble Bundle ==
Sofern man Besitzer des [https://www.humblebundle.com/Humble Voxatron Bundles] {en} (2011) ist dann findet man in der Bibliothek den Schlüssel zur ''"Lexaloffle Account Activation"''. Sobald man auf den Link klickt wird man auf  die Seite von [#Lexaloffle Lexaloffle] weitergeleitet.

== Lexaloffle ==
Die virtuelle Umgebung kann auf [https://www.lexaloffle.com/pico-8.php lexaloffle.com] {en} erworben werden. Nach dem Bezahlvorgang kann diese aus der [https://www.lexaloffle.com/games.php?page=updates Bibliothek] {en} {dl} als '''.zip'''-Archiv (32-bit, 64-bit oder Raspberry Pi) heruntergeladen werden. 

Das Archiv entpacken [1] und in den Ordner '''pico-VERSION_ARCHITEKTUR''' wechseln. Den darin enthaltenen Ordner '''pico-8''' nach [:opt:] verschieben [2] [3] [4]:

{{{#!vorlage Befehl
sudo mv pico-8/ /opt/pico-8 #Verschiebt den Ordner nach /opt
cd /optpico-8               #Wechselt in den neuen Ordner
./pico8                     #Start des Emulators
}}}

Auf Wunsch einen Menüeintrag [5] vornehmen.

{{{#!vorlage Hinweis
Bei Problemen kann alternativ `./pico8_dyn` ausprobiert werden. Eine Vielzahl an Parametern kann beim Start übergeben. Diese sind im [https://www.lexaloffle.com/dl/docs/pico-8_manual.html#Commandline_parameters Manual] {en} zu finden.
}}}

= Befehle =
Die folgenden Befehle finden im Emulator Anwendung:
{{{#!vorlage Tabelle
<rowclass="titel"-2>Steckmodul
+++
<rowclass="kopf">Befehl
Beschreibung
+++
<cellclass="befehl">splore
[#Module Modul-Explorer] aufrufen.
+++
<cellclass="befehl">install_demos
Installation von Demos im Ordner '''~/.lexaloffle/pico-8/carts/demos'''. Diese dienen als [#Editor Programmierbeispiele].
+++
<cellclass="befehl">install_games
Installation von 7 Spielen im Ordner '''.lexaloffle/pico-8/carts/games'''.
+++
<cellclass="befehl">folder
Öffnet den Ordner mit den Modulen, welche unter '''~/.lexaloffle/pico-8/carts''' zu finden sind, im [:Dateimanager:].
+++
<cellclass="befehl">ls 
Listet die Inhalte im derzeitigen Verzeichnis auf. Alternativ kann auch `dir` verwendet werden.
+++
<cellclass="befehl">cd Ordner
Öffnet das Verzeichnis '''Ordner'''.
+++
<cellclass="befehl">cd ..
Wechselt eine Verzeichnisebene nach oben.
+++
<cellclass="befehl">mkdir march
Erstellt den Ordner '''march''' im Verzeichnis '''~/.lexaloffle/pico-8'''.
+++
<cellclass="befehl">load demos/uus.p8
Lädt '''uus.p8''' aus dem Unterordner '''demos'''.
+++
<cellclass="befehl">run
Startet den geladenen Titel.
+++
<cellclass="befehl">resume
Setzt den zuletzt gestarteten Titel fort.
+++
<cellclass="befehl">save
Speichert die zuletzt geladene/gespeicherte Datei.
+++
<cellclass="befehl">save uus 
Modul unter dem angegebenen Dateinamen speichern - hier: `uus`. Wird keine Dateierweiterung angegeben dann verwendet das Programm automatisch '''.p8'''.
+++
<cellclass="befehl">save uus.p8
Sicherung unter '''uus.p8'''.
+++
<cellclass="befehl">save uus.p8.png
Sichert das erstellte Programm im Format '''uus.p8.png'''. Im Vorfeld sollte der Titel gestartet und mittels [[Vorlage(Tasten, f7)]] ein Bildschirmfoto erstellt werden. Das Programm wird mit dieser Grafikdatei gespeichert. Diese wird als Vorschaubild genutzt.
+++
<cellclass="befehl">export uus.html
Exportiert den derzeitigen Titel nach [wikipedia:HTML5:]. Es werden die Dateien '''uus.html''' und '''uus.js''' mit dem angegebenen Namen (hier: `uus`) erstellt und können mit einem [:Internetanwendungen/#Webbrowser:Browser] gestartet werden. 
+++
<cellclass="befehl">export uus.bin
Erstellt aus dem aktuellem Programm ein eigenständiges Spiel für die Systeme Windows, Linux, Raspberry Pi und macOS. Es wird der Ordner '''uus.bin''' erstellt, in welchem die Spiele in Rohform sowie als '''.zip'''-Archiv vorliegen. PICO-8 ist danach nicht mehr notwendig um den Titel auszuführen. 
+++
<cellclass="befehl">export uus.png
Export des Spritesheets aus dem aktuellen Titel. Das Bild ist 128 Pixel breit und 128 Pixel hoch und verwendet die PICO-8-Palette. Via `import` können '''.png''' eingebunden werden.
+++
<cellclass="befehl">export uus_sfx.wav
Um die Soundeffekte als Audiodatei zu exportieren, verwendet man die Endung '''.wav'''. Um alle enthaltenen Soundeffekte in eigenständige Dateien zu extrahieren wird der Befehl um `_%d` erweitert: `export uus_sfx_%d.wav` Alle extrahierten Dateien werden durchnummeriert abgespeichert ('''uus_sfx_01.wav''', '''uus_sfx_02.wav''' ...).
+++
<cellclass="befehl">export uus_music.wav
Audiodatei mit der Musik erstellen. Um diese in einzelnen Titeln zu speichern muß auch hier `_%d` angehangen werden. 
+++
<cellclass="befehl">save @clip
Sichert die Zwischenablage im textcodierten Format.
+++
<cellclass="befehl">keyconfig
[#Tastenkuerzel Steuerung] anpassen.
+++
<cellclass="befehl">help
Programmhilfe aufrufen.
+++
<cellclass="befehl">info
Gibt detaillierte Informationen zum geladenen Titel aus.
+++
<cellclass="befehl">cls
clear screen / Bildschirm leeren
}}}

{{{#!vorlage Tabelle
<tablestyle="float:right; clear:right" :>[[Bild(xvst-0.p8.png, x160)]]
<:>[[Bild(rtype-0.p8.png, x160)]]
<:>[[Bild(motu-6.p8.png, x160)]]
<:>[[Bild(picman-1.p8.png, x160)]]
+++
<:>[https://www.lexaloffle.com/bbs/?tid=31443 Star Wars] {en}
<:>[https://www.lexaloffle.com/bbs/?pid=98070 R-Type] {en}
<:>[https://www.lexaloffle.com/bbs/?pid=81037 MOTU] {en}
<:>[https://www.lexaloffle.com/bbs/?tid=44840 Pic-Man] {en}
}}}
= Module =
Über den integrierten Browser oder auf der [https://www.lexaloffle.com/bbs/?cat=7&carts_tab=1#mode=carts&sub=2 Entwicklerseite] {en} können die Module bezogen werden. Hat man auf der Seite einen Titel gefunden, dann klickt man auf das Bild [[Bild(cart32.png,16,)]] und lädt die Datei mit der Endung '''.p8.png''' herunter. Diese Bilddatei enthält alle notwendigen Informationen und kann vom Emulator [#Befehle geladen] werden. Die Datei in den versteckten Ordner '''~/.lexaloffle/pico-8/carts/games''' kopieren, welcher ggf. noch zu erstellen ist. Alternativ kann der Titel per [wikipedia:Drag_and_Drop:Drag & Drop] in das Fenster gezogen werden. 

= Programmierung =
Grundlagen zur Programmierung sind unter den [#Links Links] zu finden. 

== Editor ==
Die Entwicklungsumgebung wird mit [[Vorlage(Tasten, esc)]] geöffnet:

{{{#!vorlage Tabelle
<rowclass="titel"-2>Editor
+++
<rowclass="kopf">Menüpunkt
Beschreibung
+++
<:>[[Bild(Editor01.png,32,)]]
Code-Editor
+++
<:>[[Bild(Editor02.png,32,)]]
Sprite-Editor
+++
<:>[[Bild(Editor03.png,32,)]]
Grafik-Editor / Karten-Editor
+++
<:>[[Bild(Editor04.png,32,)]]
Sound-Editor
+++
<:>[[Bild(Editor05.png,32,)]]
Musik-Editor
}}}

Unter [github:pico-8/awesome-PICO-8#tools:diesem Link] findet man eine Reihe von externen Programmen, welche verwendet werden können. Die Dokumentation von [https://www.lua.org/docs.html Lua] {en} steht in verschiedenen Sprachen zur Verfügung.

{{{#!vorlage Hinweis
Im [https://www.lexaloffle.com/dl/docs/pico-8_manual.html Handbuch] {en} werden die einzelnen Programmteile genauer beschrieben. 
}}}

== Spickzettel ==
[[Bild(PICO-8_CheatSheet_0111Gm_4k.png alt="Spickzettel", title="Spickzettel", )]]
[pdf::][github:ztiromoritz/pico-8-spick/raw/master/build/pico-8-spickzettel.pdf:PICO-8 Spickzettel]

= Tastenkürzel =
{{{#!vorlage Tabelle
<rowclass="titel"-2>Tastenkürzel
+++
<rowclass="kopf" >Taste(n)
Funktion
+++
[[Vorlage(Tasten, pfeiltasten)]]
Navigation im [#Befehle splorer].
+++
[[Vorlage(Tasten, enter)]]
Auswahl
+++
[[Vorlage(Tasten, esc)]]
Abbrechen / Rückkehr zum Terminal / Quelltext anzeigen bzw. den [#Programmierung Editor] öffnen
+++
[[Vorlage(Tasten, enter)]] / [[Vorlage(Tasten, p)]]
Pause
+++
[[Vorlage(Tasten, f7)]] / [[Vorlage(Tasten, strg+7)]]
Bildschirmfoto aufnehmen.
+++
[[Vorlage(Tasten, CTRL+9)]]
Ein 8-sekündiges Video als '''.gif'''-Datei aufnehmen (Desktop).
+++
[[Vorlage(Tasten, CTRL+S)]]
Schnellspeichern des aktuellen Titels.
+++
[[Vorlage(Tasten, CTRL+M)]]
Sound (de)aktivieren.
+++
[[Vorlage(Tasten, strg+r)]]
Startet den geladenen Titel.
+++
[[Vorlage(Tasten, alt+enter)]]
Vollbild-/Fenstermodus
+++
[[Vorlage(Tasten, alt+f4)]] / [[Vorlage(Tasten, ctrl+q)]]
Beenden
+++
<-2 rowclass="kopf">Spieler 1
+++
[[Vorlage(Tasten, pfeiltasten)]]
Steuerung
+++
[[Vorlage(Tasten, z)]] / [[Vorlage(Tasten, c)]] / [[Vorlage(Tasten, n)]]
Aktionstaste 1
+++
[[Vorlage(Tasten, x)]] / [[Vorlage(Tasten, v)]] / [[Vorlage(Tasten, m)]]
Aktionstaste 2
+++
<-2 rowclass="kopf">Spieler 2
+++
[[Vorlage(Tasten, s+d+e+f)]]
Steuerung
+++
[[Vorlage(Tasten, tab)]]
Aktionstaste 1
+++
[[Vorlage(Tasten, q)]]
Aktionstaste 2
}}}

[[Bild(pico-8_palette_020.png, alt="Farbpalette", title="Farbpalette", 256, right)]] 
= Infobox =
{{{#!vorlage Tabelle
<rowclass="titel"-2>PICO-8
+++
Veröffentlichung:
2014+
+++
Entwickler:
Joseph "zep" White / Lexaloffle Games 
+++
Auflösung 		
128x128 Pixel 
+++
Bilder pro Sekunde
30 / 60 FPS
+++
Farbpalette
16 Farben
+++
Modulgröße
32k
+++
Sound 		
4-Kanal 
+++
Code 		
[https://www.lua.org/ Lua] {en}
+++
Sprites 		
256 mit einer Größe von  8x8 Pixel.
+++
Karte 		
128x32 Kacheln
+++
Medien:
Download
+++
Strichcode / EAN / GTIN:
-
+++
<-2 rowclass="kopf">
+++
Läuft mit:
nativ
}}}

[[Bild(./PICO-8_logo.png,256,align=right)]]
= Links =
 * [https://www.lexaloffle.com/pico-8.php PICO-8] {en}
   * [https://www.lexaloffle.com/bbs/?cat=7 Forum] {en}
   * [https://www.lexaloffle.com/pico-8.php?page=resources#community Communities] {en}
   * [https://pico-8.fandom.com/wiki/Pico-8_Wikia Wiki] {en}
   * [github:pico-8:PICO-8]
 * [https://www.lua.org/ Lua] {en}
 * [wikipedia:Lua:]
 * [https://neko250.github.io/pico8-api/ Pico-8 API] {en}
 * [wikipedia:Pico-8:]
 * [github:GrazerComputerClub/Pi-XO:Pi-XO]
 * [github:pico-8/awesome-PICO-8:Awesome PICO-8] {en} - Eine Vielzahl von Links.
 * [https://www.thingiverse.com/thing:4938902 Pico 8 fanmade handheld] {en} {dl} (3D-Drucker)
 * [youtube:VR3x5d8xIKk:Celeste - Pico 8 Machine]
 * [youtube:2DjggycZXSg:Learning Pico-8 In One Day]
 * [youtube:NOcZonu65hE:PICO-8 Game Dev for Beginners]
 * [youtube:Eq_-neky3Jk:Vortrag: Spieleentwicklung mit PICO-8, PyGame & Godot]
 * [https://mboffin.itch.io/gamedev-with-pico-8-issue1 Game Development] {en} - A zine about game development using PICO-8.
 * [https://blog.gc2.at/post/pico-8/ PICO-8] {de}

#tag: Spiele, unfreie Software, Linux-Spiel, Humble Bundle, Lexaloffle, Lua, Schule, Programmierung