»Lua Tutorials«

Selfwritten tutorials for my favorite scripting language: Lua!

Lua einrichten

Wie bereits mehrfach erwähnt verwendet dieses Tutorial Lua 5.1.4 oder höher. Zunächst muss der Lua-Interpreter deiner Wahl aus dem Internet heruntergeladen werden (die Anleitung zur Installation vom Lua-Core folgt anschließend an den nächsten Textblock).

Falls er in einer komprimierten Form als Archiv vorliegt, wie beispielsweise im .zip Format, im .rar Format oder im .tar.gz Format, muss das Archiv zuerst entpackt werden. Auf allen Plattformen gibt es dafür Programme, die das erledigen können. Falls du das heruntergeladene Format nicht öffnen und entpacken kannst, musst du dir wohl ein anderes spezielles Programm dafür besorgen. UltimateZip, WinRar und 7Zip beispielsweise sind solche Tools speziell für die Windows-Plattform. In Linux können solche Erweiterungen entweder über den Paketmanager erworben werden, oder auch über das Internet. Für Mac Betriebssysteme gilt das selbe, Google kann dir dabei helfen, das passende Programm zu finden.

Du hast den Lua-Interpreter also aus seinem Archiv befreit oder er lag schon in Form einer ausführbaren Datei vor (zum Beispiel .exe). Nun startest du mit einem Doppelklick die Installationsroutine und folgst den einzelnen Schritten. Gratulation, du hast die Basis deiner Lua-Karriere geschaffen.

Falls du trotzdem den Lua-Core allein nutzen möchtest, wie ich es auch empfohlen habe, läuft die Installation folgendermaßen ab: Lade dir den Lua-Core herunter (beispielsweise lua514Win32bin.zip für Windows 32Bit) und entpacke die Datei. Falls ein neuer Ordner erstellt wurde öffne ihn. Darin solltest du jetzt mehrere Dateien wie "lua5.1.exe", "wlua5.1.exe" und ähnliche vorfinden. "lua5.1.exe" ist eine ausführbare Datei und ist der eigentliche Lua-Interpreter. Es muss auch nicht mehr eingerichtet werden, die Installation, die eigentlich gar keine war, ist bereits fertig.

Die Datei "lua5.1.exe" kann mit einem Doppelklick geöffnet werden. Zum Vorschein kommt die Windows-Konsole mit dem Text "Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio" und eine Zeile weiter unten befindet sich ein ">" und ein blinkender Cursor. Wie du erkennen kannst ist der Lua-Core rein konsolenbasiert. Windows-Fenster beispielsweise lassen sich mit zusätzlichen Funktionen mit "Lua for Windows" darstellen. Generell werden aber Basisaktionen in der Konsole ausgeführt. In den nachfolgenden Kapiteln wirst du lernen, was man in dieser Konsole eingeben kann und muss, um Lua-scripts auszuführen. Zunächst muss aber noch eine weitere Kleinigkeit eingerichtet werden.

Welcher Interpreter ist der richige?

Bevor man letztendlich mit dem Programmieren in "Lua" loslegen kann, muss man sich ersteinmal für einen bestimmten Lua-Interpreter, auf dem der Schwerpunkt liegen soll, entscheiden. Angesichts der enormen Vielfalt und des Überangebots an Lua-Interpretern ist wohl zuerst einmal eine kurze Einweisung vonnöten. Damit du eine gewisse Vorstellung davon bekommst, welcher Lua-Interpreter der richtige für dich ist und um dir einen kleinen Überblick zu verschaffen folgt nun eine Liste der bekanntesten und populärsten Lua-Interpreter.

Multiplattformunterstützung:

Lua 5.1.4 oder höher - der offizielle Lua Core ist verfügbar für folgende Plattformen: Win32, Win64, Linux32, Linux64, Mac32 Download: http://luabinaries.luaforge.net/download.html

murgaLua 0.6.6 oder höher - Lua-Interpreter mit zahlreichen zusätzlichen Funktionen, enorme Möglichkeiten der Anwendungsgestaltung. murgaLua ist verfügbar für folgende Plattformen: Win32, Linux32, Mac32 Download: http://www.murga-projects.com/murgaLua/

LuaRocks 1.0.1 oder höher - der offizielle Lua Core für alle Plattformen mit zahlreichen zusätzlichen Funktionen, sehr flexibel, mit installierbaren Erweiterungen. Achtung: Nur für Windows als Binärdatei (fertige Anwendung) verfügbar. Download: http://luaforge.net/frs/?group_id=220

Windows 32 Bit:

Lua 5.1.4 oder höher - der offizielle Lua Core. Download: http://luabinaries.luaforge.net/download.html

Lua For Windows 5.1.4.28 - der offizielle Lua Core für Windows mit zahlreichen zusätzlichen Funktionen, enorme Möglichkeiten der Anwendungsgestaltung. Download: http://luaforwindows.luaforge.net/index.html#Download

murgaLua 0.6.6 oder höher - Lua-Interpreter mit zahlreichen zusätzlichen Funktionen, enorme Möglichkeiten der Anwendungsgestaltung. Download: http://www.murga-projects.com/murgaLua/

LuaRocks 1.0.1 oder höher - der offizielle Lua Core für Windows mit zahlreichen zusätzlichen Funktionen, sehr flexibel, mit installierbaren Erweiterungen. Download: http://luaforge.net/frs/?group_id=220

Linux 32 Bit:

Lua 5.1.4 oder höher - der offizielle Lua Core. Download: http://luabinaries.luaforge.net/download.html

murgaLua 0.6.6 oder höher - Lua-Interpreter mit zahlreichen zusätzlichen Funktionen, enorme Möglichkeiten der Anwendungsgestaltung. Download: http://www.murga-projects.com/murgaLua/

LuaRocks 1.0.1 oder höher - der offizielle Lua Core für jede Plattform mit zahlreichen zusätzlichen Funktionen, sehr flexibel, mit installierbaren Erweiterungen. Achtung: Nur als Sourcecode verfügbar, nicht für Neulinge geeignet. Download: http://luaforge.net/frs/?group_id=220

Playstation Portable:

Speziell für die Sony PSP gibt es angepasste Lua-Interpreter. Vorraussetzung ist dabei eine alternative Firmware, die das Abspielen von eigenem Code ermöglicht. ("Custom Firmware" - "CFW")

LuaPlayer - Standard Lua-Interpreter für die PSP mit einigen esentiellen, aber zusätzlichen Funktionen. Download: via Google Suche oder http://files.bumuckl.com//lua/luaplayerstandardand_cools

LuaPlayer HM - erweiterter Lua-Interpreter für die PSP mit zahlreichen zusätzlichen Funktionen Download: via Google Suche oder http://files.bumuckl.com//lua/luaplayer_hm

PGELua - erweiterter, sehr performanter Lua-Interpreter auf Basis der Phoenix Game Engine Download: http://www.luaplayer.org/?page_id=81 oder http://files.bumuckl.com//lua/pgelua

LuaPlayer Euphoria - erweiterter Lua-Interpreter für die PSP mit zahlreichen zusätzlichen Funktionen Download: via Google Suche oder http://files.bumuckl.com//lua/luaplayer_euphoria

Computerspiele:

Sehr viele Computerspiele nutzen Lua als flexiblen Teil ihres eigenen Systems, beispielsweise für Einstellungen, grafische Anzeigen, anpassbare Funktionen und Erweiterungen. Daher sind sie im Besitz eines eigenen Lua-Interpreters, der natürlich auch den Lua-Core beinhaltet und somit genutzt werden kann. World of Warcraft, Crysis, Far Cry und Garrys Mod nutzen beispielsweise Lua, um nur wenige zu nennen. Aber es ist Vorsicht geboten, da der Lua Core möglicherweise für eigene Zwecke verändert wurde und somit keine Garantie mehr für eine gewöhnliche Funktionalität des Lua-Interpreters gewährleistet werden kann. Für die meisten Computerspiele, die Lua nutzen, gibt es komplett eigene Tutorials und Anleitungen.

Wie bereits erwähnt liegt der Schwerpunkt dieses Tutorials auf den Funktionen und Möglichkeiten des Lua Cores. Daher sollte der Lua Core absolut für deine Ansprüche genügen. Sollte das nicht der Fall sein, kannst du dir immer noch selbst einen Lua-Interpreter aussuchen. Um aber Komplikationen vorzubeugen, rate ich dir die Verwendung des Lua-Cores, denn das gesamte Tutorials ist darauf zugeschnitten. Ich empfehle zudem die Verwendung eines Windows-Betriebssystems. Wer Linux oder ein anderes System nutzt, wird sich aber ohnehin gut genug damit auskennen, sodass keine Einweisung erforderlich ist.

Lua Basics

Scheint so, als ob hier jemand interessiert ist an Lua ;)

Das freut mich, denn Lua ist nicht nur meine liebste Scriptsprache, sondern ich vermittele sie auch gerne und empfehle sie immer gerne weiter. Lua mag unscheinbar klingen, aber es wird immer öfter und in immer mehr Bereichen eingesetzt. Und es ist die perfekte Sprache um in die Programmierung einzusteigen. Ein Einstieg in die Programmierung mit Lua lohnt sich immer!

  1. Was genau ist Lua?
  2. Welcher Interpreter ist der richtige?
  3. Lua einrichten
  4. Entwicklungsumgebung für Lua
  5. Das erste Script
  6. Variablen
  7. Blöcke
  8. Schleifen
  9. Tables

Was ist Lua

Lua ist eine besonders einfache und schnell zu erlernende Scriptsprache. Im Unterschied zu den "normalen" Programmiersprachen muss Lua als Scriptsprache nicht "kompiliert" werden, also nach dem Programmieren muss der Code nicht in Maschinencode umgewandelt werden. Stattdessen wird der Lua-Code interpretiert, nämlich von einem Lua-Interpreter. Dieser Lua-Interpreter, oder auch Lua-Wrapper genannt, kann als eigenständiges Programm vorliegen, aber auch als Teil einer großen Anwendung. Der Lua-Interpreter liest den Lua-Code und arbeitet ihn dabei Stück für Stück ab.

Zu beachten ist dabei, dass es für alle möglichen Plattformen jede Menge unterschiedliche Lua-Interpreter beziehungsweise Lua-Wrapper gibt. Eines haben alle Lua-Interpreter aber gemeinsam: Sie bestehen mindestens aus dem so genannten Lua Core, also dem Lua Kern. Dabei handelt es sich sozusagen um das Fundament von Lua, dass ständig von vielen verschiedenen Leuten weiterentwickelt wird und auf http://www.lua.org zum Download bereitsteht. Dieser Kern beinhaltet, bildhaft ausgedrückt, den Motor, um Lua-scripte lesen und interpretieren zu können, sowie sämtliche Festlegungen was die Syntax, also die Form der Notation eines Lua-Scripts betrifft.

Was genau ist denn mit "Syntax" gemeint? Nun, nehmen wir einmal an, dass jeder Mensch auf diesem Planeten die Bedeutung für das Wort "Haus" anders ausspricht. Zum Beispiel sagt ein Mensch statt "Haus" "jugli". Ein anderer Mensch wiederum sagt "iluto". Und wiederum ein Anderer sagt "zutila". Das führt unter den Dreien zu enormen Kommunikationsproblemen, keiner versteht, was der andere sagen will, auch wenn es nur um das Wort Haus geht. Also sollten sich die Drei auf ein einziges Wort einigen, um sich verständigen zu können. Dasselbe gilt natürlich für Grammatik und Satzbau. Ein Computer, der um einiges primitiver ist als der Mensch und auch über keine dynamische Wissenserweiterung wie der Mensch verfügt, kann also nicht mit belanglosen Wörtern gefüttert werden. Stattdessen muss festgelegt werden, welches Wort welche Aktion hervorruft, und wie man den Code insgesamt notiert (das entspricht der Grammatik und dem Satzbau). Darunter versteht man die Syntax einer Programmiersprache.

Desweiteren enthält der Lua-Core ein ganze Menge an Standardbefehlen. Dadurch wird ebenfalls eine gewisse Einheit garantiert, denn jeder Lua-Interpreter besitzt dieses Fundament und dementsprechend dieselben Grundfunktionen. Vor allem aber besitzt Lua dadurch eine einheitliche Syntax. Unabhängig vom Lua-Interpreter werden Variablen, Funktionen und Operationen immer gleich notiert und behandelt.

Weshalb aber gibt es dann mehrere verschiedene Lua-Interpreter? Der Grund dafür ist genauso banal wie genial: Lua ist erweiterbar durch eigene Funktionen. So stellen alle Lua-Interpreter zwar die selben Kernfunktionen bereit, aber jeder Lua-Interpreter kann über zusätzliche individuelle Funktionen verfügen.

Daher ist es naheliegend, dass bei der Vermittlung der "Lua Basics" nur explizit auf den Lua Core und seine Funktionen eingegangen wird, vor allem aber auf die Syntax von Lua. Die Beispielcodes sind deshalb auch so konzipiert, dass jeder Lua-Interpreter damit arbeiten kann und sie den Rahmen der Lua-Core-Möglichkeiten nicht sprengen.

Das erste Script

Da du nun alles notwendige eingerichtet hast, können wir uns dem ersten Code widmen. Dazu öffnest du die ausführbare Datei des Lua-Interpreters, im Falle des Tutorials wäre das die lua5.1.exe.

Die Konsole, die sich dabei öffnet, ist rein technisch gesehen eine Windows-Konsole. Allerdings ist es eine Windows-Konsole, in der bereits Lua initialisiert und geladen wurde. Deshalb kann man in dieser Konsole keine Windows-Konsolenbefehle mehr eingeben. Stattdessen kann man in dieser Konsole direkt Lua-code schreiben und ausführen lassen.

Hast du die Lua-Konsole geöffnet, tippe folgendes ein:

print("Das hier ist mein erstes Lua-script")

Bestätige deine Eingabe mit Enter. Der Cursor sollte eine Zeile nach unten rutschen und den Text "Das hier ist mein erstes Lua-script" anzeigen (ohne die Anführungsstriche). Glückwunsch, du hast soeben deinen erstes Lua-code geschrieben und ausgeführt, auch wenn er sehr einfach und ziemlich nutzlos ist ;)

Du hast zugleich aber einen sehr esentiellen Befehl des Lua-cores kennengelernt: print(). print() ist eine Grundfunktion von Lua und erwartet zwischen den beiden Klammern Text, der in Anführungszeichen steht, um ihn in der Konsole ausgeben zu können.

Es wäre aber schon sehr mühsam, wenn man jedesmal seinen gesamten Code in die Konsole eingeben müsste. Stattdessen lagern wir den Code jetzt in eine Datei aus, wo wir ihn beliebig umfangreich gestalten können. Ausführen müssen wir in der Konsole dann nur das Script. Öffne also den Editor deiner Wahl und schreibe folgendes hinein:

print("Das hier ist mein zweites Lua-script, das aus der Datei script.lua stammt.")

Speichere es im selben Ordner ab, wo sich auch die lua.5.1.exe befindet, und zwar unter dem Namen "script.lua" (ohne Anführungszeichen). Stelle aber sicher, dass Dateinamenserweiterungen eingeblendet werden, da du sonst die Datei unwissentlich als "script.lua.txt" abspeicherst. Wie blendet man die Dateinamenserweiterugnen ein? Dazu navigierst folgenderweisse: Arbeitsplatz->Extras->Ordneroptionen->Ansicht. Bei "Erweiterungen bei bekannten Dateitypen einblenden" setzt du einen Haken. Bestätige mit einem Klick auf "Übernehmen".

Nun brauchst du nur wieder die Lua-Konsole öffnen, folgendes eintippen und mit Enter bestätigen:

dofile("script.lua")

Mit dofile() kann man Lua-scripts ausführen. dofile() ist ebenfalls eine Grundfunktion des Lua-Cores. Zwischen den Klammern erwartet die Funktion den Pfad zur Lua-Datei, und das ganze wieder in Anführungszeichen.

Trotzdem mag es für den ein oder anderen immer noch zu aufwendig sein, jedesmal die Lua-Konsole zu öffnen und sein Script mit dofile() ausführen zu müssen. Man kann es noch einfacher machen, nämlich mit einem batch-File (datei.bat). Ein Batchfile ist eine Datei mit der Endung ".bat" und enthält Batch-code. Batch ist die von Windows mitgelieferte Scriptsprache zur Automatisierung von Abläufen am PC. Wir wollen jetzt einmal ein kleines Batchfile erstellen, dass die Lua-Konsole und automatisch die Datei "script.lua" bei einem Doppelklick öffnet. Dazu erstellst du eine neue Textdatei. In dieser Textdatei notierst du folgendes:

@echo off
lua5.1.exe script.lua
pause

Speichere ab und ändere die Dateinamenserweiterung von ".txt" zu ".bat". Nun kannst du die Datei script.lua mit einem simplen Doppelklick auf die .bat-Datei ausführen. Anmerkung: Bei "Lua For Windows" genügt ein Doppelklick auf eine .lua-Datei, um sie auszuführen.

Categories

Tags