Auf dieser Seite sammle ich mögliche Lua-Skripte, Gameplay-Funktionen und Ideen für Visionaire Studio (und denke vielleicht ein wenig darüber nach).


Charakter

Kollisionserkennung

Ich überlege, ob es sehr schwierig wäre, Charakteren eine einfache Kollisionserkennung zu geben. Wenn ich um einen Charakter eine Grenze oder ein nicht begehbares Objekt lege und dieses Polygon mit dem Charakter mitbewege, müsste der aktuelle Charakter dann um den anderen herumlaufen?

Schon die frühen Spiele von Revolution Software Anfang der 90er, etwa „Lure of the Temptress“, „Beneath a Steel Sky“ und „Broken Sword“, hatten eine Art Kollisionserkennung. In Lure of the Temptress zum Beispiel blieben Spielfigur und NPC stehen, wenn sie zusammenstießen, grüßten sich oder einer trat zur Seite oder lief um den anderen herum. Das gehört natürlich auch zum Thema einfache KI weiter unten. In Divos Drag-and-Drop-Skript bewegt sich das Polygon eines Objekts mit, während man dessen Animation über den Bildschirm zieht. Deshalb frage ich mich, ob sich bei Charakteren etwas Ähnliches machen ließe ...


Einfache KI

Eine einfache KI für NPCs lässt sich schon heute mit Bedingungen, Werten und If-Abfragen umsetzen, etwa wenn ein NPC gerade mit einem anderen spricht oder etwas auf dem Bildschirm tut und du warten musst, bis die Aktion oder Animation fertig ist, bevor Dialog oder Interaktion beginnen. Ich denke aber eher daran, dass NPCs zufällig eines von mehreren Zielen wählen, dort eine Aktion oder Animation ausführen, eine Weile warten und dann ein neues Ziel wählen. Das wirkt natürlicher und lebendiger als NPCs, die starr in der Szene verteilt stehen. Dafür könnte Divos Skript für zufälliges Fliegen nützlich sein: Darin wählt ein Papagei zufällig ein Ziel aus einer Liste, spielt eine Startanimation, dann eine Fluganimation und am Ziel eine Lande- und Sitzanimation, wartet eine zufällige Zeit und fliegt dann zum nächsten Ziel.


Drehen von Charakteren

Ich glaube, mit etwas Lua und gezielter Steuerung der Frames ließe sich eine Drehung von Charakteren einbauen. Ob eine flüssige Drehung möglich ist, während der Charakter läuft, weiß ich nicht, vor dem Loslaufen ginge es aber recht leicht. Meine Theorie für eine flüssige Drehung, wenn ein laufender Charakter stark die Richtung ändert: den aktuellen Frame der Laufanimation speichern, das Tempo auf etwa ein Drittel oder ein Viertel senken und für jede Richtung den Frame festlegen, damit die Animation während der Drehung nicht neu startet.


Animation zum Loslaufen und Anhalten

Ich glaube, man könnte den Laufzyklus steuern, indem man den ersten und letzten Frame festlegt und beim Anhalten abfragt, bei welchem Frame der Charakter steht, um dann je nach Standbein schnell eine passende Animation ab einer bestimmten Stelle zu spielen. Ebenso ließe sich das Laufen Schritt für Schritt steuern: Man kontrolliert, welche Frames laufen und ob der Charakter bei einem bestimmten Frame noch läuft; wenn ja, folgt die Animation für das nächste Bein, und so weiter.


Umgebung

Menschenmengen

Mir fällt bei Point-and-Click-Spielen auf, dass die meisten nur eine Handvoll Charaktere haben, die meist starr dastehen und fast alle ansprechbar sind, weil sie irgendwie zur Handlung gehören. Nimm Broken Sword 5 (keine Ahnung, was die sich dabei gedacht haben): wenige Szenen, kaum Hintergrundanimationen und in den Außenszenen fast kein Fußgänger- oder Autoverkehr. Das Spiel wirkte dadurch flach und leblos. Open-World-Spiele wie die Reihen GTA oder Assassin's Creed erschaffen dagegen eine lebendige Welt, in die man eintauchen kann, weil man mit fast allen Menschen irgendwie interagieren kann: In GTA kann man Leute ansprechen, schubsen und angreifen, in Assassin's Creed kann man sie beiseiteschieben, bestehlen, anrempeln und ihnen dabei etwas aus der Hand stoßen. Adventures müssen nicht so detailreich sein, aber sie wären interessanter, wenn in manchen Szenen mehr nicht ansprechbare NPCs herumliefen und alltägliche Dinge täten. Wenn ich mich richtig erinnere, hatte Revolution Softwares erstes Spiel „Lure of the Temptress“ das bis zu einem gewissen Grad, mit Charakteren, die zufällig umherliefen (siehe oben bei der Kollisionserkennung).