Aufzeichnen / Wiedergeben

Top  Previous  Next

Diesen Monat habe ich mich für ein System zur Aufnahme / Wiedergabe entschieden, welches die Bewegungen von bis zu 50 Entities bewältigen kann.

 

Starten Sie die Demo und drücken Sie die “R” Taste, um die Aufnahem zu starten; Sie werden einen blinkenden roten Punkt in der Ecke des Bildschirms sehen. Bewegen Sie die Kamera so lange Sie wollen (vielleicht auch gar nicht) und drücken Sie dann erneut auf “R”, um die Aufnahme zu stoppen. Drücken Sie dann “P”, um die Wiedergabe zu starten; nun sehen Sie einen blinkenden grünen Punkt.

 

Mit dem Mauszeiger und dem Panel in der oberen rechten Ecke, können Sie nun pausieren, abspielen, vorspulen, rückwärts laufen lassen und zurückspulen. Sie können sich immer noch vor und zurück bewegen, wenn die Action pausiert ist, um (zum Beispiel) das sagenhafte Tor, das Sie geschossen haben, problemlos bewundern zu können.

 

Die aufgezeichneten Daten werden im Array recorded_position[70000][50] gespeichert; dieses sichert die Werte x, y, z, pan, tilt, roll und Frame für bis zu 10000 Frames (10000 x 7 = 70000) und bis zu 50 Entities. Natürlich können Sie die Größe des Arrays erhöhen, wenn Sie mehr Frames und / oder mehr Entities berücksichtigen wollen; dazu müssen Sie nur den Code an einigen Stellen anpassen. Und wo wir schon mal sabei sind, der Aufnahmeprozess wird automatisch gestoppt, wenn das Array gefüllt wurde.

 

Die Daten werden in den Dateien 1.txt bis 50.txt gespeichert, wobei natürlich weniger Datein erzeugt werden, wenn weniger als 50 Entities vorhanden sind. Die Datei hat eine Größe von etwa 150 KB pro Minute und Entitz; wenn Sie finden, dass dies zuviel ist, können Sie die Daten vor der Speicherung komprimieren oder das Spiel bei geringerer Framerate laufen lassen. In meinem Spiel habe ich eine feste Framerate von 70 fps, ebenso wie in der Demo. Sollte dies zuviel sein, können Sie auch eine geringere Rate verwenden (nutzen Sie etwas wie total_frames % 2, um mit 35 fps aufzunehmen oder verringern Sie fps_max).

 

Die gespeicherten Dateien werden beim Verlassen des Programmes gelöscht; wenn Sie eine bestimmte Codezeile auskommentieren (in der recreplay.c Datei), können Sie diese auch behalten. Das System wurde im Hinblick darauf erstellt, die Daten auch nach einem Neustart der Engine nutzen zu können. Wenn Sie das nicht wollen oder brauchen, können Sie den Code umgehen, der die Daten in Dateien schreibt und daraus liest und einfach das Array allein nutzen.

 

Die Demo kommt mit zwei verschiedenen Beispielen (Spieler / Kamera und Fahrzeug), die dabei helfen sollen, das System in Ihr Spiel zu integrieren. Meine Demo erlaubt es, den Spieler zu bewegen und seine Bewegungen sowie die von 5 verschiedenen, sich zufällig bewegenden Fahrzeugen zu speichern.

 

DerCode ist gut kommentiert, Sie sollten also keine Probleme haben.

 

aum70_recreplay