Como desarrollador de Android, ¿qué debo tener en cuenta para portar a iPhone?

9

Como desarrollador de juegos de Android, ¿qué debo tener en cuenta al desarrollar mi juego si alguna vez quisiera multiplataformar el juego para iPhone? ¿Alguna estrategia, consejo, etc. para portar a ambas plataformas móviles?

Bryan Denny
fuente
¿En qué idioma está escrita la mayor parte de su código? ¿Java? C / C ++?
Jason Kozak
Android (y mi aplicación) está escrito en Java. iPhone es Objetivo C
Bryan Denny

Respuestas:

12

Escríbelo en C / C ++ : esto es lo más importante que puedes hacer. Ambas plataformas admiten C y C ++, aunque de diferentes maneras. En Android, usarás el NDK. En el iPhone, se puede compilar junto con el código Objective-C.

Tendrá que invertir algo de tiempo construyendo el andamiaje alrededor de su código C / C ++ para cada plataforma. Deberías poder ser bastante genérico en esta área, ya que en realidad solo está conectando la funcionalidad específica del sistema operativo en tu código de juego. No escatime en esta área a menos que solo esté planeando hacer un proyecto multiplataforma o que no le importe reinventar la rueda para cada proyecto que realice.

Use OpenGL ES : ambas plataformas tienen soporte para OpenGL ES. Toma ventaja de eso. Esto minimizará la cantidad de código que necesita reescribir. Aún tendrá algunas diferencias en cada plataforma, pero en general la mayor parte de su código funcionará en ambas.

Evite las API específicas de la plataforma / lenguaje : esto debería ser obvio, pero es fácil dejarse llevar por las clases de colección de Java mientras trabaja en Java. Por supuesto, si siguió la primera regla anterior, no hará mucho en Java. Lo mismo ocurre de la manera opuesta: tan bueno como las clases de Foundation son en iOS, si desea portar a otra plataforma, evítelas.

Como puede ver, hay muchas cosas de las que preocuparse al ir multiplataforma. Si eres un pequeño desarrollador independiente, puede que ni siquiera valga la pena tu tiempo. Tendrá que evaluar si realmente quiere abrir su propio camino para poder apuntar a múltiples plataformas. Puede valer la pena aprovechar lo que cada plataforma tiene para ofrecer para tener un ciclo de desarrollo más rápido.

¡Buena suerte!

Dennis Munsie
fuente
1
¿Podría explicar qué quiere decir con andamios alrededor del código c ++. Si es posible, podría vincular un tutorial que muestre lo que implicaría, ya que realmente no entiendo a qué se refiere.
Skeith
5

Ese será un proceso en gran medida doloroso que va desde Java> Objective-C.

Impulsado por datos
Crea un juego basado principalmente en datos. Creo que esto habla por sí mismo, pero esta dirección conduce a menos trabajo que debe volver a implementar por completo.

Alto y ajustado
Mantenga las cosas muy pequeñas y modularizadas. Digo esto porque será mucho más fácil portar si puedes tomar fácilmente un componente e implementarlo, probarlo y repetirlo.

Trabajo por contrato
Juega bien tus cartas y es posible que conozcas a alguien que se encargue de esto por ti. Si eres el mejor amigo de un desarrollador de iPhone, podrías comprarle un poco de dr. pimienta para ayudar a migrar tu código.

Use un motor multiplataforma
Si ya tiene un proyecto en marcha, entonces no tiene mucho sentido. Pero si está a punto de hacer un proyecto, que sabe que se trasladará a otras plataformas, entonces puede valer la pena aprovechar la tecnología existente para ayudar a armar su mundo. Unity3D recibirá soporte de Android con Unity 3.0.

Conversión / estremecimiento / Herramienta
Y mi recomendación menos favorita es que podría usar algún tipo de herramienta de conversión para al menos convertir sus modelos de Java> C ... Pero ... No estoy de acuerdo con eso.

David McGraw
fuente
3

Si está pensando en portar al iPhone y su juego aún está en desarrollo, cambie a C ++ si aún no lo ha hecho. Hará que su código sea mucho más portátil cuando llegue el momento.

Casey Wagner
fuente
1

Voy a agregar mis dos centavos a este hilo: considera escribir tu juego en un lenguaje multiplataforma como muchos de los otros han dicho aquí ... ¡pero considera C #! Es un lenguaje poderoso que se administra y proporciona muchas características excelentes que C ++ no puede ayudar al desarrollo del juego, y existe una gran biblioteca conocida como MonoGame que es similar a XNA que se ejecuta en todo tipo de plataformas. A partir de la versión 3.0, en el momento de escribir este artículo, es posible escribir juegos completos y puertos a todas las plataformas móviles con facilidad.

Vaughan Hilts
fuente