Desde que empecé a hacer juegos en Lua por mi cuenta, he tenido que ingeniármelas para combatir las ralentizaciones causadas por los gráficos, pero al día de hoy ya no las soporto más xD.
Me gustaría saber, cuál es la principal causa de este problema, y una posible solución. ¿Acaso es el procesador? ¿Tal vez es la memoria? ¿O simplemente es problema del intérprete? ¿Existe alguna solución?
Tal vez si soy más específico, más ayuda obtenga. Verás, tengo en pantalla 16 imágenes no más de 100px de ancho ni de alto, y estoy imprimiendo 4 palabras utilizando una fuente True Type. Las imágenes están en constante movimiento, cuando la pantalla alberga los 20 gráficos, la ralentización es tremenda.
He pensado en usar sprites en forma de plantilla, pero pienso que el resultado sería el mismo, ya que los pixeles ocupados en el programa no cambiaría, liberando memoria no sirve de nada, también he puesto el CPU a 333Mhz y todo igual.
Ahí les dejo el reto, por mientras yo seguiré experimentando hasta que logre algo (O veal algún post útil aquí :P)
Saludos
mas sobre ralentizaciones
yo a mi pensar la flash 2 y 3 estan vacias lo unico que hago es cuando inicio el menu lua es que copie los ficheros a la flash y antes de acabar o apagar la psp el programa las borra y asi continuamente .de todas maneras esta tecnica la uso de hace mucho y nunca he tenido ningun problema dado que son de libre uso la flash 2 y 3
Pero
entonces de esa manera, si cada vez que sales o apagas se borran de la flash, cada vez que quieras volver a jugar tendrás que volverlo a meter... Un poco rollo no?
Cierto
Pero talves tenga un codigo, que cada ves que el juego o aplicacion se inicie, copie los archivos necesraios a la flash XD, que locura, no se si existe un codigo asi, pero vale la pena soñar ¿no?.
Saludos.
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
Ojala
aparezca una solucion para la ralentilizacion para hacer juegos mas al estilo professional.
Gracias
Pero ya lo arreglé, muy a mi manera, como siempre con métodos salidos de una caverna.
Lo que hice fue aumentar la velocidad con que se movían las imágenes, tratando de igualar el movimiento sin ralentización, y voilá como sin nada.
Un saludo coders
deja te cuento..
pues nada, que despues de matarme un rato hace como 5 meses....
resulta que lua(el original) tiene la funcion System.wday() que me dava el dia de la semana, pudiendo usar asi una matriz para darle el nombre a ese dia dia[system.wday]....
...entonce lo borre....(eso hace 5 meses)
...muy hoy... con luahm7, dicha funcion de lua, ya no sirve, pues me da simpre juevez.... que contras!!!.
pues tuve que recurrir a lo arcaico... y si, ya tengo nuevamente...el dia exacto de hoy,....pero que crees, despues de volver a hacer cuentas de aqui para alla, recorde... que ya lo habia echo en otro programa , y que estaba aun mejor, pues iba para arriba y para abajo...dandome asi el nombre del dia del 5 de marzo del 1745, o el 7 de junio del 2030...etc... pero quedo ok.
en otras palabras, porque no poner la parte del codigo que te da problemas para detectar la falla o la manera de optimizarlo....
repito...solo pinta donde necesites, lo demas dejalo asi...
GuinXell aprender mas...
Lo he intentado de muchas formas
PEro creo que mi splución cavernaria es la mejor. El movimiento lo doy de una forma sencilla:
mover = 1
if mover == 1 then
imagenx 0 imagenx + 1
end
Bastante simple, también he intenatdo con For, y la ralentización es la misma. Con trigonometría va mejor, pero ni idea de como hacer las colisiones :S
Saludos
Bueno
Por que no tratas de usar el metodo que te diej, bueno talves te haya funcionado. Pero nada menos mal que ya lo solucionaste.
Saludos.
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
Tu método
Tu método, no te ofendas, no hace lo que quiero xD.
Lo que tu hiciste fue mover la imagen a las coordenadas 490 * 272, o sea, fuera de la pantalla, es por eso que ya no tuviste ralentizaciones.
Saludos
a ver
Pues tuve un problema asi y era por las dimensiones de las imagenes de fondo, osea tenia una imagen de fondo que era de 480x272, entonces al yo querer mostrarla en el psp osea dibujarla, en ves de poner las dimensiones de la imagen ponia 0* 0 en ves de 480*272 que son las reales, y se me relentizaba y lo que hice fue poner los pixeles reales de la imagen osea 480*272 y listo se movi perfectamente.
espero que me hayan entendido, no soy tan experto, pero ya me he topado con esa situación, al menos de esa forma
Saludos
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
como acelerar en lua
bueno yo mis programas lua van follados,pero es que los sprites y musicas y demas los cargo desde la flash2
las ralentizaciones es cuando cargar tras carga de la memory stick(que es lenta) de un sprite en movimiento,eso ocurre cuando tu declaras el comando
bichomalo =Image.load("sprites/1.png")
lo suyo es:
bichomalo =Image.load("flash2:/sprites/1.png")
te aseguro que notaras la diferencia.
asi si lo cargas desde la flash2 que es de libre uso ganas casi un 50% de velocidad
flash2
Pues yo lo que hago es leer todos sonidos y fotos que voy ha usar durante el juego antes de empezar a jugar hasta el límite de la memoria de la PSP. Vamos que en la PSP classic son unos 30 megas para datos, pero las imágenes ocupan demasiado si las metes en memoria descomprimidas, hay una alternativa para cargar una foto en la memoria sin descomprimir y luego cuando la quieras usar la descomprimes...
La cargamos en memoria con :
jpegFile = io.open("test.jpg", "rb")
data = jpegFile:read("*a")
jpegFile:close()
Y cuando la queramos usar:
image = Image.loadFromMemory(data)
Y así la tenemos en la memoria ocupando lo minimo y la descomprimimos cuando la queramos usar.
Ya claro
Pero es muy arriesgado meter archivos en la flahs simlpemente para conseguir velocidad...
Siempre habrán alternativas para que no hayan ralentizaciones.
Simplemente con el hecho de meter algo en la flash, los users se van a echar para tras :S
aver
lo mas que he visto, son de 20 a 25 imagenes por segundo de 174x146, creo , ya no me acuerdo en estos momento, tal vez tu problema sea el efecto.
veras, me tope con un problema parecido, dije "me lleva, asi no me sirve", y te dire que ami no me va eso, asi que tuve que buscar una solucion.
en mi caso.
si hacia operaciones continuas de vuelta x buelta, los graficos se cuatrapiaban, les tuve que poner un contador del siguiente tipo.
timer=0
while
if timeron=1 then
timer=1+1
end
if timer=2 then
ejecutar operacion que me causaba el problema, algo asi
timer=0
end
if ciertaopcion=true then
timeron=1
etc, etc..
end
end
en otras palabras, el problema parecia que no se podia, o que alentaba el sistema, pero asi se resolvio. no exactamente, pero esa es la idea. todo pasa tan rapido, que no te das cuenta.
una recomendacion, y es que nose como usas las fuentes. ni las imagenes.
te recomiendo NO imprimas todo en pantalla, truco que muchos no usan.
es decir, si no lo necesitas, no lo pintes, solo pinta lo que necesitas.
es decir que independiente mente de los datos que vayas a presentar, hay que buscar la forma de optimizar eso que solo necesitas, no es facil, pero te dejo un ejemplo mas grafico:
pincha aqui <--- pero sigue leyendo
si logras entender el codigo, veras que tecnicas en mi caso use yo.
digo si logras, porque se requiere no solo de saber el lenguaje, sino de entender los revoltijos, porque soy programador si, pero no soy ni estructurado, no sigo reglas, yo a lo que te trunje chencha, sino me se alguna funcion, por mas que esta ya exista, la reinvento. pero de todos modos ¿quien entiende los codigos?, ni yo mismo me entiendo, por ser muy desordenado. XD
dejate un link a lo que estas haciendo, para la proxima, asi en mi caso tratare de ayudarte. (opcional)
GuinXell aprender mas...
Relentizaciones
Las funetes de texto son tremendamente lentas. Yo solo las uso en los menús pero nunca durante el juego porque lo relentizan. También son tremendamente lentas las operaciones con pixels en LUA. Y las funciones en 3D tampoco son nada del otro mundo...
Es lo que hay...