Autore Topic: Pushover 64  (Letto 38729 volte)

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« il: 19 Febbraio 2006, 16:52:06 »
 Salve a tutti,

visto che Moonstone per ora si è arenato causa mancanza di grafico serio, ho pensato di iniziare un altro progetto che avesse come particolarità che la grafica potesse essere disegnata dal sottoscritto. Non è che sia generalmente d'accordo con questo proverbio, ma in questo caso mi sa che chi fa da sè fa per tre... voi che ne dite?

Ad ogni modo, il gioco che  ho scelto è Pushover, un altro gioco realizzato per Amiga e Pc, nel 1992.   E' un puzzle game molto simpatico che per me sarà molto utile per impratichirmi con alcuni principi che ancora non padroneggio come si deve.

Dunque, nel mio sito troverete quello che ho fatto in queste 4 settimane.

Lo sfondo è naturalmente fatto con caratteri ridefiniti. Ogni "mondo" del gioco è costituito da 10 livelli che utilizzano lo stesso set di caratteri, anche se ogni livello è diverso dall'altro.

Ho disegnato lo sprite principale curando che fosse davvero simile a quello dell'Amiga, ho usato quindi lo sprite overlay.

Mancano soltanto alcune animazioni secondarie, come ad esempio quando si sporge troppo dal parapetto. Per il resto c'è tutto: movimento a destra a sinistra (6 frames per ogni direzione), in basso e in alto (in tutto altri 6 frames). Inoltre è attiva l'animazione "attesa": ovvero se non si muove il personaggio, inizia a battere i piedi e dopo un po' sbadiglia.

Il personaggio si controlla col joystick in porta 2.


Lo scopo del gioco è quello di creare una reazione a catena che, con un solo "push", faccia cadere tutti i mattoncini che si trovano sullo schermo.  L'ultimo pezzo deve essere quello con le tre righe rosse.
I mattoncini  rappresentano il principale problema informatico. Dovendo essere per forza costituiti di sprites bisogna fare che uno sprite contenga 2 mattoncini.

Questo crea parecchi problemi nell'animazione della caduta dei pezzi. La caduta di un pezzo infatti "allarga" di parecchio la posizione dei pezzi e, in pratica, è difficile fare la caduta senza utilizzare sprites addizionali. Ho risolto per fortuna, ed ora la caduta avviene tranquillamente usando 6 sprites ( perchè gli altri 2 sono utilizzati dal personaggio principale).
La tecnica che ho usato prevede che ogni pezzo che cade a terra venga rimpiazzato da un carattere, e che la posizione degli sprites venga aggiornata ogni volta. Questo richiede che quando il numero di pezzi che cade è dispari, si debba ricorrere ad un piccolo escamotage: lo sprite multicolor del personaggio diventa per un piccolo periodo uno sprite che contiene anche un mattoncino.

In conclusione, questo demino permette di vedere come è realizzata la caduta fino ad adesso. E' in funzione il multiplexor che servirà ( ecco perchè ci sono quei pezzi fuori posto un po' più su) e la caduta è attiva. Quello che non si può fare ancora è spostare i pezzi... quello sarà alla prossima preview.

Il limite grosso del fatto di usare gli sprites per i mattoni è che non si possono avere più di 12 mattoncini per ogni linea. Questo determina che alcuni livelli del gioco originale non potrebbero essere realizzati. Stavo parlando con Ian della questione e sperimenterò qualche via nuova per cercare di risolvere il problema.

Fatemi sapere questo "assaggino" come vi sembra:

Pushover Preview 1

 

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Pushover 64
« Risposta #1 il: 20 Febbraio 2006, 11:34:14 »
 Grande Michelangelo! Pushover sul 64!!! quanto tempo ci ho passato sopra su Amiga!!!!!!

Belo bello bello, perfetto lo sprite del personaggio, l'overlay lo rende estremamente definito...  meravigliosa l'animazione dell'attesa.....

attendiamo sviluppi, la preview promette davvero bene!
 
"If you want to become the old figure, use the power of your friendship, and fight me"

ice00

  • Utente
  • **
  • Post: 468
    • http://digilander.iol.it/ice00
Pushover 64
« Risposta #2 il: 20 Febbraio 2006, 20:19:45 »
 Premesso che non conosco il gioco originale, ma per il problema sprite, una soluzione potrebbe essere:
-Tutti i mattoncini verticali sono rappresentati con caratteri
-Quando l'omino li prende e li sposta, questi diventono sprites finchè non sono posati
-Le animazioni vengono fatte ancora con sprite, ma dato che i primi mattoncini spinti completeranno la caduta prima degli ultimi, se si rappresenta anche quelli caduti come caratteri, rimangono sprites disponibili per tutta l'animazione

Ovviamente il codice di gestione si complicherà un pochino

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #3 il: 20 Febbraio 2006, 20:22:28 »
 Che dire.... grazie infinite, spero che quello che verrà fuori vi piacerà.
Dopo aver avuto una conversazione con Ian ho deciso di cambiare radicalmente la visualizzazione dei mattoncini. Essendo precedentemente tutti sprites, c'era questo limite abbastanza pesante di non poter avere più di 12 mattoncini per ogni linea. In più, l'animazione era massiccia e complicata, dato che riguardava contemporaneamente tutti gli sprites. E soprattutto, escludeva la possibilità di avere nel gioco i livelli più avanzati, che hanno a volte anche 16 o 18 mattoncini per linea.

La soluzione sarà quella di cui parlavo con ian: i mattoncini saranno visualizzati da caratteri e l'animazione della caduta sarà fatta alternando sprites a caratteri, con la conseguenza che si possono avere infiniti mattoncini e l'animazione diventa molto più snella e duttile. Purtroppo si avrà una limitazione nei colori dei mattoncini, che non potranno avere più l'ombra arancione e le strisce rosse. Diventeranno semplici mattoncini bicolori, giallo e grigio. E' un sacrificio necessario ( e comunque non è ninte di drammatico) ma così si può davvero pensare di fare una conversione completa e fedele.

Cercherò di postare sul sito un aggiornamento del gioco ogni settimana o due. In ogni caso, qui lo segnalerò ogni volta che aggiungo un nuovo file. A presto!

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #4 il: 20 Febbraio 2006, 20:23:53 »
 Eh eh... mentre scrivevo, stava scrivendo anche Ice00.... Telepatia! :-)

Grazie comunque per aver voluto contribuire alla risoluzione del problema!

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Pushover 64
« Risposta #5 il: 21 Febbraio 2006, 14:03:45 »
 DAI RAGAZZI!!! :metallica:  :metallica:  

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #6 il: 24 Febbraio 2006, 13:56:35 »
 Salve a tutti, sono tornato dall'Inghilterra.

Ho cambiato come avevo detto la visualizzazione dei mattoncini, per fortuna era un lavoro abbastanza veloce. Funziona bene, peccato per l'impoverimento cromatico, ma ora è possibile avere infiniti mattoncini su schermo e per di più con assai minore sperpero di memoria per i frame, minor numero di livelli di multiplex e un aumento ( semmai ce ne sarà bisogno quando ci sarà musica, timer ecc.) della velocità.

Procedo ora ad implementare tutte le animazioni che mancano e la spinta dei pezzi anche a sinistra.

A presto!

Emlyn

  • Neo-iscritto
  • *
  • Post: 37
  • Gioco Preferito: Emlyn Hughes International Soccer
Pushover 64
« Risposta #7 il: 24 Febbraio 2006, 21:53:30 »
 Ciao Michelangelo,
veramente bravo! continui a stupirmi :o
mi dispiace molto che il progetto moonstone si sia fermato  :doh:
speriamo esista qualche grafico "bold and brave" per aiutarti....
insomma ragazzi c'è un gran bel gioco da finire!!!!!!!

Ciao e complimenti  :ciauz:


PS: se hai tempo dai una letta al messaggio su creatures 2... sono ancora bloccato :lol:  

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #8 il: 28 Febbraio 2006, 18:17:06 »
 Grazie a tutti ragazzi, i complimenti sono sempre mooolto graditi.

Ho messo sul sito un'altra preview.

Ora, come avevo annunciato, c'è interazione tra caratteri e sprites, ancora non tuttissimo è a posto con l'aggiornamento dello sfondo, ma concettualmente la routine è fatta.  Noterete l'impoverimento dei colori dei pezzi, ditemi cosa ne pensate.. a me non sembra una tragedia, in più questo è l'unico modo per avere tonnellate di pezzi su chermo!

Aggiunte fatte:

- ora si possono spingere i pezzi anche a sinistra.

- ho cambiato il carattere del pezzo "caduto", mi sembra migliore, e per di più ora è differenziato a seconda che cada un pezzo normale o uno con le righe.

- ho messo l'animazione del "cado di sotto", ovvero provando ad avvicinarsi ai lati della piattaforma il personaggio cerca di non cadere giù, ma se si continua ad andare verso il baratro cade.

- ho avuto di problemini di sfarfallio dei pezzi che cadono, mi sembra che la situazione ora sia meglio.

- ho messo una musica di sottofondo. La musica è fregata da un editor musicale, mi serviva mettere una musica già pronta per vedere se il gioco con una musica di 3 k rallenta... con poche modifiche, mi sembra che la velocità sia immutata.

- Il multiplexor è ancora attivo, anche se ho tolto i pezzi in più... in realtà non so se mi servirà per il gioco, devo controllare se può capitare nei livelli avanzati di attivare più di 6 reazioni a catena contemporaneamente... vabbè in caso io lo sto programmando perchè regga un multiplexor di questo tipo.

Più o meno questo è quello che ho fatto in questi 10 giorni, i prossimi interventi riguarderanno il poter prendere i pezzi e spostarli, e inserire il tempo.

Per fortuna già ho implementato che le variazioni di posizioni di pezzi dipendano dai valori contenuti un array, e basta. La routine funziona  in modo che, avendo solo l'array con i pezzi, vengano automaticamente scelti i caratteri idonei e gli sprites della caduta vadano giù (spero) correttamente.

Fatemi sapere se trovate bugs o qualsiasi impressione,e a presto!



 

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #9 il: 08 Marzo 2006, 20:41:35 »
 Sto lavorando per far sì che la prossima demo che metterò on-line sia direttamente il primo livello, completo e giocabile.
 Ho fatto un errore di impostazione mentre facevo l'animazione di tutto quello che la formichina fa quando prende un pezzo, lo posa o lo sposta. Avevo pensato (ingenuamente) di fare l'animazione con uno sprite che avesse disegnato la formica e il pezzo. Ebbene, non se po' ffa così! Infatti tutte queste animazioni (prendi, posa, cammina) costituiscono 30 frames ( ovvero 60 sprites), ma i tipi di mattoncini sono 9. Sarebbe quindi una follia mettere in memoria 60* 9 = 540 sprites, che occupano la bellezza di $8700 bytes!

La soluzione che userò (perchè tra l'altro mi facilita anche l'animazione della "caduta da burrone con pezzo") è quella di fare l'animazione con uno sprite A PARTE con il pezzo, così mi bastano i 30 frames base per fare tutto. Si potrebbe alternativamente anche fare una ORA ogni volta tra il frame multicolor della formica e quello del pezzo, ma per adesso mi sembra un po' cervellotico. Inoltre per la "caduta da burrone con pezzo") serve st'altro sprite, non ci sono santi.

Spero di finire questo primo livello in un tempo ragionevole, dipende anche quello che ho da fare in questi giorni... boh, forse in una settimana ce la faccio. Poi, anche se ogni livello ha degli elementi in più, le cose andranno un po' più velocemente perchè la base del codice, la "colonna vertebrale" è stata fatta.

A presto!    

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #10 il: 21 Marzo 2006, 11:05:24 »
 Ciao a tutti amici,

ho avuto una marea di cose da fare in questi giorni; in più ho avuto una torsione del polso in seguito ad un incidente casalingo e ho avuto dei problemi, per cui non ho avuto molto tempo per andare avanti con pushover.
E' inutile che posti qualcosa adesso, continuo a preferire l'idea di mettere online direttamente il primo livello quando sarà pronto anche nei suoi dettagli ( ad esempio far sì che quando un pezzo va oltre il "pavimento" cada anche lui come la formichina).
Comunque ho attivato la presa, lo spostamento e la posa dei pezzi. Ora è possibile muovere i pezzi a piacimento e quando poi si attiva la caduta cade tutto correttamente.
Inoltre ho fatto una routine di controllo di $d010 migliore di quella cher c'era prima, in questo modo risparmio un bel po' di memoria.

Credo che per finire il livello ci vorrà ancora un po', anche perchè il fine settimana starò fuori... vabbè spero comunque di finirlo presto.

C'è qualcuno di voi che eventualmente si fa avanti per comporre una musichina??

Fatemi sapere... a presto

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #11 il: 23 Marzo 2006, 16:50:42 »
 Sto davvero a buon punto, tutte le azioni ora sono attive e in pù i pezzi possono anche cadere di sotto, come l'originale... sto ora facendo la schermata di help, attivabile con f1, che prticamente crea una finestra che si sovrappone alla schermata di gioco... è un po' lunga da disegnare (perchè sono lento io a disegnare) ma finito questo e abilitato il tempo il livello si può dire conluso finalmente!

A presto

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Pushover 64
« Risposta #12 il: 23 Marzo 2006, 22:03:30 »
 Un grosso incoraggiamento per il rush finale della prima manche allora :-)

Ciao!
C= - Dal 1985! Lunga vita e prosperità.

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Pushover 64
« Risposta #13 il: 24 Marzo 2006, 09:45:23 »
 Sono proprio curioso di vedere cosa ne salta fuori...forza pippo79!! :D  

pippo79

  • Utente
  • **
  • Post: 315
    • http://www.michelangelocarbonara.it
  • Gioco Preferito: last ninja 2
Pushover 64
« Risposta #14 il: 04 Aprile 2006, 17:17:11 »
 Ho postato il terzo demo.

Pushover Prw 3

Praticamente il primo livello è giocabile, anche se qualche bug sicuramente ci sarà. Se lo provate un pochino e poi mi fate sapere gli errori che trovate ve ne sarò grato.

Sono contento di aver messo su quasi tutto quello che fa l'Amiga, comprese tutte le animazioni secondarie che fa la formichina a seconda della situazione in cui si trova e le finestre informative. L'unica cosa a cui per ora ho rinunciato è la visualizzazione del tempo in sovrapposizione (fatta quindi con sprites) a favore di una normale visualizzazione con caratteri: mi sembrava proprio uno spreco eccessivo di memoria, ditemi voi se sembra troppo cheap così... E naturalmente non ci sono ancora gli effetti sonori. E ribadisco che se a qualcuno interessasse curare la parte audio del gioco sarebbe per me una notizia stupenda..

vi rammento le regole per finire il livello: bisogna mettere i pezzi in modo che CON UNA SOLA SPINTA cadano tutti e il pezzo "rigato" cada per ultimo.
Ho disposto i pezzi in questo modo (nel reale primo livello in realtà la disposizione era un'altra) così che sia possibile fare la "spinta" dei pezzi sia da sinistra che da destra, così da poter testare il gioco in modo più completo.

Tasti attivi durante il gioco:
F1: mostra la schermata di help
Q: permette di riniziare il livello se si è sbagliato qualcosa, oppure di uscire del tutto dal gioco (per ora è un banale JMP $FCE2)

A presto, aspetto vostre impressioni e segnalazioni di bugs!

P.S. Ho già trovato un errore: se spingete un pezzo verso sinistra e subito dopo aver avviato la spinta premete di nuovo fire si materializza un pezzo e la formichina lo prende!
E vabbè, nessuno è perfetto!