Die meisten Unternehmen haben einen Editor oder ein variables Steuerungssystem, um Dinge in Spielen zu optimieren. Gibt es jedoch Middleware-Lösungen für dieses Problem? Ich habe in der Vergangenheit selbst zwei solcher Systeme geschrieben und mit fünf, vielleicht sechs verschiedenen Systemen gearbeitet, aber keines davon war von der Stange.
Jede dieser selbst entwickelten Lösungen hatte Probleme, angefangen von der Notwendigkeit, ständig nach Werten zu suchen, bis hin zur Unfähigkeit, den aktuellen Status der Variablen zu speichern.
Gibt es ausgereifte Config / Runtime-Variablen-Steuerungsbibliotheken / Apps?
Ich programmiere im Allgemeinen in C ++, aber ich denke, dass ein ausgereifter Editor für Einstellungen / Variablen wahrscheinlich sockelbasiert ist (und daher in gewissem Maße sprachunabhängig ist), da jede aktuelle Entwicklungshardware mit Ausnahme von Nintendo-Sachen einen Mechanismus für die Kommunikation mit Servern bietet. Die Codeimplementierung müsste auch recht einfach sein (ich mag den Artikel hot_var / TweakableConstants, der von Oskar geteilt wird, aber es ist kein Paket)
Vielleicht passt die Idee von Tweakable Constants zu Ihren Bedürfnissen. Es ist in der Tat so nützlich, dass Sie denken würden , Sie bräuchten eine komplexe Lösung, um eine effektive Steuerung der Laufzeitvariablen zu erreichen, aber in Wirklichkeit ist die Implementierung fast zu einfach. Die ursprüngliche Diskussion dieser Technik ist auch eine interessante Lektüre.
Beispiel:
Das
H
Makro erweitert sich zu so etwas wieHotValue(x, __FILE__, __LINE__, __COUNTER__)
. Dadurch wird der Wert in einer globalen Registrierung registriert. Dann haben Sie eine solche FunktionRefreshHotValues()
, die Sie in regelmäßigen Abständen aufrufen. Die Funktion sucht nach jedem Eintrag in der Registrierung, analysiert die jeweilige Quelldatei und lädt den aktuellen Wert neu.Wenn Sie den eigentlichen Quellcode ändern, bleiben Sie dort bestehen.
Offensichtlich funktioniert dies nicht, wenn
H()
nicht jeder Frame ausgewertet wird, aber es gibt Möglichkeiten, dies wie hier beschrieben zu lösen .Sie könnten diese Idee vielleicht auf eine Socket-basierte Lösung ausweiten. Das Aufrufen
HotValue()
jedes Frames kann einen erheblichen Performance-Overhead bedeuten. Da Sie das Makro jedoch sehr einfach kompilieren können, indem Sie es vollständig durch die Konstante ersetzen, ist dies kein Problem.quelle
H(int, myvar, 5)
und wenn sich die Datei ändert, ersetzen Sie diemyvar
im Speicher. Siehe mollyrocket.com/forums/viewtopic.php?p=5395#5395AntTweakBar ist wirklich nützlich für das, was Sie tun möchten. Meistens möchten Sie jedoch Methoden haben, die in der Veröffentlichung mit einigen Makros oder Ähnlichem „kompiliert“ werden.
quelle
Von einer Frage über Echtzeit - Debugging , kommt die Antwort von David McGraw über AsyncSocket für iOS - Entwickler. Weitere Informationen finden Sie in seiner Antwort.
quelle
Das Einstellungsmanagement scheint eines der Dinge zu sein, die für jedes Spiel von Grund auf überarbeitet wurden, wahrscheinlich aufgrund der relativ einfachen Bedienung und der großen Variabilität der benötigten Einstellungen. Vorausgesetzt, Sie haben ein angemessenes Speicher-Backend-Setup (SQL / was auch immer), können Sie innerhalb von ein oder zwei Tagen eine robuste Lösung für das Einstellungsmanagement programmieren, sodass für eine Middleware-Lösung anscheinend kaum echte Geschäftsanforderungen bestehen. Ich denke, es ist in den meisten Fällen der beste Weg, es auf das zu setzen, was Sie für die Speicherung von Spielerinformationen verwenden.
quelle
Ich habe in letzter Zeit tatsächlich über so etwas nachgedacht, und ich denke, es wäre ein großartiger Kandidat für eine Android-App, die mit einer kleinen Bibliothek in einer beliebigen Sprache gepaart ist . Die App besteht aus einer Reihe anpassbarer Schaltflächen, Schaltflächen, Dropdowns usw. (jedes gewünschte Widget) und sendet die Aktionen über WLAN (oder USB, wenn Sie etwas komplizieren möchten) an die Bibliothek. Die Bibliothek hätte einen separaten Thread aus dem Gameplay erzeugt und gewusst, welche Steuerelemente auf dem Android-Handy welchen Variablen im Spiel entsprechen (Sie würden sie in Ihrem Startcode festlegen) und eine Verbindung zur Android-App haben.
Dann ist das Durcheinander mit Ihrem Spiel so einfach wie das Berühren von Dingen auf Ihrem Telefon. Sie könnten sogar einige Textfelder auf dem Telefon haben, die variable Echtzeitwerte aus dem Spiel anzeigen, oder Sie könnten die Bibliothek weiterleiten
stdin
oderstderr
zu einem Bildlauf-Textbereich auf dem Telefon. Die Möglichkeiten sind grenzenlos!Das einzig wahre Problem ist die Geschwindigkeit. Wenn Geschwindigkeit und Reaktionszeit entscheidend sind, schließen Sie das Telefon einfach über USB an und ADB (Android Debugger) unterstützt die Weiterleitung von Ports über USB an das Telefon. Andernfalls würde WLAN nur eine sehr geringe Verzögerung haben, die meiner Meinung nach für diesen Zweck durchaus akzeptabel wäre.
Ich glaube nicht, dass so etwas geschrieben wurde, aber ich habe stark darüber nachgedacht, es zu schreiben. (Ich bin gerade noch nicht weit genug in die Entwicklung meiner eigenen Spiele gekommen, um sie noch zu benötigen.)
Natürlich können diejenigen von Ihnen, die Apple-Benutzer sind, wahrscheinlich dasselbe mit Ihren iDevices tun. Ich persönlich finde die iOS-Entwicklung um Größenordnungen schwieriger als die Android-Entwicklung, und natürlich könnte die oben genannte App zur einfachen Verbreitung leicht im Android-Markt veröffentlicht werden, wohingegen Apple wahrscheinlich kein Entwicklertool im App Store zulassen würde Ich denke, die Android-Plattform passt besser zu diesem Tool.
quelle