Ready64 Forum
Commodore 64 => Programmazione, Grafica e Musica => Topic aperto da: albman - 10 Dicembre 2006, 03:48:39
-
I felici possessori del cellulare SonyEricsson T68i sapranno che tra i giochi di questo telefono si trova (non in tutte le versioni del firmware pero') un puzzle-game dal nome inspiegabile: Q-game
Io l'ho giocato a lungo, è un gioco semplice ma non banale, e spesso mi ha fatto compagnia durante viaggi in treno, file negli uffici e attese di vario genere :)
Molti mesi fa ho realizzato un retroporting per C64 di questo puzzle,rigorosamente in basic e usando i chars. D'altra parte non so fare di piu', e il gioco di piu' non richiedeva :)
Mi sono reso conto che da mesi ormai, per i motivi piu' vari, lo sviluppo è fermo e non procede. Pertanto, dato che il "core" del gioco c'e' tutto ed è ben funzionante, rilascio questa preview, con tutti i suoi limiti.
Il gioco originale ha 60 schemi, l'intenzione era di editarli tutti. Ero arrivato ben oltre la metà, quando un crash del mio HD (no backup? no party!) mi ha fatto perdere le ultime versioni. Ho recuperato solo una copia che arrivava al 15° schema, che è appunto la preview che sto rilasciando.
Il programma è "sporco", ridondante, suscettibile di varie ottimizzazioni, tutte pronte nella mia mente :=)
Gli schemi sono disegnati con banali print"stringa", non sono sicuro sia il metodo migliore in termini di memoria occupata, ma sicuramente è quello piu' semplice quando li devi editare. Ci sono altri sprechi di memoria e di processore grossolani, certe variabili vengono processate e confrontate inutilmente ripetute volte, quando sarebbe bastato un "ON X GOTO" per semplificare il tutto. Fate finta di non vedere questi ed altri particolari e concentratevi sul risultato!
Comunque l'obbiettivo -quando avro' piu' tempo- è quello di ultimare i 60 schemi e ottimizzare il listato, piu' altre cosucce minori
Non guasterebbe poi una bella compilazione e una musichetta di sottofondo, ma per queste cose non sono assolutamente autonomo per cui le lascio a livello di possibilità.
Le istruzioni sono semplici, usate il mirino per lanciare (fire+direzione) tutte le palle colorate nelle rispettive buche. Usate il tasto UNDO per annullare l'ultima mossa, START per ricominciare lo schema da capo, EXIT per tornare al menu' iniziale. Joy in porta 2.
Provatelo e ditemi cosa ne pensate. La preview la trovate per il momento nella pagina upload di ready64:
Qgame preview (http://ready64.altervista.org/upload/files/QGAME15PREV.zip)
purtroppo superava i 3k permessi dalla funzione di upload del forum....
P.S.
Non sono riuscito a scoprire chi sia l'autore del Qgame originale, gli avrei riconosciuto i dovuti crediti nella schermata iniziale.
Graziosa questa versione flash
http://www.mathsnet.net/puzzles/qgame.html (http://www.mathsnet.net/puzzles/qgame.html)
l'autore è un ragazzo greco, Nick Kouvaris; dato chè è un 64ista anche lui,gli ho mandato una mail con la preview e gli ho segnalato ready64... Rob, se si registra un utente greco sul sito è merito mio!1!!!111!!
-
Peccato per la perdita dei livelli...
io comunque ti rinnovo la mia disponibilita' nel realizzare una schermata introduttiva o comunque un loghetto semplice per arricchire il gioco.
Penso di potermela prendere comoda visto che mancano ancora 45 livelli, no? :)
Per il resto penso anche io ritengo che il gioco possa avere notevoli margini di miglioramento.
A parte l'ottimizzazione del codice, il logo e la musichetta che citavi tu, si potrebbe ad esempio usare un set di caratteri ridefiniti per la grafica (potrebbe servire a dare un riflesso alle palline, per esempio).
E magari alla fine anche una piccola end-sequence in basic, come ricompensa per il giocatore.
-
E' un bel programmino, ottimizzandolo dovrai puntare senz'altro a moderare l'avanzamento a scatti del puntatore, adesso un pò eccessivo. La cosa più importante sarà poi ..."sessantaquattrizzarlo" (perdonami l'orrido termine) nel confezionamento, in tal senso Roberto ha già indicato la via, e se avrò qualche buona idea ti offro la mia disponibilità volentieri anche io.
:ciauz:
-
Non guasterebbe poi una bella compilazione e una musichetta di sottofondo, ma per queste cose non sono assolutamente autonomo per cui le lascio a livello di possibilità.
Mi è venuta un'idea per una musichetta di sottofondo, non sono affatto un musicista, ma spero con pazienza di riuscire a trasferire sul C64 quello che ho in mente in maniera apprezzabile. Se tutto va bene ti faccio sapere qualcosa prossimamente.
-
ottimizzandolo dovrai puntare senz'altro a moderare l'avanzamento a scatti del puntatore, adesso un pò eccessivo.
L'avanzamento a scatti è dovuto al fatto che il puntatore si muove di 8 pixel (per passare da una cella carattere all'altra) con un ciclo FOR....NEXT "pulito" cioè senza nessuna altra istruzione in mezzo oltre la POKE che posiziona lo sprite. A questo punto avviene nuovamente la scansione del Joy, il calcolo della posizione del puntatore e la verifica di alcune variabili (per esempio si controlla se il puntatore è arrivato a bordo schermo) e si riparte con un FOR...NEXT e ci si sposta di altri 8 pixel. Ecco il perchè il movimento appare scattoso.
Effettivamente pero' ad ogni ciclo di 8 pixel il Joy viene scandito nelle sue 4 posizioni in questo modo:
IF JOY = nord THEN....
IF JOY = sud THEN....
IF JOY = ovest THEN....
IF JOY = est THEN....
quindi nella peggiore delle ipotesi (cioè che la posizione del Joy attuale sia ES)T il rallentamento è massimo, dato che i controlli vengono eseguiti tutti e quattro.
Potrei in effetti copiare il valore della locazione del Joy in una variabile; dopo lo spostamento di 8 pixel verificare se questa variabile è cambiata con unico IF...THEN e in caso negativo ripetere lo spostamento. Si risparmierebbero un po' di istruzioni.
Tuttavia gli altri controlli di posizione puntatore sono inevitabili dopo uno spostamento di 8 pixel, su questo punto c'e' poco da ottimizzare.
Tempo fa iAN mi aveva gentilmente compilato una delle prime versioni, e naturalmente il puntatore schizzava via alla velocità della luce, tanto da richiedere di sicuro un rallentamento. Quindi in una versione compilata basterebbe rallentare un po' il ciclo FOR..NEXT che si occupa dello spostamento di 8 pixel, e naturalmente non rallentare tra un ciclo e l'altro. Questo porterebbe sicuramente ad un movimento piu' fluido.
Per il momento mi limito a ottimizzare il discorso della scansione del Joy, appena lo faccio posto il risultato.
Mi è venuta un'idea per una musichetta di sottofondo, non sono affatto un musicista, ma spero con pazienza di riuscire a trasferire sul C64 quello che ho in mente in maniera apprezzabile. Se tutto va bene ti faccio sapere qualcosa prossimamente.
Sei il benvenuto :mattsid: chiunque possa aggiungere qualcosa di concreto a questo giochillo si metta al lavoro e lo faccia. Io da parte mia mi dedichero' per il momento SOLO a terminare i livelli, ottimizzazione e alcune modifiche minori. Quindi fatevi avanti con modifiche o aggiunte belle e pronte :D
-
Mi è venuta un'idea per una musichetta di sottofondo
Sei il benvenuto :mattsid:
Leggo "musica di sottofondo", pero' in quel caso credo che dovrebbe essere realizzata in ASM, altrimenti hai voglia ad ottimizzare lo spostamento del cursore. :)
Correggetemi se sbaglio
-
Rob dice bene. Suonare una musica da basic tramite read+poke e' da suicidio, non resta il tempo di fare altro. L'ideale e' realizzare una musica tramite un comune tracker, rilocarla in uno spazio libero lasciando sufficiente memoria per le variabili basic proteggendo l'area in cui si trova la musica, e per suonarla in sottofondo una piccola routine in asm che installi in IRQ il player.
-
Rob dice bene. Suonare una musica da basic tramite read+poke e' da suicidio
:) Dai ragazzi, non sono mica così :fagiano: del tutto. :P
-
Qualche rilevante novità sul progetto Qgame.
Già da un po di tempo iAN mi aveva fatto notare che la memoria non sarebbe bastata per contenere tutti e 60 i livelli previsti, perlomeno non con il sistema utilizzato dei PRINT "stringa". A questo va aggiunto che la maggior causa di stallo dell'avanzamento era proprio il macchinoso sistema di editing dei livelli; scrivere spazi, caratteri grafici, caratteri di controllo cursore, colore e reverse on/of tra le virgolette di un'struzione PRINT è macchinoso e l'errore è sempre dietro l'angolo.
Oltre che trovare il problema iAN lo ha anche risolto :) creando delle routines in ASM dedicate all'editing e alla visualizzazione dei livelli; e stato cosi' possibile editare i livelli direttamente a video usando il semplice (e soprattutto rapido) editor del basic; depositarli opportunamente in memoria e infine visualizzarli da basic con una chiamata alla routine di visualizzazione.
In definitiva si sono risolti 2 problemi in una sola volta: lo spazio insufficente in memoria, e la mia lentezza nel realizzare i livelli :)
Il risultato è che ora sono pronti tutti e 60.
Nel frattempo Rob si è occupato della grafica realizzando un font dedicato e dei chars originali e molto gradevoli da sostituire alle palline e allo spazio-reverse originali. Giudicate voi il risultato, a me piace molto :)
(http://digilander.libero.it/iANCooG/QgameOld.png)
(http://digilander.libero.it/iANCooG/QgameNew.png)
La parte basic necessita ancora di alcune modifiche prima della compilazione finale, come detto c'e' da lavorare sulla fluidità del movimento del puntatore; inoltre chi ha provato la demo avrà notato che il puntatore dopo una mossa rimane nella posizione di partenza della pallina; nel gioco originale invece la segue andando a riposizionarsi pronta per un eventuale ulteriore lancio della stessa biglia. Non so quale delle due soluzioni sia piu' ragionevole, sono graditi pareri.
Al momento non sono in grado di fare previsioni sui tempi, ma possiamo dire che una versione definitiva del Qgame verrà alla luce.. i presupposti ci sono!
Infine un grazie a CBM che ha creato una musichetta gradevole da usare come sottofondo in-game; purtroppo pare che non potra' trovare posto nel gioco finale, per problemi tecnici di spazio in memoria e di non rilocabilità del player, peccato.
A presto
-
Eccoci! ci siamo! come annunciato nella sezione news, il Qgame è finito, ed è stato rilasciato
Qgame (http://www.ready64.altervista.org/hosted/papposoft/software/qgame/index.php)
Vi do' qualche dettaglio tecnico su cosa abbiamo aggiunto in questo ultimo mese di lavoro.
Innanzitutto la visualizzazione degli schemi (come già anticipato) viene gestita da apposite routines in asm realizzate a iAN; questo ha consentito oltre che un editing piu' rapido, una compressione degli stessi e, in definitiva, è stato cio' che ha consentito di farli stare tutti e 60 in memoria. Ancora routine in asm per leggere la tabella che contiene il numero di palle relativo ad ogni schema (si è evitato cosi' di usare un voluminoso array) e per il lampeggio del mirino.
Ci sono state poi una miriade di ottimizzazioni della parte basic (tutti o quasi i codici di movimento cursore sono stati eliminati usando l'apposita routine del kernal per il posizionamento dello stesso) e tanti altri piccoli accorgimenti.
Ora il gioco beneficia di un sistema di gestione password-livello con relativa "tastiera" virtuale per la digitazione, di schermata intermezzo tra un livello e l'altro e di un FAVOLOSO :sonno: end-screen per gratificare chi supera il fatidico 60° schema.
Per quanto riguarda la grafica e il font di Rob c'e' poco da commentare, nel senso che celi avete davanti agli occhi :mattsid: e come potete vedere hanno migliorato in maniera radicale un gioco che era nato con i semplici caratteri del font standard.
Analogo discorso per la musica di TSM, ma al posto degli occhi usate le orecchie
:P
Ultimo particolare, la parte basic è stata compilata col Blitz compiler, che ha fatto egregiamente il suo lavoro; tutto il lavoro di linking delle varie parti di programma, e la crezione del D64 è stato curato da iAN
Attendiamo commenti, giocatelo!
-
Mi sono accorto poco fa di un particolare fuori posto, da correggere, nella lista delle lettere dell'alfabeto per la pass.
Faccio un esempio: al posto in cui dovrebbe esserci la W trovo X, lo scelgo ed ottengo W.
Più precisamente è il terzetto di lettere W X Y che è stato trascritto erroneamente come X Y W, per cui si ottiene il risultato dell'esempio.
-
Ma tu, non avevi altro da fare che andare a premere sulle ultime lettere? se le abbiamo messe in fondo ci sara' un motivo, no?
:D
Grazie per la segnalazione CBM, era per fortuna un semplice errore nella disposizione a video, che è stato prontamente corretto, la versione fixata è già al suo posto...
Dato che ci siamo ci piacerebbe sapere, da chi sta giocando il puzzle, a quale schema siete arrivati..... fatevi avanti e non raccontate balle :P
-
la versione fixata è già al suo posto...
Online da ora.
-
Confesso... io per ora sono bloccato al 13.
P.S. - Albman, qualcosa mi dice che la pass per accedere al sesto livello l'hai scelta tu ;)
-
Il 13 mi ha tenuto impegnato per diversi giorni, poi qualcuno da lassu' (o da laggiu') mi ha mandato un po' di neuroni freschi e ci sono arrivato. Forse ora ho meno anni di vita a disposizione ma ne e' valsa la pena. :lol:
Se vuoi posso postare un playback history per vice per vedere come lo ho risolto.
Ah, le password le ha comunque scelte tutte albman ;)
-
Grazie lo stesso per l'offerta d'aiuto. Per la serie come ho fatto a non pensarci prima, più tardi sono riuscito a passare il 13, quindi è andato tutto liscio fino al 21, dove mi sono di nuovo impantanato; ma ormai era troppo tardi e ho lasciato perdere. Ma alla fine capitolerà anche lui!
Non vedo l'ora di raggiungere l'ultimo livello, sono proprio curioso di vedere cosa avete escogitato per il finale
:ciauz:
-
come detto da iAN, le pass le ho scelte tutte io; sono andato "sentimento" senza un filo logico particolare... effettivamente quella del 6° ci tenevo che non mancasse :)
Io non mi metto li' a dire dove sono arrivato, anche perchè se lo facessi sarei costretto a ripetermi e a dire che sul cellulare li ho finiti tutti :D
Scherzi a parte lo dico solo per assicurare che sono tutti finibili; infatti in alcuni schemi particolarmente tosti sono stato piu' volte sul punto di lasciar perdere pensando che forse il programmatore aveva messo palline e buche a casaccio senza verificare che lo schema fosse realmente risolvibile... strana la mente dell'uomo, pronta a giustificare un proprio limite ipotizzando errori altrui :doh:
-
Sembrava non finisse mai, ma ora che sono arrivato al termine, quasi quasi mi dispiace.
La gratifica finale è all'altezza del gioco, bella scoppiettante B) e avendo ormai visto tutto posso dire a maggior ragione che è venuta fuori una bomboniera di gioco, per cui rinnovo i meritati complimenti.
Alcuni livelli sono abbastanza tosti, tipo il 54, però più si va avanti e più si acquisisce una certa esperienza che rende più agevole la soluzione rispetto all'inizio, quando livelli più facili sembravano più ostici del dovuto.
p.s. - Ma dove sono i commenti di tutti i giocatori? Su, su, sollevate gli occhi da qgame per un attimo e fate sapere cosa ne pensate, così convinciamo albman a realizzare altri 60 nuovi livelli :)
-
E' davvero una soddisfazione che qualcuno lo abbia giocato sino alla fine, grazie CBM :).
Puoi passare a ritirare il premio negli uffici Papposoft dal lunedi' al venerdi', orario ufficio. :D
E' vero i livelli aumentano di difficoltà ma man mano che si procede si imparano alcune tecniche, prima tra tutte quella di far "girare le palle" :) nel senso che due biglie racchiuse in un area si possono muovere alternativamente nella stessa direzione, oraria o antioraria, guadagnando ad ogni giro lo spostamento di una posizione....
Sicuramente non sono stato chiaro, ma chi ci sta giocando ha capito :)
Per quanto riguarda il creare nuovi livelli... non so se sia facile. Non dico tecnicamente, anzi per come è concepito il gioco sarebbe semplice disegnarli e includerli al posto dei vecchi. Dico proprio da un punto di vista "creativo", bisognerebbe provare, e io non l'ho fatto. Credo comunque che non sia immediato ideare un livello risolvibile e allo stesso tempo non banale....
Diciamo che il Qgame2 non è al momento in programma :nonono: