Was sollte ich als Android-Entwickler bei der Portierung auf das iPhone beachten?

9

Was sollte ich als Android-Spieleentwickler bei der Entwicklung meines Spiels beachten, wenn ich das Spiel jemals plattformübergreifend auf das iPhone übertragen wollte? Gibt es Strategien, Tipps usw. zur Portierung auf diese beiden mobilen Plattformen?

Bryan Denny
quelle
In welcher Sprache ist der größte Teil Ihres Codes geschrieben? Java? C / C ++?
Jason Kozak
Android (und meine App) ist in Java geschrieben. iPhone ist Ziel C
Bryan Denny

Antworten:

12

Schreiben Sie es in C / C ++ - das ist das Größte, was Sie tun können. Beide Plattformen unterstützen C und C ++ auf unterschiedliche Weise. Unter Android verwenden Sie das NDK. Auf dem iPhone kann es zusammen mit dem Objective-C-Code kompiliert werden.

Sie müssen einige Zeit investieren, um das Gerüst um Ihren C / C ++ - Code für jede Plattform aufzubauen. Sie sollten in diesem Bereich ziemlich allgemein sein können, da es wirklich nur darum geht, die betriebssystemspezifische Funktionalität in Ihren Spielcode einzubinden. Sparen Sie in diesem Bereich nicht, es sei denn, Sie planen nur ein plattformübergreifendes Projekt oder es macht Ihnen nichts aus, das Rad für jedes Projekt neu zu erfinden.

Verwenden Sie OpenGL ES - beide Plattformen unterstützen OpenGL ES. Sich einen Vorteil verschaffen. Dadurch wird die Menge an Code minimiert, die Sie neu schreiben müssen. Sie werden immer noch einige Unterschiede auf jeder Plattform haben, aber insgesamt funktioniert der größte Teil Ihres Codes auf beiden.

Vermeiden Sie plattform- / sprachspezifische APIs - dies sollte selbstverständlich sein, aber es ist einfach, die Java-Auflistungsklassen zu verwenden, während Sie in Java arbeiten. Wenn Sie die erste Regel oben befolgt haben, werden Sie in Java natürlich nicht viel tun. Gleiches gilt für den umgekehrten Weg: So schön die Foundation-Klassen in iOS sind, wenn Sie auf eine andere Plattform portieren möchten, vermeiden Sie sie.

Wie Sie sehen, gibt es viele Dinge, über die Sie sich Sorgen machen müssen, wenn Sie plattformübergreifend arbeiten. Wenn Sie ein kleiner Indie-Entwickler sind, ist es möglicherweise nicht einmal Ihre Zeit wert. Sie müssen bewerten, ob Sie wirklich Ihren eigenen Weg bahnen möchten, damit Sie auf mehrere Plattformen zielen können. Es kann sich lohnen, das Angebot jeder Plattform zu nutzen, um einen schnelleren Entwicklungszyklus zu erreichen.

Viel Glück!

Dennis Munsie
quelle
1
Könnten Sie näher erläutern, was Sie unter Gerüsten um den C ++ - Code verstehen? Wenn möglich, könnten Sie ein Tutorial verlinken, das zeigt, was es bedeuten würde, da ich nicht wirklich verstehe, worauf Sie hinaus wollen.
Skeith
5

Dies wird ein weitgehend schmerzhafter Prozess sein, der von Java> Objective-C ausgeht.

Datengesteuert
Erstellen Sie ein Spiel, das weitgehend datengesteuert ist. Ich denke, das spricht für sich selbst, aber diese Richtung führt zu weniger Arbeit, die Sie komplett neu implementieren müssen.

Hoch und fest
Halten Sie die Dinge sehr klein und modularisiert. Ich sage dies, weil es viel einfacher zu portieren ist, wenn Sie eine Komponente einfach nehmen und nur implementieren, testen und wiederholen können.

Vertragsarbeit
Spielen Sie Ihre Karten richtig und Sie kennen vielleicht jemanden, der sich für Sie darum kümmert. Wenn Sie mit einem iPhone-Entwickler am besten befreundet sind, können Sie ihm / ihr möglicherweise Dr. Pfeffer, um Ihren Code zu migrieren.

Verwenden einer Multi-Platform-Engine
Wenn Sie bereits ein Projekt in Bewegung haben, ist dies nicht sehr sinnvoll. Wenn Sie jedoch ein Projekt durchführen möchten, von dem Sie absolut wissen, dass es auf andere Plattformen portiert wird, kann es sich lohnen, die vorhandene Technologie zu nutzen, um Ihre Welt zusammenzustellen. Unity3D wird mit Unity 3.0 Android-Unterstützung erhalten.

Konvertierung / Schauder / Tool
Und meine am wenigsten bevorzugte Empfehlung ist, dass Sie eine Art Konvertierungstool verwenden könnten, um zumindest Ihre Modelle von Java> C zu konvertieren ... Aber ... das unterstütze ich nicht.

David McGraw
quelle
3

Wenn Sie über eine Portierung auf das iPhone nachdenken und Ihr Spiel noch in der Entwicklung ist, wechseln Sie zu C ++, falls Sie dies noch nicht getan haben. Dadurch wird Ihr Code zu gegebener Zeit erheblich portabler.

Casey Wagner
quelle
1

Ich werde meine zwei Cent zu diesem Thread hinzufügen - schreiben Sie Ihr Spiel in einer plattformübergreifenden Sprache, wie viele der anderen hier gesagt haben ... aber denken Sie an C #! Es ist eine leistungsstarke Sprache, die verwaltet wird und viele großartige Funktionen bietet, die C ++ bei der Spieleentwicklung nicht unterstützen kann - und für die es eine großartige Bibliothek namens MonoGame gibt, die XNA ähnelt und auf allen Arten von Plattformen ausgeführt wird. Ab Version 3.0 ist es zum Zeitpunkt des Schreibens möglich, problemlos vollwertige Spiele zu schreiben und auf alle mobilen Plattformen zu portieren.

Vaughan Hilts
quelle