Comunidad de diseño web y desarrollo en internet online

Ayuda sobre optimización para videojuego

Citar            
MensajeEscrito el 25 Ene 2013 05:45 am
Buenas.

Ando haciendo un juego en AS3 para mi novia (Off-line, correrá en una notebook de hace dos años), y tengo dudas en cuanto a la optimización empleando algunos trucos que ideé. Primero que nada, es un juego de plataformas, para tenerlo todo cargado cuando entre a los escenarios y no genere ningún retraso pienso usar un preloader (no sé si sólo funciona con juegos alojados en internet).

También ideé una forma para que no aparezcan todos los enemigos en pantalla a la vez y no se muestre todo el escenario, sino sólo lo que se vea por la cámara, para ello he de dividir el Nivel en segmentos, sólo se verán el segmento donde está el personaje y los que tiene a los lados, para ello pienso colocar los otros elementos con el atributo VISIBILITY = FALSE, mi pregunta es, si con ello basta para que lo que no se está viendo no represente una carga para el CPU?. También habrán otros elementos en "espera" que pienso quitarles la Visibilidad mientras no se están usando (recordando que en los videojuegos es preferible NUNCA remover los objetos sino simplemente moverlos de posición, etc.).

Por último, y es referente a gráficos, leí en una página de ayuda de Adobe que es preferible, siempre que sea posible, trabajar usando las capacidades de vectorización de Flash, ahora mi pregunta es: ¿Si éstos tienen cierta carga gráfica, hechos en Illustrator, como múltiples degradados, en algunos casos efecto Blur/Desenfoque (pocos, creo que de 100 gráficos sólo 2 o 3 lo tienen), no representaría una mayor carga a que si usara Mapas de Bits (que bien puedo pintar y agregar el mismo o más detalle)?, espero sus respuestas, y desde ya muchas gracias por su ayuda :)

Por DaveyDsign

6 de clabLevel



Genero:Masculino  

Diseño Gráfico

chrome
Citar            
MensajeEscrito el 25 Ene 2013 11:38 am
Estas bien encaminado, pero tus preguntas son motivos de libros enteros. La precarga de elementos es fundamental en la web, aunque eslo que meno truco tiene. Los plataformeros con side scrolling efectivamente no generan todo el escenario de una, pero tampoco invisibilizan/visibilizan los elementos segun esten en el escenario sino por secciones enteras. Los elementos y bonus se crean runtime. Nunca se usa imagen vectorial, sino que se plancha todo a bitmap, que no consume CPU e incluso puede ser cacheado.
Te diria que arranques leyendo lo que puedas en http://www.adobe.com/devnet/games.html

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Ene 2013 03:26 am
Ummmmm entiendo, entonces me conviene más usar bitmaps, el miedo que me da de usarlos es que, por ejemplo en los fondos, tener que usar bitmaps relativamente grandes que consuman recursos, hace tiempo ideé algo que no he puesto a prueba, y no sé si el Flash trabajará así, y es que pensé que los mapas de bits grandes al haber (por ejemplo) un personaje moviéndose sobre ellos, tendría que redibujar TODA LA IMAGEN, ahora, será que si segmento el mapa de bit y simplemente los coloco uno al lado de otro (dando la sensación de que es una sola imagen) y en mosaico (repitiendo instancias del mismo mapa de bits) podría ahorrarme CPU al no tener que redibujar TODA la imagen sino sólo una pequeña parte? Lo veo obvio, pero considerando mi poca experiencia en programación (auto-didacta 100% desde hace unos meses) quisiera asegurarme antes de ponerme manos a la obra.

Además, según la página de Adobe las animaciones fotograma-a-fotograma consumen más recursos que las interpolaciones, ¿no significa eso que al menos para las animaciones (personaje corriendo, atacando, etc) sea mejor usar vectores con animación por interpolación?

Por último, al utilizar entonces el atributo "visibility" en FALSE sí me ayuda a ahorrar recursos, dejando visible sólo segmentos del escenario? Y ya para terminar: ¿La precarga off-line no me ayudará entonces a nada? Porque si es así me ahorro el tener que hacerlas y me dedico entonces a optimizar de la manera que estamos planteando acá.

Gracias en verdad por su ayuda :)

Por DaveyDsign

6 de clabLevel



Genero:Masculino  

Diseño Gráfico

chrome
Citar            
MensajeEscrito el 26 Ene 2013 11:27 am

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Ene 2013 08:59 am
Lo que dices sobre los bitmaps de fondo no es solamente recomendable... es que seguramente sea la única forma de hacerlo y que te de buen rendimiento.

Por otro lado yo soy de la opinión de que cada juego es diferente y te tocará precargar recursos en algunos casos y no hacerlos en otros. En mi experiencia nunca precargo nada, dada la naturaleza de mis juegos la precarga consume memoria y los móviles tienen muy poca y Adobe Air consume mucho.

Una salida que tienes, aunque a mí no me guste, es usar cacheasbitmap y cacheasbitmapmatrix en tus movieclips.

Aunque al final la mejor de todas creo que es, si ves que no consigues buen rendimiento, implementarlo todo en Starling.

Por jano_alex_es

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Ene 2013 07:47 am
Entiendo, gracias por sus respuestas en verdad, y no, no es para un juego móvil, es un regalo para mi novia que tiene una notebook con estas specs:

CPU N270 @1.60GHz
0,99 GB de RAM
Mobile Intel(R) 945 Express Chipset Family

Al menos creo que sí me conviene precargar todo en este caso, ya luego con proyectos a futuro pienso que debe ya estudiarse el caso, ahora sólo me queda la duda del VISIBILITY, ¿sólo con eso ya me ayudo en la optimización? Es que como está todo cargado en memoria igualmente no sé si de todos modos suponga una carga para el CPU. En verdad gracias por su ayuda y espero me puedan responder esa última duda :)

Por DaveyDsign

6 de clabLevel



Genero:Masculino  

Diseño Gráfico

chrome
Citar            
MensajeEscrito el 31 Ene 2013 08:29 am
Cambiando visibility haces que Flash no intente pintarlo en pantalla, está bien para optimizar esta tarea pero no te cambiará nada en memoria.

Es un poco balancearlo todo: guardar los objetos en memoria te salva el proceso de crearlos, destruirlos y puede que añadirlos a la escena, que en grandes números es costoso. Pero te hace tenerlos en memoria, lo que en determinados dispositivos es contraproducente. En PC no deberías tener problemas de memoria.

Puedes usar bitmaps y descargas trabajo de CPU, pero sigues aumentando memoria. Aún así sigo pensando que no deberías tener problemas de memoria en el PC.

Lo básico-básico para no tener problemas en PC es huir de las transparencias y las animaciones de transparencias en imágenes vectoriales. Y quitar todos los listeners siempre.

Me estoy explayando: al final todo es prueba y error, Flash es algo impredecible en cuestión de rendimiento. Lo mejor es que te hagas con un profiler y monitorices tus cuellos de botella en CPU y la cantidad de memoria que gastas.

Por jano_alex_es

21 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.