Tut mir leid, dass ich erst jetzt antworte - soviel zu tun.
Zitat von Ynnus
Ich finde das Konzept von "1m: tu irgendwas in einer Minute" etwas ungeschickt. So hat man doch überhaupt keine Kontrolle über das Event mehr, sobald es einmal mit diesem Befehl aufgerufen wurde. Ich nehme mal dein Beispiel: "1m: int k = 0 to 100". Dies ließe sich doch mit einer einfachen For-Schleife und einer "Stopuhr"-Funktion bestens umsetzen, und man hat innerhalb der Funktion noch Möglichkeiten per IF zu bestimmten Events auszusteigen, Schritte zurückzusetzen oder zu überspringen etc. Bei deinem Einzeiler klingt das für mich so, als würde von nun an die Variable k hochzählen, bis sie in einer Minute bei 100 angekommen ist. Wo bleibt da die Flexibilität? Klar kannst du überall im Code k-=10 schreiben, aber die Übersicht leidet dort doch extrem, weil du keine wirkliche Schleife hast, wo du genau siehst, an welcher Stelle hochgezählt wird, sondern irgendwo im Speicher existiert eine Variable, die sich jede Sekunde (unabhängig davon, wo die Ausführung deines Scriptcodes gerade ist) magisch erhöht.
Als Anwendungsbeispiel: Mal angenommen, dieser Timer ist in einem Spiel eingebaut und stellt ein Zeitlimit für ein Level dar, soll aber gestoppt werden, sobald der Spieler ein Gegenstand einsammelt. Und nun? Wie stoppt man den Timer von dir? Dazu musst du dir dann ein Behilfskonstrukt a la "0s: stop k" oder sowas schreiben. Auch das ist wenig übersichtlich und sehr undurchsichtig im Programmcode. Oder du musst die Anzeige des Timers am Bildschirm durch einen festen Text (der die letzte Zeit anzeigt) ersetzen und intern zählt die ursprungsvariable k aber weiter. Auch das ist nur ein Workaround anstatt eine Lösung.
Ich würde lieber Konstrukte wie Schleifen und eine Timer-Funktion in deine Sprache einbauen. Damit kannst du dir mit wenigen Zeilen selbst Funktionen schreiben, die jede Sekunde eine Variable +X zählen und weißt genau, an welcher Stelle im Programmcode das Zählen passiert, um eventuell Einfluss darauf zu nehmen - oder das Zählen anzuhalten etc.
Auf die Gefahr hin, dass deine Scriptsprache dann zu kompliziert wird würde ich sagen - jeder, der einigermaßen ernsthaft etwas mit Programmierung bzw Scripten zu tun haben will, muss sich mit Schleifen auskennen und Variablen über die Zeit hinweg steuern können. Selbst beim RPG-Maker gibt es Schleifen. Man kann keinen wirklichen Einfluss auf das Geschehen nehmen, ohne sich ein bisschen mit solchen Befehlen und Funktionen zu befassen. Das müssen auch die Anwender deiner Scriptsprache tun - ohne geht es nicht.
...
Ich muss dir recht geben, Schleifen und sonstige Möglichkeiten sind natürlich essentiell für eine Sprache, egal ob für Spiele oder nicht, und die werden natürlich auch vorhanden sein.
Das ganze ist wohl ein wenig falsch rübergekommen und das Beispiel mit dem Counter war vielleicht auch nicht das beste. Diese Möglichkeit, so gut wie "jeder" Funktionen einen zusätzlichen zeitlichen verlauf zu geben ist natürlich nur eine möglichkeit zur erleichtern des skriptens. Wenn man genauren Zugriff und Kontrolle über die veränderten Werte braucht, kann man natürlich immernoch Schleifen oder sonstiges verwenden. Aber hier liegt der Punkt: Wenn ich ein Spiel mache, brauch ich das oft/meistens nicht.
Mal ein kleines beispiel um ein Menü erscheinen zu lassen:
Die Sache ist einfach die, dass in einem Spiel (dafür ist die Sprache da), wirklich extrem viele Funktionen in irgendeiner Art einen zeitlichen Verlauf starten (so meine Erfahrung). Daher war mein Ansatz, den Parameter für die Zeit (der ja wirklich in sovielen Funktionen vorhanden ist) aus eben diesen zu extrahieren und vorzuziehen.
Im Endeffekt ist es also nur eine vereinfachte schreibweise die (meiner Meinung nach) einen besseren Überblick verschafft, aber im Endeffekt nicht genutzt werden muss. Für Programmierer die beim alten bleiben wollen werde ich wahrscheinlich dennoch Funktionen mitgeben, die den zeitparameter haben.
Zitat von NPC Fighter
Laufen diese Befehle eigentlich sequentiell oder synchron, csg?
...
In diesem Falle wäre das theoretisch synchron.
Zitat von mq
Ist jetzt zwar etwas OT, aber wieso baust du denn überhaupt was eigenes?
...
Wie Mivey sagte, ist für Glassworld und weil ich soetwas als Übung ohnehin mal machen wollte.