salvare un singolo obj

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
erry-c
Membro
Messaggi: 79
Iscritto il: 28/08/2011, 14:58
Specialità: programmatore
Località: sardegna
Contatta:

salvare un singolo obj

Messaggio da erry-c »

Sapete per caso se è possibile salvare un singolo obj?
volevo salvare un'oggetto con tutte le sue variabili per poi poterlo utilizzare in un'altro file di gmk.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: salvare un singolo obj

Messaggio da Jak »

Salvarlo come? Mentre stai giocando oppure trasferire la risorsa da un gmk all'altro?
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
erry-c
Membro
Messaggi: 79
Iscritto il: 28/08/2011, 14:58
Specialità: programmatore
Località: sardegna
Contatta:

Re: salvare un singolo obj

Messaggio da erry-c »

Jak ha scritto:Salvarlo come? Mentre stai giocando oppure trasferire la risorsa da un gmk all'altro?
mentre sto giocando... è quello il mio problema:)

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: salvare un singolo obj

Messaggio da Jak »

Bè dipende sopratutto da cosa ti serve. Visto che hai intenzione di metterle in un gmk penso siano fisse quindi perchè non vai in debug mode e ti scrivi i valori delle variabili su un foglio?
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
erry-c
Membro
Messaggi: 79
Iscritto il: 28/08/2011, 14:58
Specialità: programmatore
Località: sardegna
Contatta:

Re: salvare un singolo obj

Messaggio da erry-c »

In pratica sto realizzando un software per supporto delle animazioni per game maker!
questo programma ti permette di fare animazioni creando i poligoni ecc... ora il mio probleama è salvare l'animazione (tutto in codice) per poterlo riutilizzare in qualsiasi altro gioco
in pratica crei l'animazione (ossia uno scheletro 2d) e dopo cambi solo gli sprite.

Se riesco a terminarlo e farlo funzionare lo posto, tanto è una cosa utile a tutti e velocizza la programmazione grafica

Avatar utente
Matteo
Membro attivo
Messaggi: 467
Iscritto il: 26/05/2011, 13:05
Specialità: Nabbaggine
Contatta:

Re: salvare un singolo obj

Messaggio da Matteo »

erry-c ha scritto:In pratica sto realizzando un software per supporto delle animazioni per game maker!
questo programma ti permette di fare animazioni creando i poligoni ecc... ora il mio probleama è salvare l'animazione (tutto in codice) per poterlo riutilizzare in qualsiasi altro gioco
in pratica crei l'animazione (ossia uno scheletro 2d) e dopo cambi solo gli sprite.

Se riesco a terminarlo e farlo funzionare lo posto, tanto è una cosa utile a tutti e velocizza la programmazione grafica
wow, stupendo!
cosi a dirsi,

premesso che non so quello che vuoi fare di preciso
se sono solo variabili non è complicato (anche se non so dirti come si faccia), se invece è codice ci sono gli script
Immagine
         GameMakerItalia-2012

Avatar utente
erry-c
Membro
Messaggi: 79
Iscritto il: 28/08/2011, 14:58
Specialità: programmatore
Località: sardegna
Contatta:

Re: salvare un singolo obj

Messaggio da erry-c »

Matteo ha scritto:
erry-c ha scritto:In pratica sto realizzando un software per supporto delle animazioni per game maker!
questo programma ti permette di fare animazioni creando i poligoni ecc... ora il mio probleama è salvare l'animazione (tutto in codice) per poterlo riutilizzare in qualsiasi altro gioco
in pratica crei l'animazione (ossia uno scheletro 2d) e dopo cambi solo gli sprite.

Se riesco a terminarlo e farlo funzionare lo posto, tanto è una cosa utile a tutti e velocizza la programmazione grafica
wow, stupendo!
cosi a dirsi,

premesso che non so quello che vuoi fare di preciso
se sono solo variabili non è complicato (anche se non so dirti come si faccia), se invece è codice ci sono gli script
sei un genio non so come ma mi hai fatto venire in mente un'idea :) gande ora posso proseguire :)
pensavo a salvare oggetti invece devo pensare a salvare le "posizioni" delgi ogetti!
Ultima modifica di erry-c il 02/10/2011, 14:37, modificato 1 volta in totale.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: salvare un singolo obj

Messaggio da Jak »

Allora la soluzione è solo una. Usa le funzioni per scrivere sui file e sei a posto(consiglio gli ini che sono semplici da utilizzare e nel tuo caso vanno più che bene... credo)
cerca sul manuale file_text_eccetera_eccetera
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: salvare un singolo obj

Messaggio da BaronVsCorsar »

la domanda è però interessante...
esiste una funzione per avere tutte le variabili locali di una istanza (magari per farsi un dump come quello che si ottiene in debug con show local variable)?
Il massimo sarebbe la possibilità di avere il nome di tutte le variabili (come stringa) in modo da poter scrivere software tipo:

Codice: Seleziona tutto

intialize_local_variable_list();
while (get_next_local_variable())
 {
  salva(get_current_local_variable());
 }
sarebbe utilissimo per debug integrati nel proprio programma, o per sistemi di salvataggio personalizzati.
Nnon avendo trovato una funzione del genere io mi sono arrangiato salvando in un file di testo tutti i nomi delle variabili locali e scorrendo quel fiel di testo... passabile come soluzione, e facilmnete aggiornabile senza toccare il sorgente... ma devi aggiornarti a mano il file di testo quando aggiungi una variabile locale.
Adesso tramite il sistema di segnalazione bug si possono fare delle richieste di features.... quasi quasi lo richiedo :fapensare:
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: salvare un singolo obj

Messaggio da Homunculus »

sarebbe molto interessante Baron, e secondo me sarebbe ancora più interessante introdurre il concetto di serializzazione (anche se forse é riproducibile una volta che si ha accesso alla lista delle variabili)

Avatar utente
erry-c
Membro
Messaggi: 79
Iscritto il: 28/08/2011, 14:58
Specialità: programmatore
Località: sardegna
Contatta:

Re: salvare un singolo obj

Messaggio da erry-c »

Mi chiedevo anche se è possibile modificare il salvataggio di game maker. Mi spiego:
avete presente la funzione save_game()? ecco salva determinate variabili in un file ma non posso decidere quali!
So gia' che di defalult non fa, ma non è che conoscete un modo voi per salvarci ciò che voglio???

Edit:baron chiedi e facci sapere :D

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: salvare un singolo obj

Messaggio da Jak »

erry-c ha scritto:Mi chiedevo anche se è possibile modificare il salvataggio di game maker. Mi spiego:
avete presente la funzione save_game()? ecco salva determinate variabili in un file ma non posso decidere quali!
So gia' che di defalult non fa, ma non è che conoscete un modo voi per salvarci ciò che voglio???
Jak ha scritto:Usa le funzioni per scrivere sui file e sei a posto(consiglio gli ini che sono semplici da utilizzare e nel tuo caso vanno più che bene... credo)
cerca sul manuale file_text_eccetera_eccetera
Non salvano niente in automatico ma hanno il grosso potere di salvare ciò che vuoi tu :cappa:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: salvare un singolo obj

Messaggio da guidox »

Già la funzione save_game è davvero per nappi, se vuoi farti un bel sistema di salvataggi(magari anche criptato :P ) te lo fai da te. :)
Immagine

Immagine

Avatar utente
erry-c
Membro
Messaggi: 79
Iscritto il: 28/08/2011, 14:58
Specialità: programmatore
Località: sardegna
Contatta:

Re: salvare un singolo obj

Messaggio da erry-c »

guidox ha scritto:Già la funzione save_game è davvero per nappi, se vuoi farti un bel sistema di salvataggi(magari anche criptato :P ) te lo fai da te. :)
quello è ovvio ci arrivo a pensarlo ma che senso ha mettere tutto su un file, doverlo criptare ecc ecc... chiedevo se si poteva modificare appunto perchè mi fa schifo la funzione di gmk... a game maker serviva una funzione come nel c++ che quando crei un file di dati è leggibile solo dal programma che lo ha generato.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: salvare un singolo obj

Messaggio da BaronVsCorsar »

erry-c ha scritto:... a game maker serviva una funzione come nel c++ che quando crei un file di dati è leggibile solo dal programma che lo ha generato.
:confuso:
quale sarebbe quel tipo di file di dati?
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
erry-c
Membro
Messaggi: 79
Iscritto il: 28/08/2011, 14:58
Specialità: programmatore
Località: sardegna
Contatta:

Re: salvare un singolo obj

Messaggio da erry-c »

BaronVsCorsar ha scritto: :confuso:
quale sarebbe quel tipo di file di dati?
non sarebbe il file.bin? mi sono espresso male?

Avatar utente
Matteo
Membro attivo
Messaggi: 467
Iscritto il: 26/05/2011, 13:05
Specialità: Nabbaggine
Contatta:

Re: salvare un singolo obj

Messaggio da Matteo »

BaronVsCorsar ha scritto:
erry-c ha scritto:... a game maker serviva una funzione come nel c++ che quando crei un file di dati è leggibile solo dal programma che lo ha generato.
:confuso:
quale sarebbe quel tipo di file di dati?
non ne ho idea
aspetto l'illuminazione :fapensare:
Immagine
         GameMakerItalia-2012

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: salvare un singolo obj

Messaggio da Jak »

BaronVsCorsar ha scritto:
erry-c ha scritto:... a game maker serviva una funzione come nel c++ che quando crei un file di dati è leggibile solo dal programma che lo ha generato.
:confuso:
quale sarebbe quel tipo di file di dati?
Infatti son curioso :fapensare:
erry-c ha scritto:
BaronVsCorsar ha scritto:non sarebbe il file.bin? mi sono espresso male?
Quella è l'estensione ma resta sempre un file come tutti gli altri :fapensare:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: salvare un singolo obj

Messaggio da BaronVsCorsar »

vi riporto uno stralcio del codice che ho usato per realizzare sostanzialmente questa funzionalità (e usando un file di testo esterno come spiegavo sopra).

Codice: Seleziona tutto

  for (flag= 0; flag < string_count(';', variable_name)+1; flag+=1)
 {
  //global.temp_real is the enemy id now! (problem with execute_string and local variable with gm)
  text= "with (global.temp_real) { " + decode_string(variable_name,flag,';',true) + "= ";
  text2= decode_string(read_string,flag,';',true);
   switch (string_char_at(text2,1))
    {
     case ".": //internal resource
      text2= string_copy(text2,2,string_length(text2)-1);
     break; //end internal resouce;
     case ">": //external resource not yet implemented!!!!!
      text2= '"' + string_copy(text2,2,string_length(text2)-1) + '"';
     break; //end internal resouce;     
     default: //no special resources, no plain text
      if ( (string_char_at(text2,1) != string_digits(string_char_at(text2,1))) &&
           (string_char_at(text2,1) != "-") )
       { text2= '"' + text2 + '"';}      
     break; //end default;
    } 
  text+= text2 + "; }";
  execute_string(text);
 }  
il tutto utilizza il mio script di tokenizer già postato in altri topic:
Spoiler

Codice: Seleziona tutto

//Permette di codificare una stringa
//contenente dati nel formato dato0;dato1;dato2;....daton
//notare che l'ultimo parametro non deve avere il ; alla fine
//; può essere sostituito da qualunque carattere specificato con
//argument[2]
//
//argument[0] stringa
//argument[1] numero del parametro
//argument[2] carattere separatore
//argument[3] true se deve restituisce una stringa, 
//            false se deve restituire un numero (DEFAULT)
//per leggere il primo parametro argument[1] deve valere 0
//
// Versione 1.1 del 28/01/2006
// Andrea Padovani ([email protected])
//
{

 var i,length,pos,substring; //variabile interna allo script
 
 //default separator
 if (!is_string(argument[2])) { argument[2]=';';}
 
 //controllo se la stringa ha un numero sufficiente di dati
 if ( string_count(argument[2],argument[0]) < (argument[1]) )
  { return(-1); } //esco con un valore fittizio
  

 //tolgo tutti i parametri tranne quello voluto
 for (i=0; i< argument[1]; i+=1)
  {   
   pos= string_pos(argument[2],argument[0]); //posizione del primo separatore
   length= string_length(argument[0]) - pos ; //lunghezza della stringa senza il primo parametro 
   argument[0] = string_copy(argument[0],pos+1, length); //tolgo il primo parametro
  }

 //il parametro voluto è il primo
 pos= string_pos(argument[2],argument[0]);     //posizione del primo separatore
 length= string_length(argument[0]) - pos ; //lunghezza della stringa senza il primo parametro
 substring= string_delete(argument[0], pos, length+1); //substring contiene solo il parametro

 if (argument[3] == true)
  { return (substring); }
 else
  { return (real(substring)); }

}
Praticamente in text ho tutte le variabili che voglio salvare (o caricare in questo caso) e in text2 i valori corrispondenti (ottenuto il primo da un file di testo che uso anche per il salvataggio, il secondo dal file di testo salvato).
la stringa text è del tipo
nome_var1;nome_var2;nome_var3;nome_var4
text 2 è del tipo:
10;.obj_controller;.noone;questo è un testo

se il valore inizia per un numero non altero il testo in nessun modo, ottenendo un calcolo matematico (o semplicmente l'assegnazione di un numero), se inizia con una lettera trasformo il testo in stringa virgolettandolo, se inizia con un "." considero il testo come il nome di una risora (o costante interna di gm tipo c_white) e non lo virgoletto.
In questo modo posso anche costruire i lfiel di testo "a mano" senza andare ad assegnare l'identificativo di obj_controller...
ho anceh riservato il carattere ">" per gestire risorse esterne, ma ho poi trovato un modo più efficiente per gestire la situazione nel mio caso specifico, e non l'ho implementato.
esempio di valore
text=> var1;var2;var3;var4
text2=> 10 + pi;15+var2;testo;.obj_testo
var1 == 13.14.....
var2 sarà incrementato di 15
var3 == "testo"
var4 avrà il valore della costante interna di gm "obj_testo";

Per le risorse esterne, in previsione del salvataggio della partita ho gestito il tutto in un modo piuttosto versatile, che magari posterò in un topic dedicato :fapensare:
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti