Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Tamaño, cantidad de texturas y poligonos a usar para un movil

Iniciado por Challenger, Noviembre 04, 2016, 02:45:22 AM

Tema anterior - Siguiente tema
Hola! Estoy haciendo unos diseños para la plataforma android pero me ha surgido una duda técnica.
 
Me gustaría saber la cantidad de texturas y tamaños permitidos que puedo usar en un juego para móvil (Android). Cuando me refiero a cantidad, me refiero a cuantas texturas pueden ser cargadas de una vez en pantalla (cuantas pueden ser mostradas). También me gustaría saber cuantos polígonos de media utilizar.
 
Entiendo que cada movil será muy diferente, pero debe haber unos requisitos "estandars", ya que cuando haces un juego lo haces para todos los moviles con un mínimo de rendimiento, en este caso por ejemplo estoy suponiendo un modelo de movil como Hawuei P8 littel o cualquier otro movil de gama media-alta. 
 
Ya que estoy haciendo unos diseños y unos escenarios que puede después no servir por las limitaciones del movil y prefiero modelar ya sabiendo esas limitaciones (aunque sean aproximadas). Por ejemplo leí que el iphone 4s puede mover 80millones de polígonos por segundo(lo veo una bestialidad), pero no he podido leer nada sobre las texturas, y tampoco he encontrado informacion para Android.
 
Si alguien ya sabe más o menos los requisitos, agradecería dicha información :)
 
 
 
 
 
 
 
 

Depende del modelo de móvil que tengas (CPU, RAM, GPU, VRAM). La limitación de recursos va en función de las especificaciones de Hardware.
 
No hay ninguna medida estándar, porque cada vez que salen nuevos dispositivos éstas cambian y aumentan. Si quieres saber al detalle la capacidad de tu CPU o GPU de tu dispositivo móvil, averigua en qué chipset está basado tu dispositivo y obtén información sobre él en Internet.
 
Por ejemplo, el Huawei P8 Lite:
 

A partir de ahí puedes buscar benchmarks para ubicar mejor el rendimiento medio de ese dispositivo, comparándolo con otros.
 
 

Gracias por la respuesta, si no es posible saber la cantidad de polígonos o textura a usar, lo que hare entonces será usar un movil de pruebas (alguno de gama media) y ver hasta que cantidad de poligonos y texturas puede soportar bajo Unity y en que condiciones (luces, sombras,filtros...etc), haré una escena (tech demo) y a ver que tal 
 
 
 
 

Noviembre 05, 2016, 08:34:34 AM #3 Ultima modificación: Noviembre 05, 2016, 08:37:47 AM por musaranya
La técnica que nunca falla es hacer las pruebas con el móvil más rastrero que tengas, o si no quieres dar compatibilidad con los móviles de gama baja haz las pruebas con el mínimo que quieras dar compatibilidad, eso nunca falla.
 
No sé si te ayudará pero para optimizar el renderizado leí que es más importante minimizar los drawcalls que minimizar el número de polígonos. Vale que no puedes poner millones de polígonos en escena en un juego para móviles, pero tampoco es el punto más crítico. Un ejemplo muy claro que leí por internet: imagínate a un pintor pintando una casa. Cuando tiene que pintar una pared de amarillo coge el cubo de pintura amarilla (que sería un material en Unity) y pinta de amarillo. Mientras está pintando de amarillo se topa con una puerta que se tiene que pintar de rojo. Pues nada, deja el cubo amarillo y se va a por el cubo de pintura roja (otro material). Entonces empieza a pintar de rojo la puerta. Cuesta más el hecho de cambiar de cubo que el hecho de pintar. El número de polígonos sería la superficie a pintar, y los drawcalls las veces que Unity tiene que cambiar de material. Moraleja: céntrate en hacer objetos que puedan compartir un mismo material. Si utilizan el mismo shader pueden compartir las mismas texturas (un atlas, cada objeto cogerá el trocito de textura que le interese). Todos estos objetos luego se pueden juntar en una misma mesh, aplicar lightmapping y lo que sea, esto es muy óptimo para móvil. Si cada objeto tiene un shader/material diferente el renderizado se ralentiza muchísimo, aunque de geometría sean sencillos.
 
Nada, sólo es un consejo

Noviembre 06, 2016, 12:02:01 AM #4 Ultima modificación: Noviembre 06, 2016, 12:44:18 AM por Challenger
Muy interesante Musaranya, no sabía eso. Justamente hoy acabo de hacer varias pruebas en un Nokia E2 (4g LTE),  y he encontrado algo muy interesante. Voy a describir la escena:
 
Es una escena rápida muy simple, con 144 teteras del 3DStudio Max (PolyMesh), todas ellas son separadas, por lo tanto tengo en pantalla 144 objetos, en total en pantalla son 460.800poligonos (3.200poligonos por tetera), más aparte la escena tiene 24 texturas en formato PNG con un tamaño de 512x512, aplicada a las teteras y al suelo, la del suelo también tiene un "normal Maps"
 
La escena el móvil la mueve muy fluidamente, probablemente pueda incrementar el número de polígonos y de texturas mucho más (debo hacer pruebas y ver el límite del móvil).
 
Francamente, me he quedado impresionado del potencial del móvil, siendo clase media-baja puede llegar a tener unos gráficos excelentes, es decir los gráficos ya solo depende de mí nivel de diseño, ya no del hardware del móvil.
 
La parte mala es la iluminación, lo que realmente "mataba" al móvil era usar las sombras, incluso con la misma malla y una sola textura, el móvil no podía manejar la misma escena, ya que la movía a 5fps aprox (daba unos saltos enormes), pero sin sombras la movía con fluidez (sin saltos, respondiendo al toque enseguida), seguiré probando un poco más, pero ya más o menos me queda el claro el potencial.
 
Adjunto una captura de pantalla del móvil para que veas la escena, el pivote blanco es un "character" que lo muevo por la escena, lo podéis bajar del AssetStore gratis para hacer pruebas.
 
Ahora faltan pruebas, como poner agua (que no se todavía), una malla grande para ver la profundidad, niebla, etc.
 
Edito el post: la segunda imagen contiene 1.382.400 poligonos, se mantiene la fluidez, pero tal vez para un juego como un shooter no sea lo suficientemente fluido para que sea preciso a la hora de disparar.
 
 
 

 

Noviembre 06, 2016, 10:22:26 AM #5 Ultima modificación: Noviembre 06, 2016, 10:23:15 AM por musaranya
Sí eso se me olvidó comentarlo: las luces en móviles son críticas, de hecho llegué a leer que lo aconsejable es tener sólo 1 punto de luz por escena y andando. Supongo que esto se puede salvar haciendo lightmapping, o sea metes todas las luces y sombras que quieres, bakeas eso y te genera lightmaps (o sea tus texturas pero ya con las luces y sombras aplicadas), y luego quitas todas las luces y utilizas como texturas los lightmaps. Si haces esto es muy importante que los objetos utilicen el mismo material para poder juntarlos en un solo objeto y que compartan un solo lightmap. Va todo un poco junto. Esto del lightmapping se hace al final cuando ya lo tienes todo en su sitio, yo no lo he utilizado nunca en serio, sólo cuando aprendí, no tengo experiencia

Noviembre 22, 2016, 10:21:03 PM #6 Ultima modificación: Noviembre 22, 2016, 10:21:28 PM por elanguido
Esas son las preguntas del millón, ¿cuántos polígonos puedo meter? ¿qué tamaño de texturas? Son las preguntas que todos nos hemos al encarar nuestro primer proyecto, pero no hay una respuesta genérica para ellas.
 
Hoy en día hay muchos factores que tienen un impacto mayor en el rendimiento que los polígonos o las texturas, como pueden ser los shaders que se usan, cantidad de colisiones, transparencias y luces en tiempo real. Al final, lo único que se puede hacer es usar el método de prueba y error.
 
Lo que yo hago es conseguir un móvil con las mínimas características en las que quiero que funcione e ir probando regularmente los avances para tomar las decisiones pertinentes. Ahora mismo tengo como móvil base un ZTE Blade 2, con procesador Mediatek MT6582M, 1 Gb de ram y chip gráfico Mali 400MP2. Además del móvil base, es bueno contar con algún móvil de gama media que tenga una gráfica con soporte para OpenGL ES 3.0, ya que es posible que haya caídas de rendimiento inesperadas cuando entran en juego los reflejos en tiempo real y procesado de luces que aporta esa api gráfica, muy realista todo pero también muy pesado. Para este caso, tengo un Asus zenfone max, con chip gráfico adreno 410.
 
En mi último juego publicado, hay momentos con 140k de polígonos en pantalla, texturas que van desde 512 hasta 2048 y hasta 10 sistemas de partículas viéndose al mismo tiempo. Siempre con shaders básicos (para móvil), con todos los atlas posibles, y por supuesto, usando lightmapping y jugando mucho con las capas (Layers), luces afectan a cada una de ellas y objetos que pueden colisionar o no según la capa en la que están. Con varias semanas de optimización, conseguí mantenerlo siempre por encima de 35 fps en el móvil base.
 
Suerte.

Etiquetas: