Wie oben wirklich
Ich schreibe in meiner Freizeit ein Android-basiertes Spiel (Android, weil es kostenlos ist und ich keine wirklichen Ambitionen habe, irgendetwas Kommerzielles zu machen).
Die Spielelogik basiert auf einem sehr typischen komponentenbasierten Modell, bei dem Entitäten existieren und mit Komponenten verbunden sind und Nachrichten hin und her gesendet werden, um die Dinge geschehen zu lassen.
Offensichtlich ist die Ebene für die tatsächliche Ausführung dünn, und wenn ich eine iPhone-Version dieser App schreiben würde, müsste ich den Renderer und den Kerntreiber (dieses komponentenbasierten Systems) in Objective C neu schreiben.
Bei den Entitäten handelt es sich lediglich um Einfachdateien, die die Namen der hinzuzufügenden Komponenten festlegen, und die Komponenten selbst sind einfache Einzelzweckobjekte, die die Logik für die Entität enthalten.
Wenn ich nun die gesamte Logik für diese Komponenten in Java schreibe, müsste ich sie in Objective C neu schreiben, wenn ich mich für einen iPhone-Port entscheide. Da der Großteil der Anwendungslogik in diesen Komponenten enthalten ist, würden sie in einer idealen Welt in einer plattformunabhängigen Sprache / Skript / DSL geschrieben, die dann einfach auf einer beliebigen Plattform in die App geladen werden könnte.
Ich bin jedoch zu der Überzeugung gelangt, dass dies keine ideale Welt ist und dass die Lua-Leistung usw. auf Mobilgeräten immer noch nicht auf dem neuesten Stand ist, dass der Overhead zu hoch ist und dass ich später auf Probleme stoßen würde, wenn ich dies tun würde ist diesen Weg gegangen?
Ist das tatsächlich der Fall? Natürlich ist dies nur eine hypothetische Frage. Ich schreibe sie gerne alle in Java, da es einfach und unkompliziert ist, die Dinge in Gang zu bringen, aber ich sage, dass ich es wirklich genieße, dieses Spiel zu machen (unwahrscheinlich, angesichts dessen, wie sehr ich es derzeit nicht mag, etwas zu tun zu haben) mit all den verschiedenen mobilen Geräten) und ich wollte ein kommerziell brauchbares Spiel machen - würde ich Lua verwenden oder würde ich einfach den Hit beim Portieren nehmen und einfach den gesamten Code neu schreiben?
Die C-Implementierung von Lua wurde speziell für die Ausführung auf eingebetteten Geräten entwickelt. Es ist klein und schnell (für eine Skriptsprache). Ich hätte gedacht, dass es zumindest für leichte Aufgaben in Ordnung ist.
quelle
Sicher. Es ist sehr unwahrscheinlich, dass die Skriptlogik Ihr Engpass ist (Sie werden sich tatsächlich mit Shark oder Instruments profilieren, oder?). Ich habe an der iPhone-Version von Marooned gearbeitet, die viel Lua für die Spielelogik verwendete. Ich habe viel Performance-Tuning gemacht und im Grunde war Lua 0%.
(Lua war eine Grauzone, als wir Marooned herausbrachten, aber seitdem ist es offiziell für die iOS-Entwicklung gesegnet.)
quelle
Unter http://code.google.com/p/android-scripting/ finden Sie die empfohlene Methode zum Erstellen von Skripten unter Android. Lua passt immer noch nicht sehr gut auf die Android-Plattform, da sie C benötigt. Natürlich könnte man das NDK verwenden, aber das ist kein Wundermittel.
quelle
Es hängt ein wenig davon ab, wie viel Ihrer Spielelogik in Skripten eingebettet ist. Im Allgemeinen wird LUA als hochgradiger Klebstoff verwendet, aber ein Großteil der Grunzarbeit erfolgt über C (++). Ja, LUA ist in Bezug auf Skriptsprachen schnell - Sie sehen immer noch eine Verlangsamung im Vergleich zu Muttersprachen, die etwa 30- bis 50-mal auftritt. Es kommt also wirklich darauf an, wie viel in LUA passiert.
quelle
Sie können Ihr gesamtes Spiel in Lua schreiben und Java / ObjectiveC / C / C ++ vollständig vermeiden.
Verwenden Sie für die plattformübergreifende Entwicklung Corona . Die Nutzung ist kostenlos, bis Sie den Versand an den App Store oder den Android Marketplace planen.
Wenn Sie das iPhone / Pad / Touch anvisieren möchten, schauen Sie sich Wachs an .
Nur als Randnotiz @Sean Edwards: Ich war an der Auslieferung von fünf Titeln für Nintendo DS, Wii, Sony PSP und Xbox360 beteiligt, die alle dieselbe Engine verwendeten und in Lua geschrieben wurden. Es ist weit verbreitet auf Konsolen und Handys.
quelle