Autore Topic: Q Game  (Letto 3356 volte)

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Q Game
« il: 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

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
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!!
 
"If you want to become the old figure, use the power of your friendship, and fight me"

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2418
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
Q Game
« Risposta #1 il: 10 Dicembre 2006, 15:09:06 »
 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.
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Q Game
« Risposta #2 il: 10 Dicembre 2006, 19:38:14 »
 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:  
C= - Dal 1985! Lunga vita e prosperità.

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Q Game
« Risposta #3 il: 11 Dicembre 2006, 01:53:51 »
 
Citazione da: "albman"
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.
C= - Dal 1985! Lunga vita e prosperità.

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Q Game
« Risposta #4 il: 11 Dicembre 2006, 10:58:36 »
 
Citazione
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:
Codice: [Seleziona]
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.

Citazione
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
"If you want to become the old figure, use the power of your friendship, and fight me"

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2418
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
Q Game
« Risposta #5 il: 11 Dicembre 2006, 21:24:31 »
Citazione da: "albman"

Citazione
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  
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Q Game
« Risposta #6 il: 11 Dicembre 2006, 21:39:14 »
 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.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Q Game
« Risposta #7 il: 12 Dicembre 2006, 20:48:41 »
 
Citazione da: "iAN CooG/HF"
Rob dice bene. Suonare una musica da basic tramite read+poke e' da suicidio
:)  Dai ragazzi, non sono mica così  :fagiano: del tutto. :P
C= - Dal 1985! Lunga vita e prosperità.

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Q Game
« Risposta #8 il: 29 Dicembre 2006, 21:34:35 »
 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 :)




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
"If you want to become the old figure, use the power of your friendship, and fight me"

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Q Game
« Risposta #9 il: 05 Febbraio 2007, 00:15:23 »
 Eccoci! ci siamo! come annunciato nella sezione news, il Qgame è finito, ed è stato rilasciato

Qgame

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!

 
"If you want to become the old figure, use the power of your friendship, and fight me"

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Q Game
« Risposta #10 il: 13 Febbraio 2007, 23:09:17 »
 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.
C= - Dal 1985! Lunga vita e prosperità.

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Q Game
« Risposta #11 il: 13 Febbraio 2007, 23:33:08 »
 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
"If you want to become the old figure, use the power of your friendship, and fight me"

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2418
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
Q Game
« Risposta #12 il: 13 Febbraio 2007, 23:39:46 »
Citazione da: "albman"
la versione fixata è già al suo posto...
Online da ora.
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Q Game
« Risposta #13 il: 13 Febbraio 2007, 23:46:54 »
 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  ;)
C= - Dal 1985! Lunga vita e prosperità.

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Q Game
« Risposta #14 il: 14 Febbraio 2007, 02:17:51 »
 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 ;)  
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -