(01-06-2012 15:49)71104 ha scritto: *folli pensieri in corso su come implementare undo e redo*
se trovi una soluzione indolore sarei felice di ascoltarla xD
alla fine undo e redo non saranno presenti nella beta 2 che stiamo per rilasciare, però li implementerò e la soluzione per quanto riguarda i tile sarà grossomodo la seguente: l'array tridimensionale di tile non conterrà più semplici tile ID ma array incompleti. quindi sarà un array quadrimensionale, cioè un array di array di array di array .
gli indici degli array contenuti in ogni cella saranno i numeri di revisione locale. gli algoritmi da implementare su questo array quadrimensionale sono i seguenti:
get(i, j, k, n): restituisce il tile ID contenuto nella mappa alla revisione n. esamina l'array di revisioni situato alla cella (i, j, k) in cerca della massima revisione per quella cella minore o uguale a n. complessità di tempo lineare nel numero M di revisioni.
put(i, j, k, id): inserisce il tile ID specificato alle coordinate (i, j, k) creando una nuova revisione. tempo costante.
considera che il valore di M sarà dell'ordine di grandezza delle decine o centinaia, non credo che un utente arrivi a 1000 revisioni in una sola sessione di lavoro (non credo che arrivi neanche a 600 per la verità).
tutta sta roba non è ancora presente nella prossima release perchè riguarda solo i tile, non ho ancora pensato a come revisionare le entities.
Nel frattempo che lavoriamo ad una nuova release (che dovrebbe uscire a breve, possibilmente in questa settimana), abbiamo iniziato a lavorare ad una serie di videotutorial, di cui abbiamo realizzato il primo:
Daniele Cocca
25-06-2012 15:43
TheBassMonst3r
Senior Member
Messaggi: 467
Registrato: May 2010
Offline
(25-06-2012 17:56)GhostFire ha scritto: Cmq per Redo e Undo potevi semplicemente creare un array di stringhe e creare una cosa del genere:
MossaFatta/NumeroDiVolteEffettuata
Uhm, il sistema mi sembra un po' cervellotico...
C'è un problema di efficienza computazionale, visto che per tornare indietro nella history fino all'i-esima modifica dovresti annullare una ad una tutte le modifiche effettuate successivamente o, altrimenti, ripartire dall'inizio e applicarle fino all'(i-1)-esima.
Daniele Cocca
25-06-2012 18:21
Gabriele
Posting Freak
Messaggi: 4,377
Registrato: Oct 2010
Offline
(25-06-2012 15:43)jmc ha scritto: Nel frattempo che lavoriamo ad una nuova release (che dovrebbe uscire a breve, possibilmente in questa settimana), abbiamo iniziato a lavorare ad una serie di videotutorial, di cui abbiamo realizzato il primo:
veramente ben fatto .
(25-06-2012 18:21)jmc ha scritto:
(25-06-2012 17:56)GhostFire ha scritto: Cmq per Redo e Undo potevi semplicemente creare un array di stringhe e creare una cosa del genere:
MossaFatta/NumeroDiVolteEffettuata
Uhm, il sistema mi sembra un po' cervellotico...
C'è un problema di efficienza computazionale, visto che per tornare indietro nella history fino all'i-esima modifica dovresti annullare una ad una tutte le modifiche effettuate successivamente o, altrimenti, ripartire dall'inizio e applicarle fino all'(i-1)-esima.
si ipotizza che l'utente faccia solo "-1 e +1" cioè torni indietro poi ritorni indietro poi ritorni indietro una mossa per volta...
Stile paint et simili per intenderci...
Il problema sta che devi classificare "tutte le mosse".
(25-06-2012 17:56)GhostFire ha scritto: Cmq per Redo e Undo potevi semplicemente creare un array di stringhe
Mi sembra strano che qualcuno non si sia catapultato a suggerire il classico, lo avete già valutato?
Angelo "Encelo" Theodorou
.: Blog | Twitter | LinkedIn | Ohloh | Last.FM | Vimeo | Steam :. All problems in computer graphics can be solved with a matrix inversion. - James Blinn
25-06-2012 20:19
71104
Member
Messaggi: 216
Registrato: Mar 2012
Offline
facciamo così
prima lo implemento e poi vi dico come ho fatto per filo e per segno
anche perchè, ripeto, ancora non ho la più pallida idea di come revisionare le entities.
e c'è anche un altro problema: entities e tiles sono gestiti in maniera quasi completamente indipendente (si incocciano solo quando arriva il momento di stabilire le profondità e quindi l'ordine di rendering dei vari elementi grafici), ma la undo history deve essere comune.
la beta 2 è uscita, le principali novità sono le entities e le API JavaScript. grazie alle entities Canvace ora è molto più che un editor di mappe. e già come semplice editor di mappe, modestamente parlando , era molto potente.
Colgo l'occasione della release per ringraziare tutti dell'interesse che avete mostrato finora! Vi invito comunque a "maledirci" di più: segnalate tutto il segnalabile, solo in questo modo potremo rendere Canvace più adatto ai vostri gusti.
(03-07-2012 21:44)Remmus ha scritto: Perché state mandando le bete via email?
Non le stiamo mandando noi: chi visita il nostro sito può richiederci di essere accettato nella beta, e noi valutiamo. Anche tu puoi fare richiesta, se vuoi.
(03-07-2012 21:44)Remmus ha scritto: quando finirà la beta il software sarà a pagamento?
Questo è da decidersi. Posso solo dirti che finché siamo in beta l'utilizzo è gratuito e non impone restrizioni.
Daniele Cocca
(Questo messaggio è stato modificato l'ultima volta il: 04-07-2012 8:25 da jmc.)
04-07-2012 8:24
jmc
Junior Member
Messaggi: 25
Registrato: Mar 2012
Offline
Piccolo aggiornamento!
Abbiamo realizzato uno speedrun di un livello dimostrativo, che potete vedere in questo video:
Quello che vedete è parte dell'artwork che, insieme a stage dimostrativi già realizzati, sarà disponibile e liberamente utilizzabile a partire dalla prossima versione 0.2.1, che dovrebbe uscire da qui a poco.