android - tamaño - resolucion game maker
Múltiples resoluciones de pantalla/relaciones de aspecto(juegos) (6)
EDIT: Gracias por todas sus respuestas y comentarios. Después de pensarlo, reformularía el núcleo de la pregunta de la siguiente forma: "Cómo determinar y limitar la resolución / relación mínima en la que mi juego puede ejecutarse". Debido a que el juego ya no se puede jugar en la pantalla / proporción más pequeña (falta de detalles) o que incluso la pantalla / relación más pequeña degrada la experiencia de todos los demás de manera significativa. Además, ni siquiera sabemos cuál es la resolución más pequeña o podemos restringirla de otra forma que no sea desactivar ldpi ... que aún no nos dice sobre el mdpi más pequeño. Después de todo, no estoy pensando en cómo crear un buen resultado sino en cómo crear un resultado perfecto;). Supongo que no es posible (¿todavía?).
Nota: esto se trata únicamente de teléfonos, no de tabletas. Además, esta pregunta no es tan relevante para las aplicaciones como para los juegos que no usan el sistema de diseño de Android.
Siempre encontré las definiciones de qué resoluciones esperar algo vagas. Estoy al tanto de la list en los documentos.
Ahora mi primera pregunta es si esta lista está completa o, en otras palabras, si el fabricante tiene permitido usar otras resoluciones o relaciones de aspecto. Mi enfoque actual es ver esta lista en términos de relaciones de aspecto que se parecen a eso (no estoy seguro de si es exacto pero entiendes la idea):
- ldpi: relación de aspecto más pequeña 4: 3
- mdpi: relación de aspecto más pequeña 3: 2
- hdpi: mayor relación de aspecto 16: 9
Entonces, si quiero cubrir una gama de dispositivos, descubro cuáles son mis relaciones de aspecto más pequeñas y más grandes, y diseño el diseño para el más pequeño a la vez que lo hago crecer automáticamente al más grande. Por ejemplo, si quiero admitir todas las densidades, diseño las pantallas para 4: 3 y las hago crecer a 16: 9. En caso de que elimine el soporte ldpi, diseñaría para 3: 2. Por supuesto, esto supone que nunca habrá un dispositivo mdpi con una relación de aspecto de 4: 3, lo que nos lleva de vuelta a mi primera pregunta.
Mi solución preferida sería indicar en el Android Market qué relaciones de aspecto puede manejar mi aplicación, pero hasta ahora no parece posible.
¿Alguien tiene un mejor enfoque? (Teniendo en cuenta que es solo para juegos en teléfonos)
Como mucha gente mencionó anteriormente, mi enfoque también estaría haciendo un uso completo de los componentes independientes del dispositivo, como los campos, los márgenes y las salidas relativas, combinados con los paquetes independientes del dispositivo.
Para ser sincero, y espero que no sea el único, pero estoy aprovechando al máximo los DIP (píxeles independientes del dispositivo) y el diseño relativo, y ... ha reducido los archivos de diseño de mi actividad a 1 por actividad en lugar de 3 tipos diferentes Para HDPI, MDPI y LDPI.
En caso de que esté realmente preocupado por la relación de aspecto, siempre puede llamar a las propiedades de visualización en píxeles del dispositivo y realizar cálculos de diseño apropiados basados en esas cifras. Puede llamar a esto al comienzo del método onCreate de su primera actividad.
Display display = getWindowManager().getDefaultDisplay();
int displayWidth = display.getWidth();
int displayHeight = display.getHeight();
Esto le dará los valores de ancho y alto de su reproducción de hardware en píxeles. En mi opinión, la verdadera razón por la que elegiría más de 3 tipos de diseño es asegurarse de que la resolución de la imagen se mantenga lo suficientemente nítida.
Con estos números puede crear cierta lógica interna, que calcula qué tipo de imágenes de resolución cargar en ciertos widgets. De esta forma, le ahorramos la molestia de hacer 3 veces el mismo diseño ...
quizás se explique un poco críptico, pero lo principal para superar las diversas resoluciones de los dispositivos es trabajar mucho con:
- ajustes relativos
- Píxeles independientes del dispositivo
También puede definir DIP en el diseño XML, por lo que cada componente tiene el mismo aspecto en cada tipo de dispositivo.
quizás un ejemplo estúpido, pero bueno, funcionó para mí :-) aquí debajo, traté de obtener el tamaño del texto en una vista de texto para que sea relativamente igual en todos los dispositivos. Puede llamar a la clase ''TypedValue'' y seleccionar una de las muchas variables públicas que se ofrecen allí. Como quería hacer que el TextView en todas partes tuviera el mismo tamaño relativo, utilicé el siguiente código:
someTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
el número es para establecer qué tan grande debe ser el tamaño en DIP. TypedValue se puede usar en muchos componentes o componentes de actividad que requieren un valor INT para las propiedades dimensionales. Juega con eso y verás que hace la vida mucho más fácil :-p
Espero que esta respuesta ayude un poco.
Encontré una respuesta clara al problema.
Las resoluciones mínimas no están definidas antes de 3.0. Por lo tanto, para la versión 3.0 y superior, será posible elegir una resolución mínima, diseñar un juego basado en él y aumentar el diseño dinámicamente en pantallas / ratios más grandes como lo menciona superM y otros.
A medida que diseña su interfaz de usuario para diferentes tamaños de pantalla, descubrirá que cada diseño requiere una cantidad mínima de espacio. Por lo tanto, cada tamaño de pantalla generalizado arriba tiene una resolución mínima asociada que está definida por el sistema. Estos tamaños mínimos están en unidades "dp", las mismas unidades que debe usar al definir sus diseños, lo que permite que el sistema evite preocuparse por los cambios en la densidad de la pantalla.
- Las pantallas xlarge tienen al menos 960dp x 720dp
- pantallas grandes son al menos 640dp x 480dp
- Las pantallas normales son al menos 470dp x 320dp
- Las pantallas pequeñas son al menos 426dp x 320dp
Nota: estos tamaños mínimos de pantalla no estaban tan bien definidos antes de Android 3.0 , por lo que puede encontrar algunos dispositivos que están mal clasificados entre normal y grande. Estos también se basan en la resolución física de la pantalla, por lo que pueden variar según los dispositivos; por ejemplo, una tableta 1024x720 con una barra del sistema en realidad tiene un poco menos espacio disponible para la aplicación debido a que la barra del sistema la utiliza.
No hay una lista exhaustiva de relaciones de aspecto. Los fabricantes pueden decidir la resolución que deseen. Además de eso, las relaciones de aspecto no coinciden con la densidad de píxeles, por lo que usar ldpi / mdpi / hdpi para decidir la relación de aspecto probablemente no sea una buena idea.
Tu estrategia para lidiar con esto realmente depende de tu juego. Por supuesto, hasta cierto punto, simplemente debes escalar todo lo que sea más grande o más pequeño, pero obviamente las partes difíciles son los bordes que son diferentes en diferentes relaciones de aspecto. Ciertos juegos (tiradores en primera persona, scrollers laterales, juegos de mosaico de arriba hacia abajo, etc.) pueden proporcionar un campo de visión diferente sin demasiados problemas siempre y cuando no esté preocupado por dar una ventaja a ciertos dispositivos, por ejemplo. otros, puede considerar tener un gráfico extensible o enlosable para el fondo y mantener la misma área de juego efectiva (escalada).
No puedo responder directamente a tu pregunta, pero me gustaría decirte mi enfoque. Intento no usar para usar ningún número en absoluto. En su lugar, trato de usar rellenos, márgenes y diseños relativos para que mis vistas se vean correctamente en cualquier teléfono. También me ayuda a evitar la creación de vistas para diferentes orientaciones.
Puede limitar qué dispositivos pueden ver su juego en el mercado según la resolución de la pantalla: http://developer.android.com/guide/appendix/market-filters.html
No he profundizado en eso completamente pero no puedo ver ninguna mención de la relación de aspecto, así que quizás tengas que completar todos los que sabes que funcionarán.
Si falla, puede establecer una resolución mínima que requiera para que sus gráficos se vean bien y si no desea cambiar el juego por proporciones más pequeñas, puede agregar bordes negros como lo harían en los juegos de consola. No se recomienda, sin embargo, el espacio de la pantalla móvil es lo suficientemente valioso, así que si corta el área de juego con barras negras, movería su HUD al área negra para que aún esté utilizando la mayor cantidad de pantalla posible.
Hay más información sobre el soporte de tamaños de pantalla aquí: http://developer.android.com/guide/practices/screens_support.html
: D
Puedes intentar preguntar en GameDev.stackexchange.com
Este es un problema similar al suyo: crear un juego para diferentes teléfonos de resoulution