|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Refactoring Post FirstPlayable
Allora...
...pronti a riniziare a lavorare Io ho iniziato lavorando sugli state. Sto facendo 3 cose: 1) spostando i metodi in modo che le prime tre cose che si incontrano siano: - costruttore - isCurrentState() - update(); 2) ogni stato che si occupa di gravità dovrà occuparsene internamente, ovvero se setta la gravità ad un valore diverso da normal, dopo deve esso stesso rimetterlo a normal 3) diminuire l'istanziazioni di classi state Ho modificato WaitStateBeforeNewGemsPair. Ora ritorna: Codice:
return new GemsPairOnControlState(config).update(timer,gridController); Codice:
new GemsPairOnControlState(config); Invece in CrushState c'è questo: Codice:
return new GemFallState(config); Codice:
return new GemFallState(config).update(timer, gridController); Ora ci riguardo .... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Aspettate con i refactoring, per favore.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Ottimo refactoring!!!
...ha introdotto un bug che i test non mi hanno segnalato Ora la gemsPair quando si spezza, se il tasto giù è premuto, non scende a gravità Strongest ma a Normal. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Avete fatto commit per caso????
Quote:
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#5 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Quote:
Quote:
Ho perso le dita??? |
||
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
Ha preso il tag, ma sono sorti altri problemi che ci conviene provare a risolvere. Questo weekend doveva essere destinato al playtesting, credo sia sbagliatissimo cercare di accelerare i tempi e crearci da soli altri problemi.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Ok...reverto tutto!!!
O almeno ci provo ...fino a lunedì non tocco più nulla |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
E' la mia opinione, ma se hanno detto così un motivo ci sarà.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
REVERT ESEGUITO.
Fino a lunedì fermo i lavori "PUBBLICI"... |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Oooops...non aqvevo letto.
in ogni caso mi sono salvato le modifiche che ho fatto...quindi quando vogliamo le rifaccio in 5 sec Ora vedo di andare avanti con il refactoring sulla mia copia locale ... poi per i play test uso quella della build. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Grazie Bonfo (e meno male che hai salvato le modifiche
Intanto, vediamo di aprire un altro topic per vedere se riusciamo a risolvere questi problemi di compatibilità sorti all'ultimo minuto? Sicuramente sono più urgenti.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Certo...concentriamoci su quelli.
Sugli state però devo dire una cosa. Ho notato come in crushState si faccia un return new FallGemState senza update. Lo capisco perchè rende difficili moltissimi test. A questo punto mi viene da dire....o tutto o niente. Ovvero o tutti fanno un return new STATE.Update() oppure non lo fa nessuno!!! è una semplice scelta stilistica....tutto funziona uguale...solo bisogna mettere a posto i test di conseguenza. Capire cosa succede quando faccio update è una delle cose che mi ha sempre fatto spendere un sacco di tempo nei test. Renderlo chiaro sarebbe fantastico.... A questo punto mi verrebbe da dire di togliere gli update dai return....forse diventa tutto un po' più deterministico |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Colpa mia che ho fatto un po' di confusione, scusate. Ho preso il tag per lasciare il trunk libero per il refactoring. Potete tranquillamente continuare.
Bonfo, scrivi prima il test che copre la condizione che si e' verificata a seguito del tuo refactoring, cosi' da andare sul tranquillo.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Ora non posso....sto uscendo.
Appena torno a casa scrivo il test. Sarebbe utile anche avere un'opinione da parte di tutti per sapere che fare con questi update. |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Fatto il test...ma anche con la versione corretta non passa.
Ecco il test: Codice:
public void testSlaveGemFallFaster()
{
controller.getGemsPair().rotateClockwise();
controller.getGemsPair().getPivotGem().drop();
controller.update(timer);
assertEquals(Config.createForTesting().getInteger("StrongestGravityMultiplier") * 0.5, grid.getActualGravity(), 0.01);
input.notifyKeyEvent(KeyEvent.DOWN, KeyEvent.PRESSED);
controller.reactToInput(timer);
assertEquals(Config.createForTesting().getInteger("StrongestGravityMultiplier") * 0.5, grid.getActualGravity(), 0.01);
input.notifyKeyEvent(KeyEvent.DOWN, KeyEvent.RELEASED);
controller.reactToInput(timer);
assertEquals(Config.createForTesting().getInteger("StrongestGravityMultiplier") * 0.5, grid.getActualGravity(), 0.01);
}
A questo punto o il test è sbagliato "concettualmente" oppure il modo in cui viene fatta cadere la salveGem non è pulitissimo. Ora ci sono 2 possibiltà nel caso il test sia corretto: o si spezza lo stato in GemsPairOnControlState in 2 aggiungendo lo stato SlaveGemFall in modo da cambiare questo codice Codice:
public void reactToInput(TimerInterface timer)
{
if(!currentState.isCurrentState("StoneFall") && !currentState.isCurrentState("GemFall")) && !currentState.isCurrentState("SlaveGemFall "))
{
inputReactor.reactToInput(timer);
}
}
A me paice molto più la soluzione 1 P.S.: ma dove vengono disabilitati gli input per la salveGem dopo che la gemsPair si è separata??? Dentro gemsPair?? Ultima modifica di Bonfo : 22-04-2006 alle 20:32. |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Sarà anche
..ma riuppo il thread perchè il test che ho postato è ancora lì che deve capire che fine deve fare. Ripeto:il comportamento è strano. In sti giorni ci sarò a sprazzi...ma dopo questo gli state sono abbastanza puliti. Dopo passerò all'attaco degli action .... e lì si che ci sarà da fare a botte
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Ufo, puoi dare una mano a Bonfo che tu conosci benone questa parte?
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Quote:
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
|
vorrei proporre una forma di organizzazione del refactoring, stile assegnazione del refactoring delle varie parti del codice stile task, però a rotazione, tipo un giorno 1 guarda l'audio, un'altro guarda l'engine, ecc, ecc, il giorno successivo a rotazione, in modo da evitare di lavorare nello stesso momento allo stesso codice....
__________________
GNU MyServer Wants YOU!! We live thinking we will never die. We die thinking we had never lived. Jason Becker |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Ok cisc. Scrivi qui l'elenco dei refactoring di cui abbiamo bisogno e li assegnamo.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:12.



















