|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Info su progetto
Ciao a tutti, vorrei avere informazioni sul progetto in questione, su cos'è, di cosa/chi avete bisogno e tutte le informazioni tecniche e non che potete darmi, in moda da farmi un'idea sul fatto che io possa o meno aiutarvi(sempre che abbiate ancora bisogno di membri per il vostro team), le uniche cose che so sono che si tratta di un'avventura 2D sviluppata interamente in Java.
Grazie. |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
intanto qui se vuoi puoi scaricarti la First Playable Version:
http://sourceforge.net/project/showf...kage_id=224755 |
|
|
|
|
|
#3 | ||||||
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4739
|
Quote:
Quote:
ognuno controlla la coppia di gemme e/o bauli (e se mai si riuscirà a reintrodurre una modalità avanzata, eventuali oggetti di altro tipo) che cade nella propria griglia di gioco - le gemme base si accumulano in griglia, e vengono eliminate con i bauli dello stesso colore, un' eliminazione ( "crush" ) di almeno due gemme fa partire un attacco diretto alla griglia avversaria, sotto forma di Stones (che dopo aver occupato la griglia per alcuni turni si trasformano in gemme ) ma a parte ciò, Diamonds può essere (anzi, andrebbe) considerato una palestra, e un esempio, di sviluppo Test Driven Object Oriented (con uso abbastanza intenso di design patterns di base) Test Driven, e con il meno possibile di commenti nel codice (pressochè superflui se il codice è autoesplicativo e racchiuso in metodi di lunghezza e complessità ciclomatica ridotte) Quote:
Eclipse, l' IDE con i più evoluti (almeno all' avvio del progetto e tra i tool disponibili gratuitamente) strumenti di refactoring, e code assist ( almeno per java) per l' integrazione di eclipse con l' infrastruttura di unit testing (junit, pressochè vitale per il TDD ) e tramite un plugin, con il repository subversion Quote:
nello specifico, di qualcuno che voglia darsi una letta alla code base, rendersi conto dello stato attuale della test coverage (selezionando il task cover-report nelle opzioni "Run..." della build Ant, in Eclipse) e di come affrontare alcuni problemi di lunga data (ad esempio il refactoring di BigGem, che avrebbe fatto sì che le gemme aggregate siano viste allo stesso modo delle altre Droppable, che io sappia non è più stato terminato perchè chi lo intraprendeva si scontrava con il design di quella parte di codice) in effetti, ci sarebbero anche caratteristiche il cui studio e sviluppo potrebbe procedere a latere, come il gioco via rete ... Quote:
http://www.hwupgrade.it/forum/showthread.php?t=1017489 per quanto riguarda struttura e funzionamento del gioco, credo la risposta più coerente con lo spirito del progetto e che ti avrebbero dato i membri storici del team sia all' incirca "il codice stesso fornisce la documentazione"... in effetti la documentazione "ufficiale" si è sempre limitata all' essenziale, a un development plan con le funzioni da implementare nella release ( ma temo non sia più stato aggiornato dall' interruzione dei lavori avvenuta l'anno scorso), perchè la codebase essendo soggetta a refactoring continuo, era troppo "volatile" per documentarla esaustivamente ciononostante credo di poter dire che da allora si sia relativamente stabilizzata, e la struttura dei package dovrebbe aiutare nella comprensione... comunque, come punto di partenza, considera che l' entry point è nella classe Game, la quale in sostanza istanzia un oggetto GameLoop e ne usa i (due) metodi di loop a parte il thread della musica di sottofondo (che però gestiamo solo tramite chiamate playMusic() e stopMusic() dal gameloop alla sezione audio dell' engine, quindi non esplicitamente ) il gioco è praticamente un ciclo di polling con stati, action ed eventi il polling itera sulle Droppable presenti in griglia chiamandone il metodo update() (gestire il comportamento delle Droppable, quindi ad es cambiare sprite, è delegato a loro stesse) con lo stato attuale del Timer come argomento (notare che il Timer in Diamonds se non ricordo male va aggiornato esplicitamente o spostato in avanti di un numero arbitrario di millisecondi, prima che una nuova chiamata a getTime() possa restituire un valore diverso dalla precedente) gli stati sono quelli in cui si viene a trovare la Grid dopo l' inizio della partita, partendo da un oggetto GemspairOnControlState - questo stato cede il controllo a uno che non gestisce la gempair in gioco (in effetti non c'è più nessuna gempair in gioco ) nè l' input, quindi al termine della caduta della pair il gioco "si ferma" per un attimo per controllare se ci sono delle crush da eseguire (controlli ed azioni operate tramite oggetti che ereditano da AbstractGridIteration e implementati nel package it.diamonds.grid.action), dopodichè si riprende da un nuovo gempaironcontrolstate, in pratica marcando un nuovo turno gli eventi generati dai comandi utente sono gestiti da un Input associato al playfield del singolo giocatore ( primo o secondo ) - questo fa da tramite tra un dispositivo di input "concreto" (meglio, la sua classe proxy) su cui si registra come listener, e degli event handler , inoltre traduce gli eventi provenienti dalla classe dell' input device di cui sopra, in eventi target standard (questo era stato introdotto in vista della personalizzazione dei tasti) i test: osservando la strutturazione dei subpackage sotto it.diamonds.test.* , dovrebbe essere abbastanza chiaro a quali classi del codice vero e propri si riferiscono quali test ... è però da tenere presente che i test case possono non essere comprensibili come forma e come requisiti del codice che testano, inoltre la copertura andrebbe migliorata (alcune classi sono scarsamente testate) - per questo motivo tempo fa avevo proposto un sub task di revisione e report dei test, su cui poi lavorare ( l' obiettivo sarebbe renderli più consoni ai canoni e allo spirito del progetto - quindi i test, oltre a coprire adeguatamente il codice avrebbero dovuto essere concisi, atomici, autoesplicativi, manutenibili) il volonteroso redcloud aveva prodotto un documento preliminare, che chi ha iniziato a seguire ha aggiunto al repository, con l' avviso di aggiornarlo insieme ai test modificati Quote:
personalmente stavo portando avanti nel tempo libero l' integrazione del Controller (aka joypad) , purtroppo sto per partire per non tornare nei pressi di una postazione internet-connessa prima di un mese, quindi non avrò modo di seguire il progetto e mi toccherà nominare un sostituto a cui fare riferimento .... chi sarebbe disponibile? Raffaele? quindi sì, di nuovi membri ci sarebbe sempre bisogno, posto che ribadisco, siano interessati ad entrare nell' ottica ...
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 26-07-2007 alle 01:48. |
||||||
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Grazie per la tua risposta che, devo dire, è stata molto chiara ed esplicativa, ti dirò quello che ho capito e quello che posso fare:
intanto ho capito che il titolo non è molto dissimile dai vari bejeweled/puzzle games(anzi, credo che l'idea vi sia venuta proprio da lì), eccetto che per alcuni particolari... dovrei avere abbastanza dimestichezza con tutti i concetti da te citati eccetto per l'uso di server proxy e l'interfacciare i client per giocare in rete(dovrebbe essere comunque abbastanza semplice in java) ma credo che l'abbiate già fatto dato che vedo anche alcuni pacchetti scaricabili, mi duole notare(senza voler offendere o mancare di rispetto ad alcuno) che, causa impegni vari di ognuno di voi, il progetto procede a rilento e comunque abbastanza male organizzato(se non è così mi sono sbagliato ma meglio così). Quello che posso fare io per il momento è portare il gioco nel pc che uso anche per programmare e studiarmi un pò il codice, anch'io uso Eclipse, comunque, anche se prendessi parte al progetto non potrei dedicarvi molto tempo dato che studio per laurearmi(in informatica) possibilmente ad Aprile, considerate che stò studiando anche d'estate, ma impiegherei volentieri quell'oretta serale che usualmente uso per videogiocare, per il progetto in questione... |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Ciao, benvenuto tra noi
|
|
|
|
|
|
#6 | |||||||||
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4739
|
Quote:
Quote:
ah piccolo inciso - quando lo sviluppo procedeva a regime (quando potevamo dire di lavorare in extreme programming , anche se fisicamente distanti) e come ti accorgerai se esplori questa sottosezione leggendo anche i thread più vecchi di un anno, si lavorava seguendo: un coach che faceva rispettare le coding guidelines, minacciando di "spezzare le ditine" a chi osasse committare modifiche non testate o rompere la build (build rotta se ant fallisce in uno qualunque dei suoi task, cioè l' esecuzione della batteria dei test, e il checkstyle programmato secondo criteri stretti - ma se leggendo il codice ti apparirà chiaro è merito del rispetto di quei criteri, come è colpa del suo mancato rispetto qualora non ti sembri) e un customer ("cliente") che indirizzava lo sviluppo esponendo i "comportamenti desiderati" del gioco, dalle cui descrizioni si pianificavano i task svolti dai membri programmatori , facendo solitamente seguire ogni tornata di task da un esaustivo controllo e refactoring completando quindi un "ciclo" - in più il nostro customer era anche il reponsbile grafico, quindi... Quote:
Quote:
il fatto è che nel caso del gioco via rete, non è stato definito formalmente il protocollo di comunicazione ( a livello algoritmico, figurarsi binario) tra due sessioni di gioco attive ( o magari *in attesa* di connessione dell' avversario sfidante) quindi per aggiungere la funzionalità di network gaming rispettando lo spirito del progetto si dovrebbe partire dalle basi, e procedere a piccoli passi... questo scrivendo volta per volta i requisiti funzionali in forma di test ovunque possibile ( e mockando laddove non possibile testare direttamente) e programmando nel modo e per il caso più semplice per poi eventualmente aggiungere e correggere cumulativamente una task list esemplificativa, sicuramente passibile di raffinamenti qualora il customer passi da queste parti, potrebbe essere: - far sì che da menu siano selezionabili le opzioni "join game" e "host game" - far sì che selezionando join game si mandi un messaggio di "join" all' host remoto in lan indicato da OpponentAddress in GameConfig (inizialmente indirizzo statico modificabile editando il file di testo ) - far sì che selezionando host game il gioco resti in attesa del messaggio di join da parte di un avversario sulla stessa lan - far sì che ricevuto il messaggio di "join" si invii un messaggio di conferma e inizio partita - far sì che in entrambi i casi la seconda griglia sia associata al giocatore remoto invece che al dispositivo di input - eccetera Quote:
al tempo stesso, a un certo punto il codice e la batteria dei test hanno cominciato a diventare complessi e convoluti in più punti, rendendo impossibile procedere per Cicli > "Storie" > Task al ritmo serrato (*) iniziale conta che ogni ciclo durava in media una settimana o due e comprendeva 5 -6 task , svolti ognuno in breve tempo secondo la procedura: [analisi dei requisiti del task e stesura della Test List > scrittura dei test ( uno alla volta) > scrittura del codice più semplice che fa passare il test ] finchè i test della test list non sono stati tutti scritti e fatti passare dal codice, (barra verde in junit, build successful in ant - > commit solo a questo punto) per poi rifattorizzare il codice prodotto una volta finito il task con del codice semplice Quote:
ma siccome il senso di adottare e costringersi a seguire una coding guideline rigida come quella era avere alla fine codice di alta qualità comprensibile a tutti, compreso con un minimo sforzo anche chi non vi era mai venuto in contatto prima, laddove non sia chiaro questo obiettivo non è stato centrato quindi se contribuissi sul forum le tue impressioni sulla code base sarebbe già un buon contributo Quote:
Quote:
la cosa che meno vorremmo (parlo per me ma credo gli altri direbbero lo stesso) è che qualcuno sacrifichi i propri impegni per diamonds - che è sempre stato un progetto portato avanti con serietà -finchè si poteva - ma sempre nel tempo libero... diamonds è un progetto didattico - in questo senso è stato utile chi vi ha lavorato, può essere utile anche a chi solo legga il codice, se ne può imparare qualcosa Quote:
in diamonds un singolo lavoro non doveva prendere più di mezz' ora o un' ora alla volta, sia che si svolgesse uno dei task singoli postati nel thread di un certo ciclo sia che si prendesse una parte di un task più impegnativo ( come poteva essere ad es un refactoring coinvolgente più classi ) ... in quest' ultimo caso era anche un modo per abituarsi a "programmare" il proprio modo di lavorare
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 26-07-2007 alle 22:11. |
|||||||||
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Bene, grazie a tutti per la disponibilità, tornerò a postare sul progetto non appena avrò le idee più chiare, probabilmente già stasera vedrò un pò il codice per iniziare a farmi un'idea, generalmente non ho grosse difficoltà nel comprendere il significato del codice anche senza commenti, ovviamente nel caso in cui questi non sia troppo intricato, quindi più avete scritto il codice in maniera modulare(spero di non trovarmi davanti a classi enormi), prima lo comprenderò...
il problema più grande, a quanto vedo, è quello che affligge ogni progetto che vuole essere programmato come si deve: il testing, questa è l'ennesima prova di quanto un team possa spendere anche più di metà del tempo e delle risorse solo per questa fase e, se ho capito bene avete preferito improntare uno sviluppo a spirale(ciclico), quindi rifattorizzando il codice alla fine di ogni ciclo(o sbaglio?), se è così, in questo momento usate ancora un tipo di sviluppo tale, congiuntamente ad extreme programming o avete preferito cambiare qualche particolare? Un ultimo punto: come mai avete preferito XP programming? Perchè secondo voi non poteva essere possibile avere le idee chiarissime già dall'inizio? Non conveniva progettare tutto il sistema perdendo più tempo all'inizio ma avendo meno grane in seguito? Comunque per il momento cerco di farmi un idea più chiara io stesso... mi rifarò vivo tra alcuni giorni... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Non riesco ad accedere al Repository... qualche suggerimento?
|
|
|
|
|
|
#9 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
1) interfaccia web di SourceForge; ecco il link: http://diamondcrush.svn.sourceforge..../diamondcrush/ 2) con un client SubVersion (per esempio Subclipse, che è un plugin di Eclipse) seguendo queste istruzioni: http://sourceforge.net/svn/?group_id=191341 in particolare occhio al protocollo quando inserisci l'URL: è https, non svn. |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Quote:
Ultima modifica di Il Creativo : 29-07-2007 alle 16:54. |
|
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
quale client SubVersion hai installato sul computer connesso ad Internet, Tortoise SVN?
altra domanda: come mai il client SVN ce l'hai potuto installare ed Eclipse invece no? |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Quote:
Error: PROPFIND request failed on '/diamondcrush' Error: PROPFIND of '/diamondcrush': Could not resolve hostname `diamondcrush.svn.sourceforge...t': Il nome richiesto è valido e presente nel database ma non possiede i dati associati corretti per la risoluzione. (https://diamondcrush.svn.sourceforge...t) |
|
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
a parte il fatto che non concordo molto con la tua scelta di isolare il PC da development (cosa ti credi che io abbia mai formattato negli ultimi 2 anni?
Codice:
https://diamondcrush.svn.sourceforge.net/svnroot/diamondcrush/trunk |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Quote:
comunque ti ringrazio dato che il link che mi hai dato ora funziona, attualmente stà scaricando il codice su una cartella in questo pc... io avevo usato i vari link postati nella sezione repository, ma non ne funzionava nemmeno uno |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
__________________
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 390
|
Quote:
p.s. è troppo forte la tua firma, ogni volta che la leggo mi fa morire dal ridere |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Apr 2001
Città: Bari
Messaggi: 2776
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:25.




















