En lugar del prólogo
Buenas tardes, colegas! Mi nombre es Aleksey y estoy involucrado en televisores, a saber, el desarrollo de aplicaciones de Smart TV ("
acariciemos a Aleksey ").
Pero, ¿qué es una televisión inteligente? ¿Qué es una aplicación esférica de Smart TV en el vacío?
No te molestaré con la expectativa: básicamente, este tipo de aplicaciones están diseñadas para mostrar contenido de video. En cualquier variación. Grabado, transmisión en vivo, programas de televisión, películas, dibujos animados, comerciales, y así sucesivamente ... ¡Miles de ellos!
¿Pero es Smart TV solo por eso?

Sí, por supuesto, la TV muestra el contenido de video lo mejor de todo, y se las arregla bien con esto, pero ¿es solo para esto que podemos usarlo?
(
Ahora, todos los felices propietarios de consolas y cables HDMI me arrojarán sus tomates podridos, decir "¡Anular suscripción!" Y los felices se irán y continuaremos ).
De hecho, la gran mayoría de las aplicaciones que tuvimos que desarrollar están destinadas principalmente a mostrar videos, pero hubo algunas excepciones notables entre ellas. Además, al sufrir la conocida enfermedad "Punzón en un lugar justo debajo de la espalda", quería extraer algo más de los televisores de lo que todos esperan de ellos.
Mis (y no solo) modestos intentos serán discutidos a continuación.
TV - Juego?
De hecho, lo primero que viene a la mente es el juego. La pantalla grande, la posibilidad de solicitudes de dominio cruzado (ya que la aplicación Smart TV, de hecho, es una página HTML local) y, como mínimo, el control estándar (control remoto) nos permiten implementar un escenario de juego.
En su mayor parte, estos son juegos casuales como "1024" o variaciones sobre el tema de "Tower Defense". No es grueso. Desafortunadamente, envolver super 3D con sombreadores, sombras e iluminación dinámica solo funcionará en los últimos modelos ... el próximo año. Por lo general, la televisión no es la versión más avanzada del navegador y, lo que es peor, rara vez se actualiza o no se actualiza en absoluto. Además, la diferencia entre el poder de un televisor, incluso el año pasado y el actual, puede ser múltiple.
Por lo tanto, si desea cubrir el número máximo de modelos, prepárese para la optimización sangrienta de todo y de todo. Un lienzo limpio y nativo será tu mejor amigo. Los envoltorios funcionan en él, pero es extremadamente glotón. El trabajo insatisfactorio de los métodos de rotación y transformación es especialmente deprimente, así que planifique la animación de sprites e implemente giros de sprites solo en el caso más extremo.
Una vez hicimos un juego en Career Night. Se las arregló para ir a colegas maravillosos de Web Standarts Days y hacer una presentación.
Visualmente, el juego es un campo de juego, se adapta al tamaño de la pantalla, sin desplazamiento, sin barreras. El fondo se divide en varias capas para realizar el efecto 3D. En el escenario, se generan objetivos voladores (patos), sobre los cuales el usuario puede disparar.

Fig. 1. Vista general de la aplicación.La tarea principal era dar la oportunidad de jugar el juego a cualquiera y lo que sea, lo que inmediatamente excluía la interacción con el control remoto. La consola es una, pero hay muchos jugadores. La administración se implementó utilizando el teléfono, y para la máxima cobertura de los dispositivos móviles, se decidió implementar el cliente en forma de un sitio web adaptable. Lo implementamos en WebSockets y agregamos una administración de chips al cambiar la posición del teléfono.
Luego surgieron muchas características interesantes, sensores de orientación de baja calidad y otros problemas técnicos. Tuvimos que aplicar algoritmos de reducción de ruido, de lo contrario la "vista" del jugador en la pantalla del televisor sufrió un terrible temblor. También resultó que el juego "sopla el viento": un error acumulado en los cálculos en los teléfonos y las miradas gradualmente "volaron" en una dirección, lo que obligó a los jugadores a girar gradualmente. Algunos jugaban de espaldas a la televisión.
Moraleja : utilice los sensores de orientación en los navegadores de teléfonos lo menos posible.
Fig. 2. Asesinos de patos en el trabajoLa aplicación usa animación reemplazando sprites. Este método fue bastante productivo. Probamos la aplicación con cientos o más patos voladores. En realidad, solo había 10 de ellos en el juego. Surgieron problemas de rendimiento cuando el diseñador entró corriendo y gritó: "¡Quiero que el planeta gire"!
Torcer el sprite no fue un problema. El problema ocurrió cuando lanzamos la aplicación en un televisor relativamente antiguo. Resultó que no sacó una rotación de sprites de 900 × 900 píxeles un poco más que nada. Como resultado, el usuario con los ojos más grandes puede notar que el planeta en el fondo está cortado en 9 partes que giran alrededor de un centro. Esto resolvió el problema de rendimiento.
De ahí otra moraleja : no rotar sprites grandes.
Otra característica del proyecto fue que la lógica del juego se calcula ... en la televisión. En este caso, el servidor actúa simplemente como un transmisor de datos entre los clientes y el televisor. Hicimos esto para que, incluso en caso de pérdida de conexión, los patos continuaran volando por la pantalla, y después de restaurar Internet, no fue necesario reiniciar la aplicación. Un caso curioso, pero aún opcional.
Pantalla de televisión?
Parece que esto ya es un lugar común, pero no. Como de costumbre, todo está oculto en los detalles. ¿Pantalla para qué? ¿Qué función lleva? Para que sirve
Daré solo algunos ejemplos.
FelicitacionesUn día, decidimos el Día de San Valentín para reducir una felicitación en línea en la empresa y utilizar los televisores disponibles como traductores de felicitaciones. La aplicación se implementó en una versión minimalista con una solicitud al servidor que devolvió una lista de felicitaciones. El principal problema era la característica desagradable de los televisores para pasar al modo de suspensión. Si Samsung le permite deshabilitar esta función utilizando el método setScreenSaver, entonces otras plataformas realmente no lo permiten. Alternativamente, puede ejecutar en segundo plano cualquier video en bucle: la TV en el modo de visualización de video se apaga con mucha menos frecuencia. Como resultado, la aplicación cumplió su función: en todas las partes de la oficina en varios pisos, las felicitaciones de los empleados se transmitieron en línea.
MapaPara ser completamente precisos: un mapa de combate con una lista de los mejores jugadores.
Nuevamente hicimos el juego en Career Night y esta vez decidimos combinar televisores, teléfonos y realidad virtual. La conclusión fue que el jugador en el casco de realidad virtual vuela sobre el dragón y dispara a las princesas, que son controladas por los jugadores desde los teléfonos. Quien haya matado al dragón se pone un casco. Y así en un círculo. Observo modestamente que la aplicación hizo frente a su función (para recoger el número máximo de personas en nuestro stand y mantenerlas el mayor tiempo posible). Aprende más sobre dragones que destruyen princesas
aquí .

Fig. 3. Vista general del standLa aplicación de TV proporcionó una demostración de la escena de batalla general para todos los asistentes.
En este proyecto, nos enfrentamos con la necesidad de optimizar el código previamente estable y que funcionaba bien. Con un aumento en el número de jugadores, los indicadores de rendimiento de la aplicación empeoraron notablemente. Identificamos las principales formas de optimización:
- reducir la cantidad de información transmitida del servidor a los clientes y de los clientes al servidor;
- minimizar la creación de nuevos objetos en la aplicación.
La creación de cada nueva instancia de la clase es notable a simple vista, por lo que todas las instancias deben crearse con anticipación y mostrarse al usuario según sea necesario.
En el televisor a la izquierda hay una vista desde las gafas VR, en el televisor en el centro hay un mapa de escena.
Fig. 4. La jugabilidad. En la televisión a la izquierda - vista desde gafas VR, en la televisión en el centro - mapa de escenaFondo interactivoPuedes preguntar con razón: "¿Incluso trabajas allí, no?" A lo que responderé con una sincera falta de sueño en mi cara: "¡Por supuesto que trabajo!" Pero más sobre eso más tarde. Mientras tanto, no nos sentamos y queríamos implementar un fondo interactivo para el quadrocopter. Más detalles sobre el proyecto se pueden encontrar
aquí .
La idea era mostrar en la televisión la propiedad de Santa Claus, que respondería a la salida / llegada del quadrocopter.
El principal interés era "estirar" la imagen en tres televisores. Distintos fabricantes.
Lo hicimos dividiendo toda la escena en "habitaciones". Cada televisor mostraba una "habitación" con su número. Los números de las "habitaciones" podrían cambiarse, por lo que los televisores, en principio, podrían mostrar las mismas partes de una escena, pero mostramos toda la escena en secuencia. Los comandos para mover el entorno de las escenas (animales, el movimiento de la luna y el humo de las chimeneas) se transmitieron desde el servidor a través de sus WebSockets favoritos.

Fig. 5. Una escena que se extiende sobre tres televisoresComo sabíamos la hora de llegada / salida del quadrocopter, surgió la idea de hacer "viento" en los televisores, que "expulsarían" el humo de las tuberías con el funcionamiento cercano de los tornillos.
Nuevamente, el comando para despegar del quadrocopter a través del servidor descendió a los clientes.
Y aquí, también, tuvimos dificultades con el rendimiento. El "viejo" webOS de 2013 extremadamente duro mostró una imagen grande (5760 × 1080). Tuve que cortar el fondo al tamaño de la pantalla específicamente para él y sustituirlo estrictamente.
Moraleja : no intente dibujar imágenes que sean sustancialmente más grandes que la pantalla del televisor. No sobrevivirá a esto.
Sin embargo, hemos implementado con éxito todo lo relacionado con Smart TV y el backend.
TV - Guardia?Sin embargo, el proyecto más interesante fue completamente no ficción, y no importa qué, útil.
La aplicación se dedicaba a la seguridad del hogar. Sí, es televisión. Sí, estaba vigilado.
La esencia de la aplicación es que la cámara existente toma todo lo que sucede frente a ella, y en el caso de un cambio brusco en la imagen, toma medidas para elegir:
- gritando fuerte;
- envía SMS al usuario;
- escribe una carta con fotos adjuntas del incidente;
- escribe un mensaje a FB también con imágenes;
- hace todo esto a la vez o en cualquier variación.
El televisor en este momento finge ser una bota de fieltro y no funciona en absoluto. En la aplicación, se manejaron casos de apagar el televisor desde Internet o simplemente desde el poder. La aplicación soportaba multilingüismo.
Decenas de miles de personas lo instalaron por sí mismos.
Pero aquí no todo fue simple.
Cuando conecta la cámara e intenta obtener una transmisión en el navegador, como sabe, la ventana emergente del sistema se cae con la confirmación de la acción. La peculiaridad es que los televisores bloquean todas las ventanas emergentes. Por lo tanto, nuestra aplicación se implementó solo en la plataforma Samsung utilizando la cámara de TV incorporada o una cámara especial suministrada por el mismo Samsung.
Otra desventaja fue, nuevamente, el rendimiento de la televisión. En televisores relativamente antiguos (2013), uno podría pasar por delante de la cámara y el televisor "abofetearía" en este momento.
Pero en general, la idea es simplemente brillante.
Conclusión
Las televisiones han superado durante mucho tiempo su función principal: mostrar una imagen de un canal, mostrar vidosiki o ser un segundo monitor.
Sus capacidades y rendimiento están en constante crecimiento, y el alcance de la aplicación está limitado solo por su imaginación. Cualquier tarea se puede resolver con la debida consideración de la idea y la implementación adecuada. ¡Atrévete y triunfa!
Televisión a todos!
Z.Y. ¿Tal vez usted, lector, tuvo tareas inusuales para la televisión inteligente cuando tuvo que usar la televisión en un papel inusual? Compártelo! Dime