Lua verwendet zwei Kommentarstile: ein Doppelbindestrich-Präfix für einzeilige Kommentare und Langklammer-Delimiter für mehrzeilige Blockkommentare. Beide sind einfach, aber die Mehrzeilen-Syntax hat einige Randfälle, die Entwickler aus C-ähnlichen Sprachen stolpern lassen. Dieser Leitfaden deckt jede Form von Lua-Kommentaren ab, wann man welche verwendet und wie man sie sauber entfernt, wenn Sie bereit zum Deployment sind.
Warum Kommentare in Lua wichtig sind
Lua ist eine dynamisch typisierte, minimalistische Sprache. Es hat keine formalen Typannotationen, keine verpflichtenden Docstrings und keinen eingebauten Dokumentationsgenerator. Das macht Kommentare zum primären Mechanismus, um Absichten zu erklären, Funktionssignaturen zu dokumentieren und temporäre Codeänderungen zu markieren. In einer Sprache, in der eine Funktion wie `process(x, y, z)` keinen Hinweis darauf gibt, was x, y und z bedeuten, verhindert eine einzige Kommentarzeile stundenlange Verwirrung für jeden, der das Skript später liest — einschließlich Ihnen selbst.
Kommentare erfüllen in echtem Lua-Code drei unterschiedliche Zwecke: Dokumentation (erklären, was eine Funktion, Variable oder ein Modul tut), Annotation (das Warum hinter nicht offensichtlicher Logik markieren) und Debugging (Codeblöcke vorübergehend deaktivieren, ohne sie zu löschen). Jeder Zweck erfordert einen etwas anderen Kommentarstil.
Wo Lua-Kommentare üblicherweise eingesetzt werden
- Dateiheader - Autor, Datum, Modulname und kurze Beschreibung am Anfang jedes Skripts.
- Funktionsdokumentation - Parameterbeschreibungen, Rückgabewerte und Nebeneffekte direkt vor der Funktionsdefinition.
- Inline-Annotationen - kurze Notizen am Zeilenende, die eine magische Zahl, einen Workaround oder eine Abhängigkeit erklären.
- Vorübergehende Deaktivierung - einen Codeblock in einen Blockkommentar einpacken, um ihn während der Entwicklung abzuschalten, ohne den Code zu verlieren.
- TODO-/FIXME-Marker - laufende Arbeiten oder bekannte Bugs für spätere Bearbeitung markieren.
Note
Einzeilige Kommentare
Der einzeilige Kommentar ist die häufigste Form in Lua. Er beginnt mit zwei aufeinanderfolgenden Bindestrichen (`--`) und erstreckt sich bis zum Ende der aktuellen Zeile. Der Interpreter ignoriert alles vom `--` bis zum nächsten Zeilenumbruch vollständig.
-- This entire line is a comment
local speed = 150 -- pixels per second
-- TODO: replace magic number with a named constant
local MAX_RETRIES = 5
--[[ This looks like a block comment opener, but only if
followed immediately by the double bracket ]]
-- The above is two separate single-line commentsPlatzierungsregeln
Ein einzeiliger Kommentar kann überall erscheinen, wo Leerraum gültig ist: in einer eigenen Zeile, am Ende einer Anweisung oder zwischen Tokens. Die einzige Einschränkung ist, dass `--` nicht innerhalb eines String-Literals auftreten darf — innerhalb von Anführungszeichen oder Langklammern wird er als literaler Text behandelt, nicht als Kommentar-Marker.
local url = "https://example.com/api--v2" -- the -- inside the string is NOT a comment
local greeting = "hello" -- this end-of-line comment IS a comment
if speed > 100 then -- check speed threshold
slow_down()
endDie Doppelbindestrich-Konvention
Anders als in C oder JavaScript, wo `//` üblich ist, verwendet Lua ausschließlich `--`. Wenn Sie aus einer anderen Sprache kommen, kann das Muskelgedächtnis Sie zu `//` oder `#` drängen. Beides ist kein gültiger Kommentar-Marker in Standard-Lua — `//` ist der Floor-Division-Operator in Lua 5.3+ und `#` ist der Längenoperator. Verwenden Sie immer `--` für Zeilenkommentare.
Warning
Mehrzeilige (Block-)Kommentare
Mehrzeilige Blockkommentare in Lua verwenden die Langklammer-Syntax. Ein Blockkommentar öffnet mit `--[[` und schließt mit `]]`. Der Lua-Interpreter ignoriert alles zwischen diesen beiden Delimitern, einschließlich Zeilenumbrüchen, Einrückung und allen `--`-Sequenzen innerhalb des Blocks.
--[[
Module: PlayerController
Author: Dev Team
Description: Handles player movement, jump mechanics, and ground detection.
Dependencies: PhysicsEngine, InputMap
]]
local PlayerController = {}
--[[
Moves the player by the given delta vector.
@param player table The player object
@param delta vec2 Movement direction and magnitude
@return nil
]]
function PlayerController.move(player, delta)
player.position = player.position + delta
endLangklammer-Ebenen zum Verschachteln
Standard-`--[[ ]]`-Blöcke können `]]` nicht literal enthalten — jedes `]]` im Block beendet den Kommentar. Lua löst das mit Klammerebenen: Sie fügen zwischen den Klammern Gleichheitszeichen ein, um ein eindeutiges Öffnungs-/Schließpaar zu erzeugen. Ein Level-1-Block verwendet `--[=[` und `]=]`, Level 2 verwendet `--[==[` und `]==]` und so weiter. Der schließende Delimiter muss genau der Ebene der öffnenden Klammer entsprechen.
--[=[
This is a level-1 block comment.
It can safely contain standard --[[ double-bracket ]] syntax
without ending the outer comment block early.
Useful when commenting out existing block-commented code.
]=]
--[==[
Level-2 block comment.
Can contain both [[ ]] and [=[ ]=] inside it safely.
]==]Blockkommentar vs. mehrere einzeilige Kommentare
| Aspekt | Blockkommentar --[[ ]] | Mehrere -- Zeilen |
|---|---|---|
| Syntax | --[[ ... ]] | -- in jeder Zeile |
| Zum Deaktivieren von Code | ✓ Ideal - umschließt jeden Block | ✗ Mühsam für lange Abschnitte |
| Für Dokumentation | ✓ Standard für Datei-/Funktionsheader | ✓ Üblich für Inline-Notizen |
| Editor-Umschaltung | Je nach Editor-Plugin unterschiedlich | ✓ Die meisten Editoren schalten automatisch |
| Verschachtelungsunterstützung | ✓ Mit Klammerebenen [=[ ]=] | ✗ Nicht anwendbar |
| Lesbarkeit | ✓ Klare Start-/Endgrenze | ✓ Zeile für Zeile leicht erfassbar |
Tip
Codeblöcke auskommentieren
Eine Funktion, Schleife oder einen Bedingungsblock vorübergehend zu deaktivieren ist einer der praktischsten Einsatzfälle von Kommentaren während der Entwicklung. Die Blockkommentar-Syntax von Lua macht das sauber und reversibel — aber es gibt ein verbreitetes Muster, das das Umschalten noch schneller macht.
Umschließen Sie den Block mit --[[ und ]]
Platzieren Sie `--[[` in einer eigenen Zeile unmittelbar vor dem Code, den Sie deaktivieren möchten, und `]]` in einer eigenen Zeile direkt danach. Der Lua-Interpreter überspringt den gesamten Block. Es wird kein Code gelöscht — Sie können ihn sofort wiederherstellen, indem Sie die beiden Delimiter-Zeilen entfernen.
Nutzen Sie den umschaltbaren --[[ -Trick
Entwickler verwenden oft ein cleveres Umschaltmuster: Sie setzen `--[[` vor einen Block und `--]]` (beachten Sie das zusätzliche `--`) ans Ende. Um den Block wieder zu aktivieren, ändern sie `--[[` zu `---[[`. Da `---[[` nun ein einzeiliger Kommentar ist (das `--` kommentiert das `-[[` aus), befindet sich der Block nicht mehr in einem Blockkommentar und wird normal ausgeführt.
-- DISABLED: change --[[ to ---[[ to re-enable this block
--[[
local debug_overlay = require("DebugOverlay")
debug_overlay.show_hitboxes = true
debug_overlay.show_fps = true
--]]
-- To enable: change the opening --[[ to ---[[
---[[
local debug_overlay = require("DebugOverlay")
debug_overlay.show_hitboxes = true
debug_overlay.show_fps = true
--]]Verwenden Sie Klammerebenen, wenn der Block bereits --[[ ]] enthält
Wenn der Code, den Sie auskommentieren, bereits `--[[ ]]`-Blockkommentare enthält, endet ein einfacher `--[[`-Wrapper beim ersten `]]`, auf den er trifft — das ist die schließende Klammer des inneren Kommentars, nicht Ihre. Verwenden Sie in diesem Fall einen Level-1-Block `--[=[` und schließen Sie mit `]=]`, um den äußeren Block sicher zu umschließen.
Lua-Syntax-Validator
Validieren Sie nach dem Bearbeiten von Kommentaren oder dem Umstrukturieren von Blöcken Ihr Lua-Skript auf Syntaxfehler und unpassende Block-Delimiter mit zeilenbewussten Diagnosen.
Kommentare in Roblox Luau
Roblox verwendet Luau, einen statisch typisierten Ableger von Lua 5.1. Die Kommentarsyntax ist identisch mit Standard-Lua — `--` für einzeilig und `--[[ ]]` für mehrzeilig. Luau fügt eine sinnvolle Erweiterung hinzu: den Dreifachbindestrich-Dokumentationskommentar `---`, den der Luau Language Server liest, um Hover-Dokumentation, Parameterhinweise und Typinformationen direkt in Roblox Studio bereitzustellen.
Luau-Dokumentationskommentare (---)
Wenn Sie `---` über einer Funktion oder Variablen schreiben, behandelt der Luau LSP den Kommentar als strukturierte Dokumentation. Sie können Parametertypen mit `@param`, Rückgabetypen mit `@return` und Deprecation-Hinweise mit `@deprecated` annotieren. Diese werden von der Runtime nicht durchgesetzt — sie werden vom Language-Server-Tooling gelesen und als Tooltips im Skripteditor von Studio angezeigt.
--- Fires a projectile from the given origin in the given direction.
--- @param origin Vector3 The world position to spawn the projectile
--- @param direction Vector3 Normalised direction vector
--- @param speed number Initial speed in studs per second
--- @return BasePart The spawned projectile part
local function fireProjectile(origin, direction, speed)
-- implementation
endPraktische Roblox-Kommentarmuster
In der Roblox-Entwicklung erfüllen Kommentare eine zusätzliche Rolle: Skripte lesbar zu machen für Mitarbeiter, die den ursprünglichen Code vielleicht nicht geschrieben haben. Roblox-Spiele wachsen häufig zu großen, von Teams gepflegten Codebasen heran, und `--`-Kommentare sind das wichtigste Werkzeug, um Remote-Event-Verträge, Modul-APIs und den Zweck jedes LocalScript zu dokumentieren.
- Remote-Event-Verträge - kommentieren Sie, welche Argumente ein RemoteEvent oder eine RemoteFunction erwartet, da der Empfänger den Code des Aufrufers nicht sehen kann.
- Modul-API-Header - verwenden Sie oben in jedem ModuleScript einen `--[[ Module: ... ]]`-Block, um Zweck und öffentliche Schnittstelle zu beschreiben.
- Veralteter Code - markieren Sie alte APIs mit `-- @deprecated: use NewFunction() instead`, damit Mitarbeiter wissen, was zu vermeiden ist.
- Abschnittstrenner - verwenden Sie Trenner im Stil `-- ------------------ Initialization ------------------`, um lange Skripte visuell in lesbare Zonen zu gliedern.
Wenn jemand, der Ihre Codebasis nicht kennt, dieses Skript morgen öffnen würde: Würde er verstehen, was jede Funktion tut, ohne das Spiel zu starten? Das ist die Kommentar-Qualitätslatte, die es zu erreichen lohnt.
Lua-Formatter
Formatieren Sie Ihre Lua- und Luau-Skripte mit konsistenter Einrückung und Abständen. Browserbasiert, ohne Upload, ohne Anmeldung - funktioniert für Roblox-Skripte wie für Standard-Lua.
Wann man Kommentare entfernt
Kommentare sind während der Entwicklung unverzichtbar, aber es gibt konkrete Szenarien, in denen ihre Entfernung der richtige Weg ist: Produktions-Skripte deployen, Spielcode obfuskieren, Skriptdateigröße reduzieren oder eine minifizierte Build für eine performance-sensible Umgebung vorbereiten.
Warum Kommentare die Skriptgröße erhöhen
In Lua werden Quelldateien zur Laufzeit in Bytecode kompiliert. Kommentare werden während dieses Kompilierungsschritts entfernt, haben also keinen Einfluss auf Bytecode-Größe oder Ausführungsgeschwindigkeit. In Umgebungen jedoch, in denen die Quelldatei selbst übertragen wird — etwa wenn Roblox Studio Skripte auf Spielclients repliziert oder ein Webserver eine Lua-Konfigurationsdatei ausliefert —, zählt die Rohtextgröße. Ein stark kommentiertes Skript kann 20-40 % größer sein als sein kommentarbefeites Äquivalent.
Kommentare manuell vs. mit einem Tool entfernen
Manuelles Entfernen von Kommentaren ist fehleranfällig. Es ist leicht, versehentlich ein schließendes `]]` zu löschen, das zu einem String statt einem Kommentar gehört, oder verwaiste Kommentar-Marker zu hinterlassen, die Syntaxfehler verursachen. Ein dediziertes Kommentarentfernungs-Tool parst die vollständige Lua-Grammatik und versteht den Unterschied zwischen einem `--` innerhalb eines String-Literals und einem `--`, der einen Kommentar beginnt. Es entfernt nur echte Kommentare und lässt Strings, Logik und Struktur vollständig intakt.
Der Lua-Kommentar-Entferner von Aback Tools verarbeitet `--`-Einzeiler und `--[[ ]]`-Mehrzeiler in einem Durchgang. Er läuft vollständig in Ihrem Browser — Ihr Quellcode wird nie auf einen Server hochgeladen. Skript einfügen, auf Entfernen klicken und die bereinigte Ausgabe sofort erhalten.
Kommentarentfernung in der Deployment-Pipeline
Für Skripte, die einen Build-Schritt durchlaufen, lässt sich die Kommentarentfernung mit anderen Codeoptimierungen kombinieren. Der Lua-Minifier entfernt Kommentare und verdichtet Leerraum in einem Schritt — nützlich, wenn Sie sowohl eine lesbare Quelldatei (mit Kommentaren) als auch eine kompakte Deployed-Version (ohne sie) wollen. Der Lua-Kompressor geht weiter und zeigt Größenvergleiche vorher/nachher, sodass Sie genau messen können, wie viel die Optimierung spart.
- Entwicklungsquelle - alle Kommentare behalten; den Formatter für lesbare Struktur nutzen.
- Versionskontrolle - die vollständig kommentierte Quelle committen; niemals kommentarbefeite Dateien als kanonische Quelle committen.
- Deployed/replizierte Skripte - Kommentare mit dem Entferner entfernen, dann optional zur Größenreduktion minifizieren.
- Obfuskierte Skripte - Kommentare werden bei der Obfuskation immer entfernt; kein manueller Schritt nötig.
- Open-Source-Bibliotheken - Kommentare in der Quelle behalten; optional eine minifizierte Build in einem `/dist`-Ordner bereitstellen.
Tip
Lua-Kommentar-Entferner
Entfernen Sie alle -- und --[[ ]] Kommentare aus jedem Lua-Skript mit einem Klick. Bewahrt Strings, Logik und Struktur. Browserbasiert und völlig privat.
Key takeaways
- Lua verwendet -- für einzeilige Kommentare und --[[ ]] für mehrzeilige Blockkommentare - es gibt keine anderen Kommentar-Marker.
- Langklammer-Ebenen (--[=[ ]=], --[==[ ]==]) ermöglichen das Verschachteln von Blockkommentaren in Blockkommentaren.
- Der --[[ -Umschalt-Trick (Wechsel zwischen --[[ und ---[[) erlaubt es, Codeblöcke mit einem Tastendruck zu aktivieren und zu deaktivieren.
- Luau in Roblox Studio unterstützt --- -Doc-Kommentare für die Hover-Dokumentation des Luau Language Server - zur Laufzeit bleiben es einfache Kommentare.
- Kommentieren Sie das Warum und den Vertrag, nicht das Was - jede selbsterklärende Operation, die einen Kommentar bekommt, fügt Rauschen statt Klarheit hinzu.
- Entfernen Sie Kommentare vor dem Deployment mit dem Lua-Kommentar-Entferner - er verarbeitet beide Kommentarstile, ohne Strings anzutasten.
- Bewahren Sie die vollständig kommentierte Quelle immer in der Versionskontrolle auf; erzeugen Sie kommentarbeffreite oder minifizierte Builds als Deployment-Artefakte.
Best Practices für Kommentare
Die Syntax zu kennen ist der einfache Teil. Zu wissen, wann und wie man gut kommentiert, unterscheidet wartbaren Lua-Code von einem Skript, mit dem man sechs Monate später nicht mehr arbeiten kann. Diese Praktiken gelten speziell für Lua, wobei die meisten universelle Prinzipien für jede dynamisch typisierte Sprache sind.
Kommentieren Sie das Warum, nicht das Was
Der Code zeigt bereits, was passiert. Ein Kommentar wie `-- erhöhe i um 1` neben `i = i + 1` fügt null Information hinzu. Kommentare verdienen ihren Platz, wenn sie Entscheidungen erklären: warum ein bestimmter Algorithmus gewählt wurde, warum ein Grenzwert auf einen bestimmten Wert gesetzt ist oder warum eine Funktion in ungewöhnlicher Reihenfolge aufgerufen wird. Wenn das Reasoning aus dem Code selbst klar ist, ist der Kommentar optional.
Dokumentieren Sie Funktionssignaturen explizit
Lua hat kein natives Typsystem zum Dokumentieren von Parametern. Ein knapper Blockkommentar über jeder öffentlichen Funktion, der Parameternamen, ihre erwarteten Typen und den Rückgabewert auflistet, ist eine der wertvollsten Kommentar-Gewohnheiten in Lua. Das gilt besonders für jede Funktion, die von Mitarbeitern genutzt oder in einem Modul exponiert wird.
Verwenden Sie konsistente TODO- und FIXME-Marker
Markieren Sie unvollständige Arbeiten mit einem konsistenten Präfix, damit Sie danach suchen können. `-- TODO:` kennzeichnet geplante Verbesserungen, `-- FIXME:` bekannte Bugs und `-- HACK:` Workarounds, die später richtige Lösungen brauchen. Die meisten Editoren und Code-Suchtools erkennen diese Präfixe und können Ergebnisse so filtern, dass nur markierte Zeilen angezeigt werden.
Vermeiden Sie Überkommentierung
Ein Skript, das für jede Variablenzuweisung dicht mit Kommentaren gespickt ist, ist schwerer zu lesen, nicht leichter. Kommentare fügen visuelles Gewicht hinzu — wenn jede Zeile einen hat, gehen die wichtigen Kommentare im Rauschen verloren. Streben Sie eine Kommentierdichte an, in der Kommentare wirklich nicht offensichtliche Entscheidungen markieren und öffentliche Funktionsverträge dokumentieren, statt jede Operation zu erzählen.