Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Cargar imagen jpg (solucionado)  (Leído 467 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Mataca

en: Enero 07, 2020, 05:33:00 am
Hola.
Actualmente estoy haciendo un juego  para android en el cual necesito cargar 1 imagen (grande) diferente en cada nivel. Para alivianar el peso del juego, las tengo en JPG. Lo que hago actualmente es en cada nivel agregar un sprite con su respectiva imagen JPG y borrar el sprite anterior (para que no se llene de sprites el juego), pero esto me ocasiona errores de textura eventualmente. Alguien sabe algun otro metodo de como hacer aparecer una imagen JPG en el juego que no sea esta?

Desde ya, muchas gracias.

Mataca
« última modificación: Enero 11, 2020, 07:11:07 pm por Mataca »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado XxBL100xX

Respuesta #1 en: Enero 08, 2020, 12:33:35 am
puedes crear un background con la imagen y la ajustas al tamaño de tu room  y en los ajustes de cada room le cambias el background a tu room no se si me explico te metes a los ajustes  de tus rooms y eliges el background y listo  :D

 
Los siguientes usuarios dieron las gracias a este tema: Mataca


Desconectado elviskelley

Respuesta #2 en: Enero 08, 2020, 08:48:00 am
la carga de imagenes grandes nunca es, buena. lo mejor son los tilles, y puedes hacerlo por codigos

Atentamente.-
Elvis Kelley
Mi Manual.
 
Los siguientes usuarios dieron las gracias a este tema: Mataca


Desconectado Ciberman

  • Okupa
  • *
  • Puntos: 212
  • Mensajes: 1.221
  • Agradecido: 4 veces
  • Sexo: Masculino
  • Ciberman Games - Un pixel Marca la Diferencia
    • Ver Perfil
    • Ciberman
Respuesta #3 en: Enero 08, 2020, 08:56:57 am
Por la forma en que GM (y cualquier Engine 2D moderno) maneja las texturas lo recomendable es que no los cargues en tiempo de ejercicion ya que esto ocasionará que tus sprites no sean compactados en forma de atlas (llamado texture page en gm) causando que se incremente el número de "texture swaps" en la GPU del dispositivo. Si te preocupa el peso del juego lo recomendable es que habilites la compresión PNGCrush como directiva de compilador.

Más info: https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/miscellaneous/gml_pragma.html


Cita de: CGM 2008
CGM: Un poco mas serios, mejores Juegos.
Bienvenid@ a CGM. Recomenzamos desde cero, con un reglamento mas estricto, mejor definido y con mas ganas que nunca de hacer juegos con calidad comercial. El que avisa no es traidor: Leete las reglas si no quieres llevarte un capon makero.
Mercilessly!!
Plug-In para animaciones: http://ciberman.net/tweenline/
 
Los siguientes usuarios dieron las gracias a este tema: Mataca


Desconectado Mataca

Respuesta #4 en: Enero 08, 2020, 07:23:24 pm
la carga de imagenes grandes nunca es, buena. lo mejor son los tilles, y puedes hacerlo por codigos

Pero hay alguna forma de agregarlos desde los archivos externos que estan en JPG? O tienen que ser directo del juego que estan en PNG? Porque el problema es que si los pongo en PNG el juego me pesa mas de 100mb, en jpg pesa 70.



Por la forma en que GM (y cualquier Engine 2D moderno) maneja las texturas lo recomendable es que no los cargues en tiempo de ejercicion ya que esto ocasionará que tus sprites no sean compactados en forma de atlas (llamado texture page en gm) causando que se incremente el número de "texture swaps" en la GPU del dispositivo. Si te preocupa el peso del juego lo recomendable es que habilites la compresión PNGCrush como directiva de compilador.

Más info: https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/miscellaneous/gml_pragma.html

El problema es que por más que lo comprima en PNG, el juego me pesa más de 100mb. Las imagenes tienen que ir en JPG y tengo que encontrar la mejor forma de hacer que queden bien en el juego. No hay forma de ir liberando el "texture swaps" ? Ya que al pasar un nivel, el nivel anterior se podria borrar de la memoria. Solo preciso 1 nivel cargado a la vez.





EDITO:

Lo que hago cuando el nivel empieza, es borrar el sprite_index (que es el que se uso la ultima vez) y carga uno nuevo segun el nivel que es. Segun entiendo, si bien se carga en el GPU, solo sería 1 imagen por nivel, lo cual no deberia traer grandes problemas, o no? Dejo el codigo que tengo para que lo vean:

Spoiler
sprite_delete(sprite_index)
switch(global.level){
case 001:
sprite_index=sprite_add("img505/a001.jpg", 1, false, true, 0, 0);
break;
case 002:
sprite_index=sprite_add("img505/a002.jpg", 1, false, true, 0, 0);
break;
case 003:
sprite_index=sprite_add("img505/a003.jpg", 1, false, true, 0, 0);
break;
case 004:
sprite_index=sprite_add("img505/a004.jpg", 1, false, true, 0, 0);
break;
case 005:
sprite_index=sprite_add("img505/a005.jpg", 1, false, true, 0, 0);
break;
case 006:
sprite_index=sprite_add("img505/a006.jpg", 1, false, true, 0, 0);
break;
case 007:
sprite_index=sprite_add("img505/a007.jpg", 1, false, true, 0, 0);
break;
case 008:
sprite_index=sprite_add("img505/a008.jpg", 1, false, true, 0, 0);
break;
case 009:
sprite_index=sprite_add("img505/a009.jpg", 1, false, true, 0, 0);
break;
case 010:
sprite_index=sprite_add("img505/a010.jpg", 1, false, true, 0, 0);
break;
case 011:
sprite_index=sprite_add("img505/a011.jpg", 1, false, true, 0, 0);
break;
case 012:
sprite_index=sprite_add("img505/a012.jpg", 1, false, true, 0, 0);
break;
case 013:
sprite_index=sprite_add("img505/a013.jpg", 1, false, true, 0, 0);
break;
case 014:
sprite_index=sprite_add("img505/a014.jpg", 1, false, true, 0, 0);
break;
case 015:
sprite_index=sprite_add("img505/a015.jpg", 1, false, true, 0, 0);
break;
case 016:
sprite_index=sprite_add("img505/a016.jpg", 1, false, true, 0, 0);
break;
case 017:
sprite_index=sprite_add("img505/a017.jpg", 1, false, true, 0, 0);
break;
case 018:
sprite_index=sprite_add("img505/a018.jpg", 1, false, true, 0, 0);
break;
case 019:
sprite_index=sprite_add("img505/a019.jpg", 1, false, true, 0, 0);
break;
case 020:
sprite_index=sprite_add("img505/a020.jpg", 1, false, true, 0, 0);
break;
case 021:
sprite_index=sprite_add("img505/a021.jpg", 1, false, true, 0, 0);
break;
case 022:
sprite_index=sprite_add("img505/a022.jpg", 1, false, true, 0, 0);
break;
case 023:
sprite_index=sprite_add("img505/a023.jpg", 1, false, true, 0, 0);
break;
case 024:
sprite_index=sprite_add("img505/a024.jpg", 1, false, true, 0, 0);
break;
case 025:
sprite_index=sprite_add("img505/a025.jpg", 1, false, true, 0, 0);
break;
case 026:
sprite_index=sprite_add("img505/a026.jpg", 1, false, true, 0, 0);
break;
case 027:
sprite_index=sprite_add("img505/a027.jpg", 1, false, true, 0, 0);
break;
case 028:
sprite_index=sprite_add("img505/a028.jpg", 1, false, true, 0, 0);
break;
case 029:
sprite_index=sprite_add("img505/a029.jpg", 1, false, true, 0, 0);
break;
case 030:
sprite_index=sprite_add("img505/a030.jpg", 1, false, true, 0, 0);
break;
case 031:
sprite_index=sprite_add("img505/a031.jpg", 1, false, true, 0, 0);
break;
case 032:
sprite_index=sprite_add("img505/a032.jpg", 1, false, true, 0, 0);
break;
case 033:
sprite_index=sprite_add("img505/a033.jpg", 1, false, true, 0, 0);
break;
case 034:
sprite_index=sprite_add("img505/a034.jpg", 1, false, true, 0, 0);
break;
case 035:
sprite_index=sprite_add("img505/a035.jpg", 1, false, true, 0, 0);
break;
case 036:
sprite_index=sprite_add("img505/a036.jpg", 1, false, true, 0, 0);
break;
case 037:
sprite_index=sprite_add("img505/a037.jpg", 1, false, true, 0, 0);
break;
case 038:
sprite_index=sprite_add("img505/a038.jpg", 1, false, true, 0, 0);
break;
case 039:
sprite_index=sprite_add("img505/a039.jpg", 1, false, true, 0, 0);
break;
case 040:
sprite_index=sprite_add("img505/a040.jpg", 1, false, true, 0, 0);
break;
case 041:
sprite_index=sprite_add("img505/a041.jpg", 1, false, true, 0, 0);
break;
case 042:
sprite_index=sprite_add("img505/a042.jpg", 1, false, true, 0, 0);
break;
case 043:
sprite_index=sprite_add("img505/a043.jpg", 1, false, true, 0, 0);
break;
case 044:
sprite_index=sprite_add("img505/a044.jpg", 1, false, true, 0, 0);
break;
case 045:
sprite_index=sprite_add("img505/a045.jpg", 1, false, true, 0, 0);
break;
case 046:
sprite_index=sprite_add("img505/a046.jpg", 1, false, true, 0, 0);
break;
case 047:
sprite_index=sprite_add("img505/a047.jpg", 1, false, true, 0, 0);
break;
case 048:
sprite_index=sprite_add("img505/a048.jpg", 1, false, true, 0, 0);
break;
case 049:
sprite_index=sprite_add("img505/a049.jpg", 1, false, true, 0, 0);
break;
case 050:
sprite_index=sprite_add("img505/a050.jpg", 1, false, true, 0, 0);
break;
case 051:
sprite_index=sprite_add("img505/a051.jpg", 1, false, true, 0, 0);
break;
case 052:
sprite_index=sprite_add("img505/a052.jpg", 1, false, true, 0, 0);
break;
case 053:
sprite_index=sprite_add("img505/a053.jpg", 1, false, true, 0, 0);
break;
case 054:
sprite_index=sprite_add("img505/a054.jpg", 1, false, true, 0, 0);
break;
case 055:
sprite_index=sprite_add("img505/a055.jpg", 1, false, true, 0, 0);
break;
case 056:
sprite_index=sprite_add("img505/a056.jpg", 1, false, true, 0, 0);
break;
case 057:
sprite_index=sprite_add("img505/a057.jpg", 1, false, true, 0, 0);
break;
case 058:
sprite_index=sprite_add("img505/a058.jpg", 1, false, true, 0, 0);
break;
case 059:
sprite_index=sprite_add("img505/a059.jpg", 1, false, true, 0, 0);
break;
case 060:
sprite_index=sprite_add("img505/a060.jpg", 1, false, true, 0, 0);
break;
case 061:
sprite_index=sprite_add("img505/a061.jpg", 1, false, true, 0, 0);
break;
case 062:
sprite_index=sprite_add("img505/a062.jpg", 1, false, true, 0, 0);
break;
case 063:
sprite_index=sprite_add("img505/a063.jpg", 1, false, true, 0, 0);
break;
case 064:
sprite_index=sprite_add("img505/a064.jpg", 1, false, true, 0, 0);
break;
case 065:
sprite_index=sprite_add("img505/a065.jpg", 1, false, true, 0, 0);
break;
case 066:
sprite_index=sprite_add("img505/a066.jpg", 1, false, true, 0, 0);
break;
case 067:
sprite_index=sprite_add("img505/a067.jpg", 1, false, true, 0, 0);
break;
case 068:
sprite_index=sprite_add("img505/a068.jpg", 1, false, true, 0, 0);
break;
case 069:
sprite_index=sprite_add("img505/a069.jpg", 1, false, true, 0, 0);
break;
case 070:
sprite_index=sprite_add("img505/a070.jpg", 1, false, true, 0, 0);
break;
case 071:
sprite_index=sprite_add("img505/a071.jpg", 1, false, true, 0, 0);
break;
case 072:
sprite_index=sprite_add("img505/a072.jpg", 1, false, true, 0, 0);
break;
case 073:
sprite_index=sprite_add("img505/a073.jpg", 1, false, true, 0, 0);
break;
case 074:
sprite_index=sprite_add("img505/a074.jpg", 1, false, true, 0, 0);
break;
case 075:
sprite_index=sprite_add("img505/a075.jpg", 1, false, true, 0, 0);
break;
case 076:
sprite_index=sprite_add("img505/a076.jpg", 1, false, true, 0, 0);
break;
case 077:
sprite_index=sprite_add("img505/a077.jpg", 1, false, true, 0, 0);
break;
case 078:
sprite_index=sprite_add("img505/a078.jpg", 1, false, true, 0, 0);
break;
case 079:
sprite_index=sprite_add("img505/a079.jpg", 1, false, true, 0, 0);
break;
case 080:
sprite_index=sprite_add("img505/a080.jpg", 1, false, true, 0, 0);
break;
case 081:
sprite_index=sprite_add("img505/a081.jpg", 1, false, true, 0, 0);
break;
case 082:
sprite_index=sprite_add("img505/a082.jpg", 1, false, true, 0, 0);
break;
case 083:
sprite_index=sprite_add("img505/a083.jpg", 1, false, true, 0, 0);
break;
case 084:
sprite_index=sprite_add("img505/a084.jpg", 1, false, true, 0, 0);
break;
case 085:
sprite_index=sprite_add("img505/a085.jpg", 1, false, true, 0, 0);
break;
case 086:
sprite_index=sprite_add("img505/a086.jpg", 1, false, true, 0, 0);
break;
case 087:
sprite_index=sprite_add("img505/a087.jpg", 1, false, true, 0, 0);
break;
case 088:
sprite_index=sprite_add("img505/a088.jpg", 1, false, true, 0, 0);
break;
case 089:
sprite_index=sprite_add("img505/a089.jpg", 1, false, true, 0, 0);
break;
case 090:
sprite_index=sprite_add("img505/a090.jpg", 1, false, true, 0, 0);
break;
case 091:
sprite_index=sprite_add("img505/a091.jpg", 1, false, true, 0, 0);
break;
case 092:
sprite_index=sprite_add("img505/a092.jpg", 1, false, true, 0, 0);
break;
case 093:
sprite_index=sprite_add("img505/a093.jpg", 1, false, true, 0, 0);
break;
case 094:
sprite_index=sprite_add("img505/a094.jpg", 1, false, true, 0, 0);
break;
case 095:
sprite_index=sprite_add("img505/a095.jpg", 1, false, true, 0, 0);
break;
case 096:
sprite_index=sprite_add("img505/a096.jpg", 1, false, true, 0, 0);
break;
case 097:
sprite_index=sprite_add("img505/a097.jpg", 1, false, true, 0, 0);
break;
case 098:
sprite_index=sprite_add("img505/a098.jpg", 1, false, true, 0, 0);
break;
case 099:
sprite_index=sprite_add("img505/a099.jpg", 1, false, true, 0, 0);
break;
case 100:
sprite_index=sprite_add("img505/a100.jpg", 1, false, true, 0, 0);
break;
}

(son 500 niveles, lo tuve que cortar por el limite de caracteres de post)
« última modificación: Enero 08, 2020, 07:46:38 pm por Mataca »

 


Desconectado Mataca

Respuesta #5 en: Enero 10, 2020, 03:32:22 am
puedes crear un background con la imagen y la ajustas al tamaño de tu room  y en los ajustes de cada room le cambias el background a tu room no se si me explico te metes a los ajustes  de tus rooms y eliges el background y listo  :D

Creo que esto funcionaría igual a como lo tengo yo. Creo que daría los mismos errores, no? O funciona diferente por el hecho de ser un background?

 


Desconectado Mataca

Respuesta #6 en: Enero 11, 2020, 07:10:38 pm
Me lo solucionaron en el foro oficial. El problema era que el sprite_add carga la imagen en el GPU, no en el atlas del juego, por ende cada vez que se reiniciaba el room, el objeto volvía sin sprite entonces al poner sprite_delete no borraba nada y en el GPU se iban acumulando todos los niveles cargados. Lo solucione poniendo en un evento ROOM_END el sprite_delete, haciendo que cada vez que se salga del room se borre el sprite y libere la memoria el GPU.