ManiaScript – Wofür es da ist und wo die Grenzen liegen

Standard

von Konte

ManiaScript wurde vom Vorfeld eine große Rolle zugespielt. Ganze Modi soll man damit programmieren können, viele Anwendungszwecke sollte es haben. Obgleich das Programmieren von Modi in der Beta noch angekündigt wurde, blieb es bis jetzt aus. Die prophezeite Allmacht ManiaScripts hat sich bisher nicht bestätigt. Aber trotzdem exisitiert es schon, was kann es also?

ManiaScript hat im Moment drei Anwendungsbereiche: Manialinks, Editorplugins und das Kameraeffektskript im MediaTracker.
Fangen wir mit den Manialinks an. ManiaScript wird das Manialink-Bild nicht grundlegend verändern. Durch serverseitigen Skriptsprachen wie PHP waren Manialinks im Bezug aufs Konzept auch schon vorher keine Grenzen gesetzt: Individuelle Hintergrundbilder, Formulare mit Radio-Buttons, DropDowns usw., aufploppende Nachrichten, ganze Spiele. Was ManiaScript kann, ist solche Skripte zum Klienten zu bringen. Der Vorteil dabei: Die Seite muss nicht für jede Aktion neu geladen werden; Der Schritt zum Server und zurück wird sich erspart. Ein einfaches Beispiel sieht man schon im Hauptmenü bei ManiaHome: Normalerweise muss immer die Seite neu laden, wenn ich irgendwo draufklicke. Will ich aber einen Buddy löschen, erscheint die Bestätigung, ob ich das wirklich möchte, sofort und die Seite muss nicht erst neu geladen werden. So könnten auch Untermenüs (DropDown-Menüs) auf einen Klick direkt erscheinen, Formulare könnten direkt auf irgendwelche Einstellungen eingehen (z.B. werden diese Inhalte angezeigt, wenn ich das anklicke, jene Inhalte, wenn ich dieses anklicke). Das ging zwar schon immer, wird jetzt aber viel benutzerfreundlicher. Das war aber noch nicht alles: ManiaScript kann ja nicht nur auf Klicks des Benutzers reagieren, es kann auch einfach so Aktionen durchführen. So können sich Elemente bewegen, Aktionen stetig durchlaufen, es kann auf die Mausposition eingegangen werden und auf Tastendrucke. Die Grundlage für Minispiele wird enorm vergrößert.

Das alles ist natürlich schön und gut für Manialinks, aber mit Manialinks hat man normalerweise ja nicht viel am Hut … oder? Nicht ganz, Manialinks sind ja nicht nur im Manialink-Explorer vorzufinden. Die gesamte Benutzeroberfläche auf Servern besteht aus Manialinks. Auch dort kann ManiaScript bei Menüs, Einstellungen oder auch der Sortierung von (Strecken-, Besucher-)Listen eine Hilfe sein. Wohlgemerkt: Mit dem Server kann ManiaScript aktuell nicht kommunizieren, es hat also keine direkten Vorteile auf das Fahren, wie es z.B. Funktionen, die die aktuelle CP-Zeit o.ä. anzeigen, bieten. Mit TM2 kann man Manialinks auch als Element in den MediaTracker einbinden. Auch da findet zwar keine Kommunikation mit dem Fahren statt, aber immerhin gibt es die MT-Bedingungen (Geschwindigkeit größer/kleiner als z.B.). Das mag vielleicht eine nette Sache für Story-Tracks sein. Und das nehme ich auch schon einmal vorweg: Die Benutzeroberfläche von Editorplugins beruht natürlich auch auf Manialinks – die hingegen können aber schon mit Editoraktionen kommunizieren.

Die Editorplugins sind also die zweite Anwendung. Die Funktion ist einfach erklärt, diese Plugins können beim Bauen helfen. Die Skripte, die von Haus aus dabei sind, setzen z.B. Bäume an zufälligen Positionen, schalten je nach Blockauswahl automatisch in den Untergrund-Modus oder zeigen die zuletzt ausgewählten Blöcke. Die Funktionen von Editorplugins ähneln dabei sehr dem, was man auch sonst im Editor machen kann. Nur automatisiert. Mit gewissem Aufwand können so enorme Hilfen erstellt werden. Denkbar wäre, dass bei den GT-Blöcken automatisch der richtige ausgewählt wird (besonders bei den Kurven probiere ich zumindest immer durch :D) oder Terrain um die Strecke herum platziert wird. Wenn ihr euch jetzt im Bezug auf Manialinks fragt, „Editorplugins sind doch schon ManiaScripts, wieso jetzt noch einmal ManiaScripts im Manialink?“ Das ganze sieht so aus: In dem Editorplugin-Maniascript kann man einen Manialink erstellen, und in diesem Manialink kann man dann wieder einen ManiaScript einfügen. Die Unterschiede in der Anwendung sind, dass ML-ManiaScripts entsprechend auf Klicks und Einstellungen beim Manialink eingehen, Editorplugin-ManiaScripts nur für das Baufeld, Streckeneinstellungen und Modi (Baumodus, Terraformierungs-, Untergrund-, Testfahr- u.a) zuständig sind.

Als dritte und kleinste Anwendung gibt es den Kameraeffektskript. Dort kann man lediglich Kamerabewegungen und -Rotationen programmieren. Möglich dort ist z.B. eine radiale Bewegung um ein Objekt herum (die Kamera bewegt sich auf eine Kreisbahn um den Mittelpunkt), was vorher ja nur durch viele Steuerpunkte annäherbar war, oder irgendwelche besonders schöne Zickezacke.

Wie sieht es mit ManiaScript an sich aus? Stoßt das an irgendwelche Grenzen? Ein starkes Problem ist im Moment, dass man Manialink-Elemente nicht erstellen kann, sondern nur veändern (wo die Möglichkeiten auch nicht vollständig sind). Das soll aber noch in einem kommenden Update ausgebessert werden. Ansonsten verfügt ManiaScript über alle gängigen Programmierkonstrukte (if/else, while, for, Funktionen) und Variablentypen, ist zugleich aber natürlich auf die Anwendung im Spiel zugeschnitten. Was fehlt, ist die Möglichkeit Klassen zu erstellen. Das stört aber nicht die Möglichkeiten von ManiaScript, sondern nur seine Übersichtlichkeit und Strukturiertheit im Code.

Es wurde auch schon fleißig mit ManiaScript gearbeitet, falls ihr euch ein Bild des Ganzen machen wollt, hier ein paar Beispiele:
(Manialink) Farbauswahl- und Farbverlaufwerkzeug von Konte
(Manialink) DoodleJump von TomRiddle
(Manialink) Tetris von Marcel
(Editorplugin) Terrain-Generator von Konte
(Editorplugin) Sammlung verschiedener Scripts von KriAl057

Hier noch zwei weiterführende Verweise, wenn ihr euch weiter mit ManiaScript beschäftigen wollt:
ManiaScript-Tutorial von destroflyer – sehr ausführlich, noch in Arbeit, Deutsch
ManiaScript-Dokumentation von Konte – recht vollständig, Englisch

»

  1. ja schade, dass es das Programmieren von Modi nicht bis ins Release geschafft hat. Wär sicher eine interessante Neuerung gewesen. Ich hoffe Nadeo schiebt das bald nach.

  2. Vielen Dank! Bin echt gespannt was uns da auch in Hinblick auf die Zukunft (SM und QM) noch erwartet, wie mächtig es am Schluss hinaus doch wird.
    Werde mir auf jedenfall mal die Tutorials reinziehen, ist bestimmt spannend 🙂

  3. ich hatte mit maniascript im bezug auf den mediatracker eigentlich etwas mehr erwartet, aber naja, man kann ja nich alles haben, und ich denke da kommt noch einiges 😀 trotzdem schöner artikel, informativ und interresant 😀

  4. Ich hab‘ mir dieses Kameraeffektskript zwar noch nicht näher angeschaut, aber mich würde eine Art Tutorial für verschiedene Kamerabewegungen schon reizen. ^^

    Spitzen Artikel btw.

  5. Mir gefallen die Editor plugins. Auch wenn ich da bisher nur die autosave funktion wirklich sinnvoll ist. Mal sehen. Eventuell mach ich mir nach dem tutorial mal ne uhr 😀

  6. @Sirc: Das ist eher nicht etwas, was für ein Tutorial geeignet ist. Es stehen einem praktisch alle mathematischen Funktionen zu Verfügung (teils müsste man Funktionen selbst schreiben, ist aber kein großes Problem), da gibt es praktisch jede Variation. Was eher realistisch ist, ist, dass Leute dann einfach fertige Scripts anbieten. Es gibt ja im MT diese Parameter A, B und C (siehst du, wenn du so ein Skriptelement einfügst), die man in seinen Script auch entsprechend einbauen kann. So besteht auch die Möglichkeit, dass man ohne ManiaScript-Kenntnisse die Funktion beeinflussen kann.

    @haenry: Meinst du AutoSave oder AutoUnderground? Also, ich finde jedenfalls AutoUnderground recht praktisch 😀
    (ansonsten empfehle ich natürlich mein Skript zur Terrain-Erstellung^^)

  7. Ja genau die meine ich. AutoUnderground mag recht praktisch sein, aber ich brauche es nicht, da ich sowieso immer den hotkey benutze 😉

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s