Veran, estoy intentando recuperar los sprites que un juego el cual perdi su código, pero logre convervar un ejecutable en formato HTML5.
Logre encontrarlos, pero hay un problema: En lugar de estar los sprites sin más, estos estan agrupados en grupos denominados "texture", tal como enseño en la captura de pantalla.
Me llevaria una eternidad sacar cada sprite, ademas de que sería fácil que me olvide de alguno con la gran cantidad que hay. ¿Es posible con algun software o con alguna funcionalidad del GM extraer cada uno de esos sprites por separado?

creo que con photoshop puedes hacer eso, pero no sé si el orden afecta... de todos modos, a simple vista... parece un poco pesado, pero no parece taaaaaaanto como para morirse xD
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#2 Enero 07, 2019, 02:03:13 AM Ultima modificación: Enero 07, 2019, 02:43:52 AM por Johann
Ahora si, gracias a Kostra que me lo recordó posteando, te cuento lo que yo hice, porque mi proyecto tiene sprites de diferentes tamaños para diferentes instancias de un mismo objeto y hacer un sprite con varias subimagenes era ineficiente por esa diferencia de tamaño. Asi que metí todas las imagenes y creé una rutina para, como tu mismo dices, extraer el sprite de la textura al momento de crear el objeto.

Lo primero que debes hacer es generar un documento xml donde se almacenan las coordenadas que limitan cada sprite dentro de la textura. Para esto usé Leshy SpriteSheet.
Ejemplo:

<textureatlas xmlns="http://www.w3.org/1999/xhtml" imagepath="textura.png">
<subtexture name="sprite1" x="157" y="8" width="149" height="150"></subtexture>
<subtexture name="sprite2" x="9" y="11" width="143" height="144"></subtexture>
<subtexture name="sprite3" x="464" y="14" width="126" height="126"></subtexture>
</textureatlas>


Este archivo se lee dentro de game maker con una extension gratuita que hace de parser, se llama DerpXml y la usas para obtener los datos del archivo xml a partir del nombre del sprite.

Mi script se ve asi:
[gml]
///get_sprite(name)
//=========================================================
// Returns the required sprite
//=========================================================
DerpXmlRead_OpenFile("sprites.xml");
while DerpXmlRead_Read() {
    if DerpXmlRead_CurValue() == "subtexture" {
        if DerpXmlRead_CurGetAttribute("name") == argument0 {
            var _x = real(DerpXmlRead_CurGetAttribute("x"));
            var _y = real(DerpXmlRead_CurGetAttribute("y"));
            var _w = real(DerpXmlRead_CurGetAttribute("width"));
            var _h = real(DerpXmlRead_CurGetAttribute("height"));
            break;
        }
    }
}
var s = surface_create(sprite_get_width(spritesheet), sprite_get_height(spritesheet));
surface_set_target(s);
draw_sprite(spritesheet,0,0,0);
var sprite = sprite_create_from_surface(s,_x,_y,_w,_h,false,false,_w/2,_h/2)
sprite_collision_mask(sprite, false, 0, 0, 0, 0, 0, 0, 0);
surface_free(s);
DerpXmlRead_CloseFile();
return sprite;
[/gml]

Parece complicado pero no lo es, lo mas dificil es que el documento xml quede bien.
Los sprites que se van creando se almacenan en un mapa, para no crear cada sprite mas de una vez y por ultimo se le asigna el sprite al objeto correspondiente.
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

Cita de: kostra en Enero 07, 2019, 01:13:47 AM
creo que con photoshop puedes hacer eso, pero no sé si el orden afecta... de todos modos, a simple vista... parece un poco pesado, pero no parece taaaaaaanto como para morirse xD

Dices que con Photoshop podria hacerlo. ¿Y como seria?

Imagino que empiezas a recortar cada parte y la pegas en un nuevo documento para ir guardando en archivos separados.

Entonces ahi viene la pregunta: ¿Necesitas hacer eso fuera del juego o dentro?
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

Cita de: Johann en Enero 10, 2019, 05:48:49 PM
Imagino que empiezas a recortar cada parte y la pegas en un nuevo documento para ir guardando en archivos separados.

Entonces ahi viene la pregunta: ¿Necesitas hacer eso fuera del juego o dentro?

Para mi lo ideal seria que logre descomponer cada fichero en varios ficheros, estando en cada uno de ellos una imagen.
Por lo que idealmente debe hacerse fuera, ¿pero hay una forma de que se haga dentro del propio juego?

Cita de: Marth¿pero hay una forma de que se haga dentro del propio juego?


Es lo que te he puesto arriba al detalle
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

no sé exactamente, pero recuerdo que una vez ví algo similar con algún tutorial para crear plantillas web, y lo hacía así, dibujando todo como se vería, y con nose qué herramienta, recortabas la imagen por rectángulos independientes del tamaño y muy entremezclado si querías, a partir de cortes... pero no me preguntes EXACTAMENTE cómo se hace porque no tengo ni idea.. pero sí, era cortar y automáticamente te hacía todo por archivos separados, no como dice Johan que me refería... xd aun que de todos modos, ya digo que no es para tanto hacerlo a mano... yo en Paint.Net que es el que estoy más acostumbrado, relecciono un recuadro y pulso cntrol+shift+x y se recorta todo el lienzo al tamaño de lo seleccionado, guardo con 01, luego hago cntrol+z selecciono el siguiente sprite, cntrl+shift+x, guardo con 02, y repito proceso hasta tener todos... si son 500, una pereza inmensa, si son menos de 50, meh... se puede hacer sin morir en el intento xd
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]