Características del lanzamiento del juego Unreal Engine 4 para iOS

Saludos.

En este artículo enumeraré las dificultades y los momentos no obvios que encontré personalmente al lanzar el juego en iOS, así como sus soluciones.

El juego comenzó a crearse en Unreal Engine 4.18, ahora la última compilación en la tienda usa UE 4.24. Al principio, el juego se lanzó en Android, después de que comencé a lanzarlo en iOS.

imagen

Quién puede estar interesado en el artículo:

  • Desarrolladores de juegos UE 4 que deciden poner su trabajo en la App Store.
  • Desarrolladores de aplicaciones iOS (algunas partes del artículo solo hablan sobre el ecosistema de Apple sin estar vinculados a UE 4).


Descargo de responsabilidad:
  • .
  • — , , .
  • - .
  • - , .


Revelación
51 , iOS, «The status of your app, Sokopango, is now „Ready for Sale“.». 40 .


1. Primeros pasos en App Store Connect


1.1 Verificación del programa ID de Apple


Después de pagar la membresía (registrarse / unirse al Programa de Desarrolladores de Apple) con una tarjeta virtual (esta es la que, al pagar a través de Internet, necesito indicar "TARJETA DIGITAL" en lugar de mi nombre; esto es en mi banco, puede tener un titular de tarjeta diferente), fue necesario confirmar la identidad, porque La información de mi cuenta no coincide con los datos del titular de la tarjeta.
Aquí está parte del texto de la carta de la persona que verifica mi registro:
...
Para continuar con su inscripción en el Programa de Desarrolladores de Apple, debemos verificar la identidad del desarrollador que utilizará la cuenta.

Cargue una copia de la identificación con foto del desarrollador. La identificación debe cumplir con los requisitos de verificación para su región:

  • Pasaporte emitido por el gobierno
  • Válido (no caducado)
  • Incluye el nombre en caracteres romanos *

* Si la identificación no incluye un nombre romanizado, también debe cargar una traducción al inglés certificada por un abogado.
...

Tuve la suerte de tener un pasaporte válido. Lo escaneé y lo envié en respuesta a la carta. Ese día me uní al Programa de Desarrolladores de Apple.

Por lo tanto, si paga una tarifa desde una tarjeta cuya información del titular es diferente de su nombre, esté preparado para confirmar la identidad del desarrollador.

1.2 Confirmación de pago


Si la aplicación será rentable (se paga o hay compras integradas), debe especificar los datos de pago en su perfil.

Nosotros vamos:

  • App Store Connect .
  • Acuerdos, impuestos y banca .
  • Vamos a las "Aplicaciones pagas".
  • Completamos los datos necesarios. Esta será la información de contacto, el formulario de impuestos y la indicación de la cuenta bancaria en moneda. En el formulario de impuestos en "Tipo de propietario beneficiario" indiqué "Propietario individual / único", por lo tanto, siempre indiqué mis datos personales (nombre y número de teléfono), también indiqué la cuenta en moneda extranjera que abrí en la cuenta personal del banco en un minuto.
  • Enviamos para la verificación, esperamos la confirmación y el preciado estado de "Activo".

También puede leer sobre esto en Workflow para configurar compras en la aplicación .

1.3 Video para previsualizar la aplicación


En la configuración de la página de la aplicación, además de las capturas de pantalla, puede descargar más videos. Simplemente se inserta un enlace a un video de YouTube en Google Play. En la App Store, cita diferente:
Para descargar videos para obtener una vista previa de una aplicación, debe usar Safari y OS X versión 10.10 y posteriores.
Al final resultó que, las imágenes se pueden descargar desde cualquier navegador en cualquier sistema operativo, y el video solo desde Safari, que solo está disponible en MacOS.

Ya tenía un video terminado, pero no se ajustaba al tamaño de los lados.

Breve especificación en el video (textos de error en App Store Connect cuando el video no se pudo cargar):
  • Pantalla de iPhone de 6.5 pulgadas: "Las dimensiones de la vista previa de la aplicación deben ser: 1920x886, 886x1920".
  • iPhone 5,5‑ — «App preview dimensions should be: 1920x1080, 1080x1920.».
  • iPad Pro (3- ) 12,9- — «App preview dimensions should be: 1600x1200, 1200x1600.».
  • iPad Pro (2- ) 12,9‑ — «App preview dimensions should be: 1200x900, 900x1200, 1600x1200, 1200x1600.».
Aquí puede ver la especificación para la vista previa de video de la aplicación.

La especificación enumera muchos más permisos para diferentes dispositivos. Para mi página había 4 videos con permisos de la lista anterior.

No quería hacer un nuevo video, tuve que editar el existente. Para cambiar la resolución, encontré en Internet el primer sitio que tuve para cambiar el tamaño de un video. La resolución cambió agregando barras negras a la imagen. Para mí fue aceptable.

Además, mi video duró más de 30 segundos (este es el máximo para la vista previa), así que tuve que cortarlo un poco.

También lo convirtió en el primer editor en línea que apareció.

1.4 Otro


  • Sorprendido de que no hay una categoría de juegos Arcade.
  • No puede establecer un precio arbitrario en las compras, a diferencia de Google Play.

2. Montaje del proyecto.


2.1 Configuración del proyecto


Toda la información está en la documentación . Miré las configuraciones por separado (las carpetas " Build " y " Config ", y los " ProjectName.Target.cs ", " ProjectName.Build.cs ") en los proyectos de plantilla ActionRPG y UnrealMatch3 . Tomé mucho de allí.

Asegúrese de tener al menos 1 certificado, perfil e identificador (ID de aplicación / ID de paquete) para armar y colocar la aplicación en la App Store.

Tuve / tengo:

  • 2 certificados: para la tienda (escriba "Distribución de iOS": el conjunto con este certificado se cargará en App Store Connect) y para pruebas (escriba "Desarrollo de iOS", cuando la aplicación se cargue directamente en el iPhone a través de USB).
  • 1 identificador
  • 2 ( ) — . UDID iTunes.
  • 2 — ( , ).

2.2 MacOS


Gracias a la política de Apple, necesita MacOS para construir un proyecto para iOS. Tengo Windows, la compilación cruzada, como para construir bajo Linux, no se puede hacer.

Ha habido intentos inútiles de instalar / ejecutar una imagen virtual de MacOS en mi AMD Phenom.
Tuve que parar en una máquina virtual de alquiler. Busqué y encontré este servicio .

El registro y el pago se combinan, es decir no puede simplemente registrarse, tiene que pagar de inmediato (lo vi por primera vez). Compré la tarifa macOS Mojave Cloud Basic por $ 34.99 por mes. Inmediatamente después del registro / pago recibí una carta con instrucciones y acceso.

Para acceder al servidor remoto, deberá instalar NoMachine Enterprise Client.
Entré, actualicé el sistema operativo (no era la última versión) e instalé Xcode.

2.3 compilación remota


VPS alquilado, configurar el proyecto, conjunto de Xcode: es hora de construir el proyecto.

Pero primero debe configurar la compilación remota, lea la documentación .

También debe deshabilitar temporalmente el cliente SSH existente, de lo contrario habrá un error relacionado con rsync durante la compilación remota (no recuerdo el texto del error).

Tengo Windows 10, acabo de cambiar el nombre de la carpeta " C: \ Windows \ System32 \ OpenSSH ".
Después de eso, en la terminal, puede ejecutar el comando " where ssh.exe " para verificar que el sistema operativo no tenga clientes SSH disponibles. Mi respuesta es "INFORMACIÓN: no puedo encontrar los archivos de acuerdo con las plantillas dadas".

Ayudado a publicar .

En mi VPS, SSH no necesitaba ser configurado, todo salió de la caja.

No recuerdo por qué lo guardé para, un artículo sobre la configuración de una compilación de proyecto remoto; de repente, resulta útil.

2.4 Un poco sobre el montaje del proyecto


Mi montaje toma un promedio de 20 a 50 minutos. 20 minutos cuando el contenido no cambió, pero podría arreglar algo en las configuraciones.

Pero si hubo una actualización del motor, o algo ha cambiado seriamente en el contenido, el ensamblaje puede aumentar. Aumentó en promedio hasta 50 minutos.

Al compilar de forma remota en VPS, se copia el código fuente del motor, el proyecto, los archivos temporales, etc. Todo esto se encuentra en " [Inicio] / UE4 / ".

Dependiendo de la configuración del proyecto, el archivo IPA resultante puede tener un tamaño diferente.
El tamaño del archivo recibido solo se ve afectado por la opción "Configuración de compilación" (Configuración del proyecto - Proyecto - Empaquetado) - Desarrollo o Envío.

El indicador "Para distribución", así como el certificado y el perfil seleccionados, no afectan el tamaño.

Lo único con el conjunto de indicadores "Para distribución" es el certificado de distribución y el perfil debe seleccionarse, de lo contrario el proyecto no se ensamblará.

Además, con el indicador "Para distribución" establecido, el prefijo "Distro_" se agrega al archivo y el sufijo "-IOS-Shipping" se agrega durante el ensamblaje de envío.

Por ejemplo, las dimensiones de mis ensamblajes:

  • Desarrollo-construcción - 186 Mb.
  • Envío-montaje - 491 Mb.

Ambos archivos se pueden cargar al teléfono a través de USB para realizar pruebas.

En cuanto al gran archivo obtenido durante el ensamblaje de envío, según tengo entendido, contiene recursos para diferentes dispositivos.

Aquí está la información que se muestra en este archivo en App Store Connect:

imagen

2.5 Errores de montaje y soluciones


2.5.1 Problema con perfiles


Error:
Disposición no encontrada. Se requiere una disposición para implementar su aplicación en el dispositivo.
Clave de firma no encontrada. La aplicación no se pudo firmar digitalmente porque la clave de firma no está configurada.
...
Solución: elimine los perfiles del directorio " C: \ Users \ [UserName] \ AppData \ Local \ Apple Computer \ MobileDevice \ Provisioning Profiles " y vuelva a importarlos en el proyecto.

Es posible que se hayan producido errores debido al hecho de que importé perfiles y certificados tanto en la configuración del editor como a través de IPhonePackager.

Como resultado, hubo varios, aunque debería haber habido 2 piezas.

2.5.2 Problema con Xcode


Error:
SDK inválido MacOSX.sdk, no encontrado en /Library/Developer/CommandLineTools/Platforms/MacOSX.platform/Developer/SDKs
SDK inválido iPhoneOS.sdk, no encontrado en / Library / Developer / CommandLineTools / Platforms / iPhoneOSplatform

Solución: en el terminal, ejecute el comando " sudo xcode-select -r ".

2.5.3. Errores varios relacionados con rsync


Errores:
  • algunos archivos / attrs no se transfirieron (ver errores anteriores) (código 23) en /home/lapo/packaging/rsync-3.0.4-1/src/rsync-3.0.4/main.c
  • error de rsync: error en el código IPC (código 14)
  • otro
Solución: reinicie el ensamblaje. A veces tengo que reiniciarlo 2-3 veces para poner en marcha el proyecto. Además, el ensamblaje se puede interrumpir tanto al principio como cerca del final.

2.5.4. Desarrollo de falla de construcción


Error:
Provisioning profile «Development» doesn't match the entitlements file's value for the get-task-allow entitlement
Code signing is required for product type 'Application' in SDK 'iOS 12.2'

Solución: esta publicación ayudó .
En la lista de identificadores, fui al correcto, configuré el indicador en iCloud y lo guardé.
Hubo un mensaje de que los perfiles se volverían inválidos, y sucedió.
Un intento de compilación (para verificación) es un error. Debería ser así.
Nuevamente fui a mi identificador, ahora eliminé la bandera en iCloud, la guardé.
La asamblea fue exitosa.

Luego tuve que eliminar perfiles no válidos del proyecto y crear nuevos. O puede intentar iniciar sesión en el perfil del sitio, guardarlo localmente y volver a cargarlo en el proyecto.

2.5.5 Problemas de certificado


Error:
La clave no se puede usar en el estado especificado

Eliminé los certificados de la configuración del proyecto, intenté agregarlos nuevamente, cuando agregarlos requirió una contraseña ingresada. Nuevamente la asamblea con un error, no recuerdo cuál.

Solución: eliminación de certificados (del almacén de certificados, ver sección 2.6.a ) y perfiles (del catálogo, ver sección 2.5.1 ), regeneración (si es necesario), importación al proyecto.

Lo que hice: en lugar de importar certificados y perfiles existentes, regenere todo y luego lo agregué al proyecto. Al agregar certificados, ya no se requería una contraseña, pero se requería especificar el archivo " * KeyPair.key ".
Después de eso, el proyecto fue ensamblado con éxito.

2.6 Un poco sobre certificados


  1. . IE, , . " MMC".
  2. 2 , 2-3 , «Maximum number of certificates generated». , , .

3


3.1


Para realizar una prueba en el teléfono al instalar la aplicación a través de USB, debe usar el certificado de desarrollo y el perfil de desarrollo con el UDID del dispositivo especificado.
En consecuencia, el proyecto debe ensamblarse con este certificado y perfil. Como escribí anteriormente, no importa qué opción esté seleccionada en "Configuración de compilación" - Desarrollo o Envío, pero la marca "Para distribución" debe estar desmarcada.

3.2 IPhonePackager


La aplicación se instala a través del programa IPhonePackager (ruta " [EnginePath] \ Engine \ Binaries \ DotNET \ IOS \ IPhonePackager.exe ").
Al inicio, se abrirá un cuadro de diálogo para seleccionar un proyecto, debe cerrarse. En el programa que se abre, vaya a la pestaña Herramientas avanzadas - haga clic en el botón Instalar IPA en el hardware ... - seleccione un archivo ipa - espere una instalación exitosa.
Mi instalación en el teléfono tarda de 20 a 80 segundos (dependiendo del tamaño del archivo y la fase lunar).

Periódicamente no pude instalar la aplicación a través de IPhonePackager (era real antes de la transición a UE 4.24).

Error (antes de UE 4.24): " Error de instalación / actualización de" FileName.ipa "con error de extracción de paquete en ..."

La peculiaridad del error es que el envío del archivo se cuelga (se envía en partes) o se copia muy rápidamente en el teléfono (por ejemplo, medio gigabyte por segundo).

Solución (no siempre funcionó): vuelva a conectar el cable al teléfono, pegue otro cable o reinicie el teléfono. Pero a veces nada de esto ayudó (aunque iTunes vio el teléfono), así que tuve que posponer las pruebas.

3.3 TestFlight


También puede probar la aplicación a través de TestFlight. Prueba cerrada, por invitación.

En App Store Connect bajo TestFlight:

  • en la subsección "App Store Connect Users", agréguese.
  • en la subsección "Probadores y grupos", agregue un grupo de probadores, luego agregue el correo electrónico de los usuarios que probarán la aplicación. Recibirán cartas de invitación y un código que les permitirá conectarse al programa de prueba para instalar la aplicación bajo prueba.

El grupo de probadores creado tiene 2 secciones: Probadores y ensamblajes :
  • en los " probadores " se encuentran las direcciones de correo de los usuarios que se conectarán a las pruebas, así como un enlace a la aplicación mediante el cual estos usuarios pueden instalar la aplicación.
  • en " ensamblajes " hay ensamblajes disponibles para pruebas, aquellos que se especificarán manualmente.

También deberá instalar la aplicación TestFlight en su teléfono .

El desarrollador, administrador o titular de la cuenta no necesitará ingresar un código. La última versión descargada de la aplicación estará disponible casi inmediatamente después de descargarla en App Store Connect.

Pero todos los demás deben ser invitados (se enviará un código de activación), y la versión que se indicará en el grupo de prueba estará disponible para ellos.

4 Descarga en App Store Connect


Si está instalada la versión 4.24 de UE (se requiere Xcode 11) y superior, se requerirá que Transporter descargue la aplicación en App Store Connect .

Si está instalada la versión 4.23 de UE (se requiere Xcode 10) y a continuación, se usa el Cargador de aplicaciones:
imagen

en Transporter, las credenciales de ID de Apple se usan para iniciar sesión, y en el Cargador de aplicaciones solo es necesario iniciar sesión, y la contraseña tendrá que ser generada, puede leer sobre esto en página oficial Uso de contraseñas específicas de la aplicación .

Como tengo Windows, necesito transferir archivos ipa a VPS. Estoy usando el servicio de envío de Firefox . Es conveniente para mí porque no necesita iniciar sesión: abrió un sitio web, cargó un archivo, recibió un enlace, descargó un archivo en una máquina virtual.

5 compras en el juego


5.1 Configuración en App Store Connect


Antes de enviar la solicitud de verificación, inmediatamente creé compras en el juego. Resultó que se verifican / aprueban junto con la solicitud.
Para compras aprobadas, es recomendable adjuntar una captura de pantalla de la ventana de
compra (para cada compra), donde estará visible el botón para realizar una compra. Tenía 1 captura de pantalla para todas las compras. La captura de pantalla en sí fue tomada del editor (no del juego) y corregida.

Porque la captura de pantalla debe ser de cierto tamaño (640x920 píxeles), tuve que presionar partes de la imagen entre sí. Por lo tanto, la apariencia de la ventana de compras en la captura de pantalla y en el juego es diferente.

imagen

Los botones para compras deben estar visibles, incluso si no sucede nada cuando hace clic en ellos.

Al principio escondí los botones de compra, los mostré solo después de recibir información sobre ellos (precio, nombre, moneda, etc.), no es necesario hacer esto. Debido a esto, mi solicitud y mis compras no pasaron la verificación.

5.2 Opción "bUseStoreV2" en el archivo de configuración y método "RestoreInAppPurchase"


De forma predeterminada, la opción " bUseStoreV2 = true " está habilitada para el proyecto , consulte " [EngineFolder] /Config/IOS/IOSEngine.ini ". Las compras en el juego no funcionaron con ella. Y este problema no fue solo para mí, según la cantidad de publicaciones en el foro y AnswerHub.

Solución: Registré la línea " bUseStoreV2 = false " en el archivo " [UnrealProject] /Config/IOS/IOSEngine.ini ". Si no hay un archivo, lo creamos: buscamos ejemplos de proyectos o buscamos en Internet.

Por supuesto, con cada compra tendrá que ingresar su nombre de usuario / contraseña de ID de Apple, pero para mí es mejor que nada, y no hubo tiempo para entenderlo.

La recuperación de datos de compra aún no funcionaba para mí (método " RestoreInAppPurchase"), y lo más importante, los precios de las compras no se mostraban (el" método ReadInAppPurchaseInformation ), aunque todo funcionaba bien en Android. Después de un tiempo, eliminé el uso de " RestoreInAppPurchase " (tenía un anuncio, que se podía desactivar, pero luego eliminé el anuncio, y en consecuencia esta compra, y no había necesidad de restaurar los datos de las compras compradas), y, milagrosamente, después de eso cargando precios en el juego.

6 Revisión / Verificación


Como era la primera vez conmigo.
15.06 — 1- , 14 . . , ( ). , , .

18.06 — 2- , 2- . , , . , , , .

21.06 — 3- . 9 , , .

30.06 — 4- , 9 . , 2.3.1 ( - ). , — . ( . 5.1), . . — , ( ). , . — , . , -, (. . 5.1). ( , , , ). , .

, , — , , . . , , , .

17.07 — 5- , 7 . , 2.3.1. . , , . . , , .

26.07 — 6- , 18 , 18 .

Conclusiones (subjetivamente):

  • en Google Play, fue fácil para mí verificar la aprobación de la aplicación en la tienda, aquí todos mirarán bajo una lupa. Tal vez hay bots, gente aquí. ¿Que es mejor? Yo no sé.
  • Las respuestas basadas en los resultados de la verificación en su mayor parte no contienen ninguna información sobre lo que debe corregirse.
  • momentos no obvios: las compras fueron rechazadas, y descubrí que solo cuando decidí ir a la página con su configuración, no había mensajes.
  • Para acelerar el lanzamiento de la verificación, garabatee en todas las instancias de Apple: escriba mensajes en el centro de soluciones, presente una apelación (desde el centro de soluciones), haga preguntas al equipo de verificación.

7 Resumen del artículo


Mi lista de verificación, que compilé para mí (un análogo aproximado de la página oficial ), para lanzar la aplicación en iOS:

  1. regístrese y pague por participar en el programa para desarrolladores .
  2. Si tiene Windows, puede usar VPS con macOS.
  3. Al compilar de forma remota en macOS, solo necesita instalar Xcode, Unreal Launcher / Editor / etc. No es necesario instalarlo.
  4. .
  5. — 2 . — development distribution/shipping — .
  6. .
  7. .
  8. SSH MacOS . , , PyTTY.
  9. montaje de proyectos - artículo . Atención: al ensamblar con el indicador "Para distribución", debe seleccionar el perfil / certificado de distribución; de lo contrario, seleccione el perfil / certificado de desarrollo. Seleccionado en la configuración del proyecto, o en el archivo " Config / DefaultEngine.ini " sección " [/Script/IOSRuntimeSettings.IOSRuntimeSettings] ", MobileProvision / SigningCertificate - lines.
  10. prueba de dispositivo - artículo .

8 Conclusión


Todo esto me sucedió en el verano de 2019. Podría olvidar algo y no describirlo de esa manera, algunos momentos pueden volverse irrelevantes.

Me alegraría si esta información ayuda a alguien.

All Articles