PDA

View Full Version : Thread dei Problemi


Pagine : 1 2 3 4 5 [6] 7

cdimauro
06-04-2006, 15:08
C'è qualche problema con Spartacus: adesso dentro la cartella trunk c'è un'altra cartella trunk che ne riporta tutto il contenuto! Risulta anche a voi?
Non fate l'update o il checkout per il momento, perché altrimenti sareste costretti a scaricare anche questi doppioni!!!

fek
06-04-2006, 17:24
C'è qualche problema con Spartacus: adesso dentro la cartella trunk c'è un'altra cartella trunk che ne riporta tutto il contenuto! Risulta anche a voi?
Non fate l'update o il checkout per il momento, perché altrimenti sareste costretti a scaricare anche questi doppioni!!!

Mi sa che e' colpa mia. Metto a posto.

Ora dovrebbe essere ok.

cdimauro
06-04-2006, 17:45
Sì, confermo che adesso è tutto ok. Grazie! :)

Sto rifacendo il CheckOut, ma adesso non c'arrivo a togliere di mezzo i warning e a committare. Se ne parla domani. Sorry. :(

Ufo13
06-04-2006, 18:21
SVN pare sia di nuovo down

thebol
06-04-2006, 20:46
SVN pare sia di nuovo down
confermo e uppo

thebol
06-04-2006, 22:32
ora il server è up, ma mi chiede la pwd(nn sto committando)

Jocchan
06-04-2006, 23:13
Il repository ha cambiato url:
http://www.hwupgrade.it/forum/showthread.php?t=1174643

thebol
08-04-2006, 01:45
il test testDrawTwoGemPositionAndTexture fallisce a random(raramente..)

Ufo13
08-04-2006, 11:19
il test testDrawTwoGemPositionAndTexture fallisce a random(raramente..)

Puoi postare il messaggio di failure?

thebol
08-04-2006, 11:35
ci ho messo un po a farlo venir fuori...


junit.framework.ComparisonFailure: expected:<...\null> but was:<...>
at junit.framework.Assert.assertEquals(Assert.java:81)
at junit.framework.Assert.assertEquals(Assert.java:87)
at it.diamonds.tests.engine.video.TestNextGemsPanel.testDrawTwoGemPositionAndTexture(TestNextGemsPanel.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

Ufo13
08-04-2006, 12:00
Ti ringrazio :)

Vedo di sistemare :P

BlueDragon
08-04-2006, 15:00
Ti ringrazio :)

Vedo di sistemare :P

Ciao Ufo13, ho visto che hai sistemato mettendogli una sequenza di gemme fissa; evitando così che venisse creata la Flashing, che come png si trova assieme alle gemme anziché in una sua directory flashing e faceva quindi fallire il test.
Non sarebbe meglio dare una directory alla flashing ed anche alle gemme normali, così come è per le stones, i boxes ed i tiles?

Tra l'altro così forse si potrebbe anche fare in modo che le Gemme non siano le uniche a restituire stringa vuota "" come DroppableType....
public static final DroppableType GEM = new DroppableType("");
Non so se è stato messo così perché le gem sono le uniche che non hanno una sottodirectory per le loro png o per un altro motivo, ma a guardare il codice sembra un po' strano, che ne dite? :)

Ufo13
08-04-2006, 15:14
Ciao Ufo13, ho visto che hai sistemato mettendogli una sequenza di gemme fissa; evitando così che venisse creata la Flashing, che come png si trova assieme alle gemme anziché in una sua directory flashing e faceva quindi fallire il test.
Non sarebbe meglio dare una directory alla flashing ed anche alle gemme normali, così come è per le stones, i boxes ed i tiles?

Tra l'altro così forse si potrebbe anche fare in modo che le Gemme non siano le uniche a restituire stringa vuota "" come DroppableType....
public static final DroppableType GEM = new DroppableType("");
Non so se è stato messo così perché le gem sono le uniche che non hanno una sottodirectory per le loro png o per un altro motivo, ma a guardare il codice sembra un po' strano, che ne dite? :)

Sì, secondo me potremmo standardizzare il tutto :)

cionci
08-04-2006, 16:49
Tra l'altro così forse si potrebbe anche fare in modo che le Gemme non siano le uniche a restituire stringa vuota "" come DroppableType....
public static final DroppableType GEM = new DroppableType("");
Non so se è stato messo così perché le gem sono le uniche che non hanno una sottodirectory per le loro png o per un altro motivo, ma a guardare il codice sembra un po' strano, che ne dite? :)
Sì, l'ho messo per quello ;)

Ufo13
08-04-2006, 17:32
ho sistemato tutta quella parte :)

cionci
08-04-2006, 18:53
Il server è down :(

Bonfo
08-04-2006, 22:05
EDIT: avevo test che fallivano...ma era ilmio workspace "sporco"
;)

Bonfo
09-04-2006, 01:31
[checkstyle] D:\Valerio\workspace\Diamonds\src\it\diamonds\gems\Chest.java:4: Class Chest should be declared as final.


Allora..è un problema già posto da cionci. Ora la classe è definita final per non incappare in questo errore del checkstyle.

Vorrei far ricordare però che il checkstyle è uno strumento...non un fine.
Se lui ci dice che deve essere final mai noi sappiamo che non deve essere final...bhè non ci faccimao mettere i piedi in testa da uno strumento :nonsifa:

Qualcuno sa come risolvere ??!! :muro: :muro: :muro:

Io il checkstyle prorpio non lo conosco :doh:

Ufo13
09-04-2006, 02:59
lo fa perchè il costruttore è private

Ufo13
09-04-2006, 03:04
Ho messo costruttore privato e final pure nelle altre classi derivate da AbstractDroppable

fek
09-04-2006, 10:48
Il server è down :(

Se il server continua ad andare su e giu', pero', lo spostiamo sul mio server di casa che da settimane e' sempre su.

fek
09-04-2006, 11:17
Cruisecontrol e' ripartito, ho avuto un po' di problemi con il cambio di svn server, ora tutto ok, anche la spedizione delle mail. E mi arrivano anche i feed sulla PSP, quindi occhio :D

dnarod
09-04-2006, 12:39
finalmente torno a postare dopo 10gg di vacanza forzata...e le cose non potrebbero andare peggio...dall ultima (nonche prima) sessione di "indottrinamento" con tigershark, praticamente ho solo cercato di studiare il codice di diamonds, causa forza maggiore (esami a grappolo)...l' ideale di autostima prossimo allo zero è poi stato acuito terribilmente dal lutto di un paio di giorni fa, quando NON ho passato programmazione 2 (java) con il minimo per non passare...ora, prima della rinuncia, lo avevo passato e registrato pure...2+2= crisi misticodepressiva stellare, se non riesco nemmeno a ripassare un esame banale su argomenti banali, diamonds diventa uno di quei traguardi che non si possono nemmeno avvicinare...

tanto piu che per riparare alla idiozia che ho partorito mi sono reiscritto il 12 e avro 12 + 20 due esami che mi powneranno tutta la giornata...sembra proprio che ogni molecola del mio corpo non si senta in grado di sniubbarsi e cominciare a fare qualcosa di stimolante e divertente oltre che formativo (diamonds)...io dico che non mi arrendo e cerco di studiare e sniubbarmi, ma speriamo che non mi capiti un altra botta simile nel breve termine, altrimenti mollo tutto e divento un meccanico tamarro che vive per la disco del sabato sera e tanti saluti alla mia dignita umana....

fek
09-04-2006, 13:15
Sintomi: Il paziente scrive molto e la sua autostima e' prossima allo zero.

Diagnosi: Loquacite post depressiva acuta

Cura: SCRIVI MENO POST E PIU' CODICE! :D

L'indottrinamento serve a poco, ti serve scrivere codice. E fare esperienza scrivendolo e facendo errori. Scrivi meno post e piu' codice.

Bonfo
09-04-2006, 13:16
Ho messo costruttore privato e final pure nelle altre classi derivate da AbstractDroppable

Ecco.
Allora lo volevamo final... :D

non capisco a questo punto perchè il checkstyle non imponenva il final alle altre droppable: Gem, Stone, FlashingGem :mbe: :mbe:

Ora però sono molto più sereno ;)

Bonfo
09-04-2006, 13:16
Cruisecontrol e' ripartito, ho avuto un po' di problemi con il cambio di svn server, ora tutto ok, anche la spedizione delle mail. E mi arrivano anche i feed sulla PSP, quindi occhio :D

A me le mail non arrivano...
:cry: :cry: :cry: :cry:



Quando posso passarti il mi indirizzo :flower:

fek
09-04-2006, 13:18
A me le mail non arrivano...
:cry: :cry: :cry: :cry:



Quando posso passarti il mi indirizzo :flower:

Manda alla mia mail casalinga. [email protected] (sostituisci nome e cognome)

thebol
09-04-2006, 14:08
Manda alla mia mail casalinga. [email protected] (sostituisci nome e cognome)

ti ho mandato una mail anche io con la stessa richiesta :)

fek
09-04-2006, 14:10
Vi aggiungo entrambi.

Ricordate che potete anche farvi inoltrare i feed RSS usando questo indirizzo:

http://fcarucci.homeip.net:8080/cruisecontrol/rss/diamonds

E' comodissimo per avere sempre sott'occhio la build se usate un news aggregator, oppure nella pagine principale di google.

Ufo13
09-04-2006, 14:26
Io uso la barra di Mozilla :P

cdimauro
10-04-2006, 08:23
Ho eseguito l'update (da venerdì), lanciato Ant (dopo un cleanup) e mi segnala che la build è rotta:
[junit] at it.diamonds.tests.TestGameLoop.testGameLoopFinishAfterEscapePlayerTwo(TestGameLoop.java:96)
[junit] Testcase: testGameOversAreDisplayingCorrectly(it.diamonds.tests.TestGameLoop): Caused an ERROR
[junit] it.diamonds.PlayField.getGridController()Lit/diamonds/GridController;
[junit] java.lang.NoSuchMethodError: it.diamonds.PlayField.getGridController()Lit/diamonds/GridController;
[junit] at it.diamonds.GameLoop.checkAndShowGameOverMessage(GameLoop.java:194)
[junit] at it.diamonds.GameLoop.updateFields(GameLoop.java:187)
[junit] at it.diamonds.GameLoop.doOneStep(GameLoop.java:286)
[junit] at it.diamonds.tests.TestGameLoop.testGameOversAreDisplayingCorrectly(TestGameLoop.java:109)

BUILD FAILED
C:\Documents and Settings\Cesare\workspace\Diamonds\build.xml:97: Test it.diamonds.tests.TestGameLoop failed
Succede anche ad altri? Controllando i risultati con CruiseControl, ho visto che l'ultima build (del'1:33:02) per lui è "passed".

fek
10-04-2006, 10:28
Sembra un test che fallisce a random, oppure in base al sistema. Ci puoi guardare per favore?

cdimauro
10-04-2006, 11:04
Gli do un'occhiata durante la pausa pranzo.

Bonfo
10-04-2006, 11:38
Falliva anche a me....
... è che con i mille refactoring ti è rimasto qualcosa di "sporco" nel progetto.

O provi a fare Clean del progetto (Project->Clean...) oppure rifai il checkout.

A me ha funzionato :D

cdimauro
10-04-2006, 13:46
Ho effettuato il checkout ed effettivamente la build è verde.

La prossima volta provo col cleanup e vedo se va tutto bene. Fare il checkout ogni volta non mi entusiasma.

BlueDragon
11-04-2006, 01:10
Ci sono almeno un paio bachi in giro...uno è il crash dovuto al fatto che le stone non vengono create con la DroppableFactory e quindi non hanno l'animazione settata adeguatamente e dopo il primo turno fanno crashare tutto (già identificato da TheBol/71104 credo).

Il secondo è questo...non ho tempo per indagare adesso ma vi lascio lo screen, è facile da riprodurre, basta giocare un poco con entrambi i giocatori, dopo aver applicato una patch per il primo problema :)

http://img103.imageshack.us/img103/2812/bacoup1ho.th.jpg (http://img103.imageshack.us/my.php?image=bacoup1ho.jpg)

Il baco principale è la gemma in alto a sinistra... gli spazi vuoti lasciati dalle stones "scadute" (vengono riempiti con nuove gemme solo al turno successivo) immagino verrano fixati con la chiusura dei task delle stones.

71104
11-04-2006, 04:04
ATTENZIONE: attualmente abbiamo un crash che sembra dovuto a OpenAL!! (vedere stack trace nel bug report)

ora sono troppo stanco per ulteriori dettagli, domani vi racconto tutto ^^
comunque rispetto a ieri sera e a stamattina ho semplificato GridController, e non ho maneggiato una sola riga di codice che non sia coperta da test esplicitamente e direttamente ;)

buona notte a tutto il team :p

fek
11-04-2006, 11:05
Ottimo lavoro 71104. Quanto pensi che manchera' alla fine di questo task? Intendo anche con il test che esercita il crash e il relativo fix.

71104
11-04-2006, 17:19
Ottimo lavoro 71104. Quanto pensi che manchera' alla fine di questo task? Intendo anche con il test che esercita il crash e il relativo fix. eh purtroppo non era un crash solo, sono diverse cause (i bug report erano differenti); attualmente comunque credo di aver risolto tutti i crash tranne quello di OpenAL sul quale sto indagando; credo di aver scoperto che OpenAL crasha sempre al ventottesimo blink (il suono nel file diamonds.wav). comunque tornando al task adesso provo a commentare un attimo la linea che causa il crash (solo come spike, poi la riattivo) e a vedere se il task 14.1.2 è finito (non dovrebbe mancare nulla).

71104
11-04-2006, 17:32
per finire le indagini su quel problema mi serve thebol che per ora è offline; adesso vado a lavorare su un'altro bug (quello evidenziato nello screenshot di BlueDragon); il task 14.1.2 comunque si può segnare come completato (ora lo scrivo anche nel thread della storia).

Bonfo
11-04-2006, 18:18
C'è un problemino....
...durante l'inserimento il pattern non è rispettato.

71104
11-04-2006, 18:37
C'è un problemino....
...durante l'inserimento il pattern non è rispettato. siamo sommersi dai bug :cry:

oltre a questo e al crash di OpenAL, ne segnalo altri due:

1) il tasto freccia giù non viene disabilitato mentre cadono le pietre; di conseguenza se l'utente preme e rilascia rapidamente il tasto durante la loro caduta, al rilascio del tasto la gravità torna normale e le pietre cadono lentamente.

2) devo sistemare qualcosa nella gestione di un numero di pietre maggiore di 8; mi è parso di capire che ad es. quando ne cadono 24 (3 file) la prima fila cade correttamente, la seconda resta immobile nella prima riga, e l'inserzione di quelle della terza causa un crash; ma sul crash della terza fila non sono sicuro, potrebbe anche essere dovuto a qualcos'altro... :muro:

fek
11-04-2006, 18:51
siamo sommersi dai bug :cry:

Riparliamone quando avrai 15.000 bug da risolvere in sei settimane ;)

71104
11-04-2006, 19:04
ho fatto un test per il bug evidenziato da BlueDragon e l'ho risolto; fuori uno.
ora per il fuori due dovete aspettare perché devo uscire ^^
a dopo, ciao a tutti.

fek
11-04-2006, 19:28
Bravissimo, gran lavoro :)

71104
11-04-2006, 21:58
ho trovato e corretto altri due bug legati tra loro; uno dei due era anche stato notato da Jocchan.

il metodo PlayField.addIncomingStones non era "cumulativo", ovvero sovrascriveva i valori correnti di GridController.incomingStones e del contatore della warning box (Jocchan aveva notato numeri troppo bassi nella warning box).

tra l'altro questa era sporadicamente una causa di crash: a volte il contatore delle incoming stones presente in GridController assumeva valori negativi e causava un crash con un IndexOutOfBound in StoneFallState che, indirettamente, usa quel contatore per ottenere l'index della colonna e del colore del pattern all'inserzione di ciascuna pietra.

poco fa però giocando ho ottenuto un numero di stones palesemente troppo alto... la saga dei bug continua :cry:

71104
11-04-2006, 22:08
l'ho ottenuto di nuovo, e stavolta ho scoperto la causa! vedo se riesco a correggere...

thebol
11-04-2006, 22:16
fai sync, che ho commitato il nuovo state.
ho fatto piazza pulita di tutti i flag in crushState :cool:

71104
11-04-2006, 22:20
fatto.

io nel frattempo sono riuscito a trovare una soluzione; il problema è che dovrei aggiungere un metodo a Grid, ma probabilmente ne potrò anche levare un altro.

71104
11-04-2006, 22:46
CE L'HO FATTA!!! XDXDXD

e fuori due :D

EDIT: ma che dico, questo era già il fuori 4 :asd:
il tempo vola quando si va a caccia di insetti :p

Jocchan
11-04-2006, 23:38
CE L'HO FATTA!!! XDXDXD

e fuori due :D

EDIT: ma che dico, questo era già il fuori 4 :asd:
il tempo vola quando si va a caccia di insetti :p

IDOLO :eek:

Jocchan
11-04-2006, 23:57
Altro bug: c'è un frame di troppo prima della trasformazione in gemma.

fek
12-04-2006, 10:11
Altro bug: c'è un frame di troppo prima della trasformazione in gemma.

Ok, ora abbiamo urgente bisogno di una lista di bug da aggiornare e, possibilmente, i relativi test, subito dopo la Check List. Jocchan, sei il prescelto :D

Assegna ad ogni bug una priorita' (A, B, C o D) con il seguente significato:

A - questo bug causa un crash e/o impedisce di proseguire nel gioco
B - questo bug non causa un crash, ma e' un grave problema di visulizzazione e/o compromette il gameplay
C - questo bug e' un piccolo problema di visualizzazione e non compromette il gameplay
D - questo bug puo' essere totalmente ignorato e la sua soluzione fa parte della wish list

Se tu Jocchan che assegni le priorita'.

cionci
12-04-2006, 11:02
Sia il repository che la build machine sono down...possibile ?

fek
12-04-2006, 11:09
Sia il repository che la build machine sono down...possibile ?

La build machine e' su. Se il repository e' down, la build machine non puo' creare la nuova build.

cionci
12-04-2006, 11:12
A me risulta inaccessibile...
http://fcarucci.homeip.net:8080/cruisecontrol/buildresults/diamonds?log=log20060410220204Lbuild.772

Indirizzo non trovato

Firefox non riesce a contattare il server fcarucci.homeip.net.

cionci
12-04-2006, 11:19
Ho un problema di DNS anche per il repository... Forse sono io... Boh... Mi dai l'indirizzo ip della build machine ? Voglio provare con quello...

cionci
12-04-2006, 11:34
Avevo io un problema di dns...

cionci
14-04-2006, 03:05
/*public void testGravityRestoredAfterPivotHasFallen()
{
gemsPair.getSlaveGem().drop();
controller.update(timer);
gemsPair.getPivotGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}


public void testGravityRestoredAfterSlaveHasFallen()
{
gemsPair.getPivotGem().drop();
controller.update(timer);
gemsPair.getSlaveGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}*/

Questi test, tra l'altro uguale, che io ho commentato imponevano un comportamento errato a GemFallState...
Infatti queste gem Dropped richiedevano una valore di gravità normale, invece dovrebbe essere strongest... Per ora li ho commentati... Sono in TestGemsPair...

fek
14-04-2006, 15:49
/*public void testGravityRestoredAfterPivotHasFallen()
{
gemsPair.getSlaveGem().drop();
controller.update(timer);
gemsPair.getPivotGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}


public void testGravityRestoredAfterSlaveHasFallen()
{
gemsPair.getPivotGem().drop();
controller.update(timer);
gemsPair.getSlaveGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}*/

Questi test, tra l'altro uguale, che io ho commentato imponevano un comportamento errato a GemFallState...
Infatti queste gem Dropped richiedevano una valore di gravità normale, invece dovrebbe essere strongest... Per ora li ho commentati... Sono in TestGemsPair...

Ok, se sono errati toglili pure dalla codebase.

thebol
14-04-2006, 18:58
Ok, se sono errati toglili pure dalla codebase.

quei test mi rovinavano un refactoring...

cover
14-04-2006, 23:09
iniziamo bene... :cry:
fatto il checkout, aggiungo -Djava.library.path=lib/linux come argomento alla VM e....


OS: Linux
Version: 2.6.16-gentoo
Architecture: i386

VM Vendor: Sun Microsystems Inc.
Version: 1.5.0_06

Class Path: /home/cover/workspace/Diamonds/bin:/home/cover/workspace/Diamonds/lib/junit.jar:/home/cover/workspace/Diamonds/lib/easymock.jar:/home/cover/workspace/Diamonds/lib/jar/lwjgl.jar:/home/cover/workspace/Diamonds/lib/jar/lwjgl_devil.jar:/home/cover/workspace/Diamonds/lib/jar/lwjgl_util.jar
JNI Library Path: lib/linux

Exception: class it.diamonds.engine.video.DisplayException
Message: The current display mode is not available due to org.lwjgl.LWJGLException: Could not create a direct GLX context
Display Adapter Driver: null null

Stacktrace:
it.diamonds.engine.video.DisplayException: The current display mode is not available due to org.lwjgl.LWJGLException: Could not create a direct GLX context
at it.diamonds.engine.video.DisplayImplementation.initDisplay(DisplayImplementation.java:171)
at it.diamonds.engine.video.DisplayImplementation.<init>(DisplayImplementation.java:49)
at it.diamonds.engine.Engine.create(Engine.java:29)
at it.diamonds.GameLoop.create(GameLoop.java:94)
at it.diamonds.Game.setUpGame(Game.java:39)
at it.diamonds.Game.create(Game.java:143)
at it.diamonds.Game.main(Game.java:71)


La console:


Display Adapter: null
List of available display modes:
720 x 400 x 24 @85Hz
1024 x 768 x 24 @85Hz
800 x 600 x 24 @75Hz
400 x 300 x 24 @85Hz
1024 x 768 x 24 @70Hz
928 x 696 x 24 @60Hz
320 x 240 x 24 @73Hz
800 x 600 x 24 @85Hz
320 x 175 x 24 @85Hz
416 x 312 x 24 @75Hz
928 x 696 x 24 @75Hz
700 x 525 x 24 @75Hz
640 x 350 x 24 @85Hz
512 x 384 x 24 @87Hz
640 x 512 x 24 @85Hz
400 x 300 x 24 @56Hz
1024 x 768 x 24 @87Hz
512 x 384 x 24 @85Hz
640 x 400 x 24 @85Hz
1280 x 1024 x 24 @85Hz
800 x 600 x 24 @70Hz
832 x 624 x 24 @75Hz
640 x 480 x 24 @60Hz
320 x 240 x 24 @75Hz
512 x 384 x 24 @60Hz
512 x 384 x 24 @70Hz
640 x 480 x 24 @75Hz
1280 x 960 x 24 @60Hz
800 x 600 x 24 @72Hz
700 x 525 x 24 @60Hz
896 x 672 x 24 @75Hz
1280 x 1024 x 24 @75Hz
896 x 672 x 24 @60Hz
1280 x 960 x 24 @85Hz
1024 x 768 x 24 @60Hz
640 x 512 x 24 @75Hz
1024 x 768 x 24 @75Hz
800 x 600 x 24 @65Hz
640 x 480 x 24 @73Hz
400 x 300 x 24 @60Hz
800 x 600 x 24 @56Hz
1152 x 864 x 24 @75Hz
960 x 720 x 24 @60Hz
400 x 300 x 24 @75Hz
640 x 480 x 24 @85Hz
576 x 432 x 24 @75Hz
960 x 720 x 24 @75Hz
320 x 240 x 24 @85Hz
512 x 384 x 24 @75Hz
400 x 300 x 24 @72Hz
1280 x 1024 x 24 @60Hz
320 x 200 x 24 @85Hz
800 x 600 x 24 @60Hz
640 x 512 x 24 @60Hz
320 x 240 x 24 @60Hz
Best mode: 800 x 600 x 24 @85Hz


Driver nvidia 8178, desktop a 1280*104 85Hz
Se ci riesco domani vedo di mettere gli ultimi nvidia...
Che dite? Sfiga ? :(


Update: intanto ho provato sul portatile (XP + Ati) e funziona...appena finisco d'installare l'altro pc (Gentoo + G400) faccio che provarlo pure lì...in teoria dovrebbe andare anche su una scheda un pò vecchia, no?

Ufo13
25-04-2006, 13:56
Attenzione:


public void setStrongestGravity()
{
actualGravity = normalGravity * strongestGravityMultiplier;
}


public void setStrongerGravity()
{
actualGravity = normalGravity * gravityMultiplier;
}


Cosa vuol dire? Non capisco!

BlueDragon
25-04-2006, 14:01
Attenzione:


public void setStrongestGravity()
{
actualGravity = normalGravity * strongestGravityMultiplier;
}


public void setStrongerGravity()
{
actualGravity = normalGravity * gravityMultiplier;
}


Cosa vuol dire? Non capisco!
Che io sappia vi sono due gravità accelerate :)
Una è quella relativa alla pressione del tasto per far scendere le pietre velocemente (dovrebbe essere stronger gravity), l'altra è la super gravità che fa scendere ancora più velocemente le stones.
Anch'io sono rimasto perplesso quando ho visto le due gravità nel config....forse potremmo dar loro dei nomi più espliciti?

Ufo13
25-04-2006, 14:04
Che io sappia vi sono due gravità accelerate :)
Una è quella relativa alla pressione del tasto per far scendere le pietre velocemente (dovrebbe essere stronger gravity), l'altra è la super gravità che fa scendere ancora più velocemente le stones.
Anch'io sono rimasto perplesso quando ho visto le due gravità nel config....forse potremmo dar loro dei nomi più espliciti?

Sarebbe bellissimo :D

cover
26-04-2006, 00:44
BUG: Il punteggio non viene visualizzato alla prima partita, dopo il game over viene creato

BlueDragon
26-04-2006, 22:37
BUG: Il punteggio non viene visualizzato alla prima partita, dopo il game over viene creato
Wow, come abbiamo fatto a non accorgercene?
Cmq ho trovato il bug, l'invocazione a setBackground() di GameLoop è stata commentata (?) nel costruttore di GameLoop e viene invece richiamata dopo la creazione dell'oggetto GameLoop in create().
In questo modo, il background viene aggiunto successivamente al layermanager e finisce per coprire i numeri.
Invece dopo il GameOver, nel metodo restart(), il background viene inizializzato per primo ed il problema scompare.

BlueDragon
26-04-2006, 22:53
Io devo staccare, ma vi lascio qui una possibile soluzione al baco di cui sopra...se qualcuno riesce ad inventarsi un test che verifichi l'ordine dei layer in modo che questo baco non ricapiti, non sarebbe male :)

Comunque una soluzione sarebbe:
* eliminare il gameLoop.setBackground(); richiamato dopo GameLoop gameLoop = new GameLoop(environment);
(circa riga 104)

* decommentare il setBackground() che c'è già nel costruttore e spostarlo minimo dopo this.environment = environment; altrimenti non ha la variabile environment con cui lavorare ed i test falliscono.
Va comunque invocato prima di initPlayField(environment.getTimer()); :)

cisc
26-04-2006, 23:08
ragazzi, appena provato, su linux amd64, le gemme scendono "a tratti", rallentano, accelerano, mentre le pulsazioni sono fluide, penso questo bug sia stato introdotto nell'ultimo refactoring, prima nessun problema

cionci
26-04-2006, 23:15
ragazzi, appena provato, su linux amd64, le gemme scendono "a tratti", rallentano, accelerano, mentre le pulsazioni sono fluide, penso questo bug sia stato introdotto nell'ultimo refactoring, prima nessun problema
Boh...ci sta che sia il refactoring del timer...

^TiGeRShArK^
26-04-2006, 23:20
ho quasi risolto con webstart..
riesco a caricare tutto tranne le texture..
qualcuno mi può spiegare se con lwjgl è possibile caricare le immagini da un inputstream senza accedere direttamente al filesystem?
a quanto ho capito da un thread su java forums dovrebbe essere possibile ma non spiegavano come fare....
se avete suggerimenti è una cosa buona xkè stasera sono fuso, ma il porting su java web start dovrebbe essere completo una volta risolto questo problema.....

^TiGeRShArK^
26-04-2006, 23:38
ho trovato la soluzione penso...
basta usare
BufferedImage img = ImageIO.read(is);
solo che ho visto che noi nel codice non usiamo una bufferedimage ma carichiamo tutto con ilLoadImage...
se magari qualcuno ke capisce qualcosa di opengl (raffaele, fek :D) mi spiega come cambiare il codice per usare una bufferedimage anzikè direttamente l'array in memoria sarebbe cosa buona e giusta, dato ke non capisco una mazza di opengl :p
cmq il link dove è discusso questo problema è il seguente:
http://lwjgl.org/forum/viewtopic.php?p=3012&sid=e608f98613616ff1e576e8c325018d0a

BlueDragon
26-04-2006, 23:50
qualcuno mi può spiegare se con lwjgl è possibile caricare le immagini da un inputstream senza accedere direttamente al filesystem?

Ma non dovevo staccare un'ora fa?
Cmq se vuoi usare uno stream, guardando i javadoc di LWJGL (http://www.lwjgl.org/javadoc/) ti suggerirei
ilLoadFromStream(java.io.InputStream stream, int type)
Dovrebbe essere la stessa cosa di ilLoadImage(java.lang.String fileName) ma con uno stream.

cover
27-04-2006, 00:24
Wow, come abbiamo fatto a non accorgercene?


[Sboron Time = ON] Eh....se non ci fossi io come fareste.... :Prrr: :Prrr: [Sboron Time = OFF]

cdimauro
27-04-2006, 08:34
Boh...ci sta che sia il refactoring del timer...
Non penso, perché per quanto riguarda il gioco vero e proprio si è trattato di un refactoring "puro": ho soltanto spostato il codice da sleepOneMillisecond al (nuovo) metodo advance di Timer.

Per quanto riguarda i test, invece, il refactoring non è stato "puro", in quanto questo cambiamento ha portato alla chiamata advance di MockTimer anziché a Thread.Sleep(1) come avveniva prima; quindi è cambiato "soltanto" il fatto che non viene perso tempo aspettando inutilmente, e inoltre il tempo segnato MockTimer è "coerente" perché viene fatto avanzare propriamente.

Può darsi che il problema sia dovuto al mega refactoring che ha portato all'introduzione di Environment, ma i test passano tutti tranquillamente.

^TiGeRShArK^
27-04-2006, 10:03
Ma non dovevo staccare un'ora fa?
Cmq se vuoi usare uno stream, guardando i javadoc di LWJGL (http://www.lwjgl.org/javadoc/) ti suggerirei
ilLoadFromStream(java.io.InputStream stream, int type)
Dovrebbe essere la stessa cosa di ilLoadImage(java.lang.String fileName) ma con uno stream.
ah ok
tnx
stasera qdo torno a casa provo :D
Se funge siamo a cavallo..
ah.. a proposito...
non committate niente nel build.xml che vi uccido :p

VICIUS
27-04-2006, 10:07
ah ok
tnx
stasera qdo torno a casa provo :D
Se funge siamo a cavallo..
ah.. a proposito...
non committate niente nel build.xml che vi uccido :p
Per fortuna leggo sempre il forum prima di fare un commit. Mi sono salvato :D

ciao ;)

^TiGeRShArK^
27-04-2006, 12:41
Per fortuna leggo sempre il forum prima di fare un commit. Mi sono salvato :D

ciao ;)
fiuuu... :D
ho dovuto cambiare una marea di cose nella sezione dist del build.xml...
fare un merge era da paura :eek:

:D

cisc
27-04-2006, 15:37
Non penso, perché per quanto riguarda il gioco vero e proprio si è trattato di un refactoring "puro": ho soltanto spostato il codice da sleepOneMillisecond al (nuovo) metodo advance di Timer.

Per quanto riguarda i test, invece, il refactoring non è stato "puro", in quanto questo cambiamento ha portato alla chiamata advance di MockTimer anziché a Thread.Sleep(1) come avveniva prima; quindi è cambiato "soltanto" il fatto che non viene perso tempo aspettando inutilmente, e inoltre il tempo segnato MockTimer è "coerente" perché viene fatto avanzare propriamente.

Può darsi che il problema sia dovuto al mega refactoring che ha portato all'introduzione di Environment, ma i test passano tutti tranquillamente.

non capisco ancora la causa, ma, almeno sul mio pc, linux64, è abbastanza evidente il problema, sembra che ogni tot di tempo le gemme rallentino, quasi a fermarsi, per poi ripartire, il fenomeno è più evidente quando c'è l'audio attivato, è meno evidente ma c'è cmq quando l'audio non è attivato

cdimauro
27-04-2006, 16:21
Ho capito. L'unico modo per toglierci questo dubbio è prendere una build che ti funzionava perfettamente, applicare il solo refactoring di Timer & TimerInterface e vedere se si manifesta questo problema.

VICIUS
27-04-2006, 16:28
fiuuu... :D
ho dovuto cambiare una marea di cose nella sezione dist del build.xml...
fare un merge era da paura :eek:

:D
Ho fatto un commit. :ops:

ciao ;)

fek
27-04-2006, 17:44
Ho capito. L'unico modo per toglierci questo dubbio è prendere una build che ti funzionava perfettamente, applicare il solo refactoring di Timer & TimerInterface e vedere se si manifesta questo problema.

E' possibile fare il revert dei questo refactoring fino alla settimana prossima?

cisc
27-04-2006, 18:04
ok, scusate, falso allarme, probabilmente problemi con il mio pc, anche con la first playable rilasciate lunedì ho gli stessi problemi

^TiGeRShArK^
27-04-2006, 21:35
Ma non dovevo staccare un'ora fa?
Cmq se vuoi usare uno stream, guardando i javadoc di LWJGL (http://www.lwjgl.org/javadoc/) ti suggerirei
ilLoadFromStream(java.io.InputStream stream, int type)
Dovrebbe essere la stessa cosa di ilLoadImage(java.lang.String fileName) ma con uno stream.
nope...
non funge....
ho provato un casino di volte e col seguente codice (che tra l'altro è orribile per l'if che distingue i due tipi di file immagine):

System.out.println(new InputStreamReader(Texture.class.getClassLoader().getResourceAsStream(imageDir + fileName)).read());
IL.create();
ILU.create();

generateImage();
if(name.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_PNG);
} else if(name.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_JPG);
}

ottengo che il System.out.println mi stampa correttamente 255 (il primo carattere del file) mentre il metodo delle lwjgl va in eccezione...
Qualcuno mi sa spiegare come usare il metodo
BufferedImage img = ImageIO.read(is); all'interno del nostro codice??? :help:
in questo thread hanno usato quel metodo e hanno risolto correttamente il problema:
http://lwjgl.org/forum/viewtopic.php?p=3012&sid=e608f98613616ff1e576e8c325018d0a
in quel modo sparirebbe anche quell'odiosissimo if... però non ho idea di come usarlo perchè i passi effettuati in quel thread per l'inizializzazione e il caricamento sono diversi dai nostri e io non capisco una mazza di opengl e ho paura di fare danni ... :help:

BlueDragon
27-04-2006, 23:14
nope...
non funge....
ho provato un casino di volte e col seguente codice (che tra l'altro è orribile per l'if che distingue i due tipi di file immagine):

System.out.println(new InputStreamReader(Texture.class.getClassLoader().getResourceAsStream(imageDir + fileName)).read());
IL.create();
ILU.create();

generateImage();
if(name.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_PNG);
} else if(name.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_JPG);
}

ottengo che il System.out.println mi stampa correttamente 255 (il primo carattere del file) mentre il metodo delle lwjgl va in eccezione...
Qualcuno mi sa spiegare come usare il metodo
BufferedImage img = ImageIO.read(is); all'interno del nostro codice??? :help:
in questo thread hanno usato quel metodo e hanno risolto correttamente il problema:
http://lwjgl.org/forum/viewtopic.php?p=3012&sid=e608f98613616ff1e576e8c325018d0a
in quel modo sparirebbe anche quell'odiosissimo if... però non ho idea di come usarlo perchè i passi effettuati in quel thread per l'inizializzazione e il caricamento sono diversi dai nostri e io non capisco una mazza di opengl e ho paura di fare danni ... :help:
Al momento purtroppo non ho tempo per indagare, l'unica cosa che mi viene in mente è che se fai un .read() dell'InputStream per il tuo System.out.println, mi sembra normale che poi non funzioni il caricamento immagine. Non penso che il metodo di caricamento riporti indietro lo stream del carattere che ti sei mangiato con il read().... Hai già provato senza il read?


PS: Mi sa tanto che l'avrai già provato ma ci provo comunque.. :P

BlueDragon
27-04-2006, 23:55
Non avevo tempo ma mi ci sono dedicato lo stesso...
il seguente codice funziona:


FileInputStream fs = new FileInputStream(new File(imageDir + fileName));
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName);


if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(fs, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(fs, IL.IL_JPG);
}


Come vedi l'InputStream is di getResourceStream sta lì per bellezza...non sono riuscito a farlo funzionare, probabilmente non trova il file (l'altro giorno mi avevi detto che andavo messo data nel classpath ed aveva funzionato).
Cmq prendendo lo stream con il metodo classico, poi funziona bene iLoadFromStream, avendo l'accortezza di distringuere tra PNG e JPG.

^TiGeRShArK^
28-04-2006, 00:06
Non avevo tempo ma mi ci sono dedicato lo stesso...
il seguente codice funziona:


FileInputStream fs = new FileInputStream(new File(imageDir + fileName));
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName);


if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(fs, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(fs, IL.IL_JPG);
}


Come vedi l'InputStream is di getResourceStream sta lì per bellezza...non sono riuscito a farlo funzionare, probabilmente non trova il file (l'altro giorno mi avevi detto che andavo messo data nel classpath ed aveva funzionato).
Cmq prendendo lo stream con il metodo classico, poi funziona bene iLoadFromStream, avendo l'accortezza di distringuere tra PNG e JPG.
ehm..
il problema è che a me, col classpath giusto, getResourceAsStream funziona perfettamente (e te credo! usa il classloader di java :D)
Però non sono riuscito a farlo funzionare in alcun modo con iLoadFronStream, quindi immagino che ci sia qualche problema.
Nel thread che ho linkato hanno risolto il problema utilizzando bufferedimage al posto di iLoadFromStream..
quindi se ci fosse qualche buon samaritano che mi può dare qualche link di un corso accelerato di opengl o che mi spiega come cambiare il nostro codice per usare bufferedimage siamo a cavallo perchè dovrebbero essere risolti tutti i problemi di java web start :p(sempre se non ne spunta qualche altro... murphy docet :D)

BlueDragon
28-04-2006, 00:15
ehm..
il problema è che a me, col classpath giusto, getResourceAsStream funziona perfettamente (e te credo! usa il classloader di java :D)
Però non sono riuscito a farlo funzionare in alcun modo con iLoadFronStream, quindi immagino che ci sia qualche problema.
Nel thread che ho linkato hanno risolto il problema utilizzando bufferedimage al posto di iLoadFromStream..
quindi se ci fosse qualche buon samaritano che mi può dare qualche link di un corso accelerato di opengl o che mi spiega come cambiare il nostro codice per usare bufferedimage siamo a cavallo perchè dovrebbero essere risolti tutti i problemi di java web start :p(sempre se non ne spunta qualche altro... murphy docet :D)
Sei sicuro che ti funzioni perfettamente il getResourceAsStream?
In fondo quando non trova la risorsa non è che da errore...ti da semplicemente un InputStream nullo.
Cmq a me funziona anche così:

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(fileName);

System.out.println(is.available());
if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(is, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(is, IL.IL_JPG);
}

Richiede ovviamente l'inserimento di data nel classpath visto che nel getResourceAsStream gli ho indicato solo il filename.

^TiGeRShArK^
28-04-2006, 00:39
Sei sicuro che ti funzioni perfettamente il getResourceAsStream?
In fondo quando non trova la risorsa non è che da errore...ti da semplicemente un InputStream nullo.
Cmq a me funziona anche così:

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(fileName);

System.out.println(is.available());
if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(is, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(is, IL.IL_JPG);
}

Richiede ovviamente l'inserimento di data nel classpath visto che nel getResourceAsStream gli ho indicato solo il filename.
:D
si tranquillo ke funziona :D
l'ho usato centinaia di volte al lavoro e ho fatto decine e decine di prove con diamonds.
So benissimo che restituisce un is nullo ;)
cmq già nella prova che avevo postato prima avevo fatto una prova sul campo in quanto all'interno dello stesso metodo ho fatto stampare il primo byte dell'immagine caricata con getresourceasstream ed è andato tutto ok (255), mentre lwjgl poco sotto è andata in eccezione :p

BlueDragon
28-04-2006, 00:46
:D
si tranquillo ke funziona :D
l'ho usato centinaia di volte al lavoro e ho fatto decine e decine di prove con diamonds.
So benissimo che restituisce un is nullo ;)
cmq già nella prova che avevo postato prima avevo fatto una prova sul campo in quanto all'interno dello stesso metodo ho fatto stampare il primo byte dell'immagine caricata con getresourceasstream ed è andato tutto ok (255), mentre lwjgl poco sotto è andata in eccezione :p
Ok, allora abbiamo risolto no?
Con il codice postato sopra usiamo il getResourceAsStream ed ilLoadFromStream.

^TiGeRShArK^
28-04-2006, 01:08
Ok, allora abbiamo risolto no?
Con il codice postato sopra usiamo il getResourceAsStream ed ilLoadFromStream.
:D
no, è proprio questo il problema :D
il classpath è giusto e il path del file anche (dopo una serata intera che ho passato a togliere quei maledetti java.io.separator disseminati in tutto il codice... ma KI ha avuto la brillante idea di metterli??? :p) ma mi sa che c'è qualche problema nel metodo ilLoadFromStream.
Il println messo subito sopra mi stampa il primo byte della png, mentre quel metodo se ne va in eccezione :D
Per questo mi serve il corso accelerato di opengl, per usare il bufferedimage, ke a quanto ho capito *dovrebbe* essere esente da questi problemi :D

^TiGeRShArK^
28-04-2006, 01:39
boh..
mi stavo guardando ora il codice di quel metodo e sembrerebbe a posto....

public static boolean ilLoadFromStream(InputStream stream, int type) throws IOException {
boolean result = false;
int lastRead = 0;
byte[] buffer = new byte[4096];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedInputStream buf = new BufferedInputStream(stream);

try {
while((lastRead = buf.read(buffer, 0, buffer.length)) != -1) {
baos.write(buffer, 0, lastRead);
}

buffer = baos.toByteArray();
ByteBuffer lump = ByteBuffer.allocateDirect(buffer.length);
lump.put(buffer);
lump.flip();
result = ilLoadL(type, lump);
} catch (IOException e) {
try {
buf.close();
} catch (IOException f ) {}
throw e;
}

return result;
}

non riesco proprio a capire cosa non va..
vedo se riesco a risolvere domani...
good night :O

BlueDragon
28-04-2006, 08:46
non riesco proprio a capire cosa non va..
vedo se riesco a risolvere domani...
good night :O
Nel codice che hai postato ho visto:

if(name.endsWith("png"))
{
[..]
} else if(name.endsWith("jpg"))
{
[..]
}

Hai modificato name affinché contenga anche l'estensione?
Qual'è lo stacktrace esatto dell'errore? Hai provato con il debugger?

^TiGeRShArK^
28-04-2006, 09:44
Nel codice che hai postato ho visto:

if(name.endsWith("png"))
{
[..]
} else if(name.endsWith("jpg"))
{
[..]
}

Hai modificato name affinché contenga anche l'estensione?
Qual'è lo stacktrace esatto dell'errore? Hai provato con il debugger?
ehm...
name non contiene già l'estensione?
avevo visto nel costruttore che faceva qualcosa del tipo this.name = name + type..
ah... e cmq contiene anche l'estensione perchè altrimenti anche con il println mi avrebbe dato l'eccezione perchè non trovava il file, mentre mi stampa correttamente il primo byte.
Lo stack trace preciso non me lo ricordo e ora non ce l'ho...
cmq era qualcosa del tipo data/back000.jpg not found in Texture.loadFromFile()....
In effetti potrei provare col debugger... ma devo riuscire a sistemare i classpath anche con eclipse però :p
cmq stasera vedo se risolvo qualcosa....:muro:

BlueDragon
28-04-2006, 19:28
ehm...
name non contiene già l'estensione?
avevo visto nel costruttore che faceva qualcosa del tipo this.name = name + type..
ah... e cmq contiene anche l'estensione perchè altrimenti anche con il println mi avrebbe dato l'eccezione perchè non trovava il file, mentre mi stampa correttamente il primo byte.

Name non contiene l'estensione: il println ti funziona perché usi imageDir + fileName :)


Lo stack trace preciso non me lo ricordo e ora non ce l'ho...
cmq era qualcosa del tipo data/back000.jpg not found in Texture.loadFromFile()....

"Unable to find the texture " è l'eccezione che lanciamo noi se la variabile loaded è false.
Effettivamente, usando name senza estensione non si entra in nessuno dei due rami dell'if, loaded rimane false e si incappa nell'eccezione.

^TiGeRShArK^
28-04-2006, 22:52
Name non contiene l'estensione: il println ti funziona perché usi imageDir + fileName :)


"Unable to find the texture " è l'eccezione che lanciamo noi se la variabile loaded è false.
Effettivamente, usando name senza estensione non si entra in nessuno dei due rami dell'if, loaded rimane false e si incappa nell'eccezione.
vabbè..
non im ricordavo il codice stamattina...
cmq gli viene passato il nome corretto con l'estensione e con la directory..
infatti all'interno dello stesso metodo facendo nello stesso modo println apre correttamente l'immagine e ne stampa il primo byte.
Ora vedo se risolvo qualcosa stasera xkè ero a cena dai miei cugini e domani parto in francia x l'1maggio...speriamo bene :fiufiu:

^TiGeRShArK^
28-04-2006, 23:31
vabbè..
non im ricordavo il codice stamattina...
cmq gli viene passato il nome corretto con l'estensione e con la directory..
infatti all'interno dello stesso metodo facendo nello stesso modo println apre correttamente l'immagine e ne stampa il primo byte.
Ora vedo se risolvo qualcosa stasera xkè ero a cena dai miei cugini e domani parto in francia x l'1maggio...speriamo bene :fiufiu:
Christ Jesus!!! :muro:

ORA ho capito che ti riferivi al name nell'if:muro:
ma quanto sono coglione.:muro:
Ora credo che funaga...
quanto provo.... (appena finisco di bestemmiare :muro: )

cdimauro
02-05-2006, 10:25
:D
no, è proprio questo il problema :D
il classpath è giusto e il path del file anche (dopo una serata intera che ho passato a togliere quei maledetti java.io.separator disseminati in tutto il codice... ma KI ha avuto la brillante idea di metterli??? :p)
:fiufiu: Beh, PathSeparator(Windows) <> PathSeparator(Linux) & co, e se quella funzione l'hanno messa, un motivo ci dovrà pur essere o no? ;)

Comunque ho rivisto un po' il codice e mi sembra che non siano stati eliminati i varii java.io.File.separator. Meglio così. :p

Ufo13
02-05-2006, 11:11
possiamo infilare tutti i path in Config o comunque in un luogo centralizzato?

^TiGeRShArK^
02-05-2006, 11:34
:fiufiu: Beh, PathSeparator(Windows) <> PathSeparator(Linux) & co, e se quella funzione l'hanno messa, un motivo ci dovrà pur essere o no? ;)

Comunque ho rivisto un po' il codice e mi sembra che non siano stati eliminati i varii java.io.File.separator. Meglio così. :p
no perchè in windows va bene anke "/" e comunque dovremo slegarci dal concetto di file system usando java web start.
In quel caso occorre sempre usare "/".
E comunque dal branch di java web start li ho eliminati tutti e ci ho messo pure un casino di tempo.. :cry:
Senza contare che il codice ci guadagna anche in leggibilità ;)

cdimauro
02-05-2006, 11:53
possiamo infilare tutti i path in Config o comunque in un luogo centralizzato?
Sarebbe una cosa buona e giusta. :p

cdimauro
02-05-2006, 11:54
no perchè in windows va bene anke "/" e comunque dovremo slegarci dal concetto di file system usando java web start.
In quel caso occorre sempre usare "/".
E comunque dal branch di java web start li ho eliminati tutti e ci ho messo pure un casino di tempo.. :cry:
Senza contare che il codice ci guadagna anche in leggibilità ;)
OK, se funziona tutto su qualunque piattaforma non c'è problema: tutte le modifiche che ho fatto le puoi eliminare (ci metterai comunque molto meno tempo rispetto a quello che ho impiegato io a inserire il separatore. ;))

Ufo13
02-05-2006, 12:04
no perchè in windows va bene anke "/" e comunque dovremo slegarci dal concetto di file system usando java web start.
In quel caso occorre sempre usare "/".
E comunque dal branch di java web start li ho eliminati tutti e ci ho messo pure un casino di tempo.. :cry:
Senza contare che il codice ci guadagna anche in leggibilità ;)

ed il Mac?

cdimauro
02-05-2006, 13:07
E' compatibile solo con se stesso. :asd: :asd: :asd:

^TiGeRShArK^
02-05-2006, 19:04
E' compatibile solo con se stesso. :asd: :asd: :asd:
:asd:
usa come separator la mela :asd:
cmq a parte gli scherzi non ho mai provato su mac, ma essendo basato su freebsd immagino non ci siano problemi di sorta ;)

fek
03-05-2006, 11:18
Abbiamo la build rotta a seguito di un paio di rename che ho fatto.

Questo e' il test:

junit.framework.AssertionFailedError: Gem must be in the last row expected:<12> but was:<11> at it.diamonds.tests.gems.TestGemFalling.testTwoVerticalGemFalling(TestGemFalling.java:98)

Sembra un test che fallisce random. Potete darci un'occhiata che sono in ufficio?

BlueDragon
03-05-2006, 23:09
Abbiamo la build rotta a seguito di un paio di rename che ho fatto.

Questo e' il test:

junit.framework.AssertionFailedError: Gem must be in the last row expected:<12> but was:<11> at it.diamonds.tests.gems.TestGemFalling.testTwoVerticalGemFalling(TestGemFalling.java:98)

Sembra un test che fallisce random. Potete darci un'occhiata che sono in ufficio?
Ho visto che Vicius ha committato alle 15:15 con il seguente commento:
vic: fix del test che falliva. avevo invertito l'ordine con cui le righe venivano esaminate in forEachGem.
Come commentato da Vicius, l'unico cambio è stato nel metodo forEachGem di Grid, anziché usare il comodo:
for(Droppable[] row : grid)
Sì è dovuti tornare indietro all'uso di un for, in modo da esaminare le righe in senso inverso:

public void forEachDroppable(DroppableAction action)
{
for(int i = grid.length - 1; i >= 0; i--)
{
Droppable[] row = grid[i];

for(Droppable droppable : row)
{
if(droppable == null)
{
continue;
}

action.applyOn(droppable);
}
}
}


Il fatto che questo codice funzioni solo in un verso puzza....o no?

BlueDragon
03-05-2006, 23:20
Il fatto che questo codice funzioni solo in un verso puzza....o no?
Un possibile motivo per cui il codice funzioni solo da un verso, potrebbe essere il fatto che nel far cadere le pietre conviene procedere dal basso. Non è possibile muovere giù un colonna di pietre se non si spostano prima quelle in basso.

Com'è che però quando Vicius ha committato il test era passato?

VICIUS
03-05-2006, 23:55
Un possibile motivo per cui il codice funzioni solo da un verso, potrebbe essere il fatto che nel far cadere le pietre conviene procedere dal basso. Non è possibile muovere giù un colonna di pietre se non si spostano prima quelle in basso.

Com'è che però quando Vicius ha committato il test era passato?
Probabilmente non passava neanche dopo il primo commit. Solo che la build machine ha fatto partire i test solo dopo quello di fek e cosi sembrava fosse stata colpa del suo rename.
Mi ero scordato di quella modifica cosi quando o sincronizzato i due repository ho pensato: "ant non c'è bisogno che lo faccio partire tanto non succede niente...".

ciao ;)

cionci
04-05-2006, 09:44
Questo test in testGameLoop fallisce in base ai test che si trova davanti...
Provate a far girare la classe di test da sola dentro Eclipse e lo vedrete...

public void testAllTexturesLoadedBeforeStartPlaying()
{
assertEquals(44, Texture.getPoolSize());
}

fek
04-05-2006, 10:16
Questo test in testGameLoop fallisce in base ai test che si trova davanti...
Provate a far girare la classe di test da sola dentro Eclipse e lo vedrete...

public void testAllTexturesLoadedBeforeStartPlaying()
{
assertEquals(44, Texture.getPoolSize());
}


Uh che brutto test che si basa su una variabile globale. Vedete perche' vi dico di non usare i Singleton? Creano esattamente questi problemi. Peccato che la variabile globale l'ho introdotta io :)

Cesare, a che punto siamo con Environment?

Bonfo
04-05-2006, 14:58
...SERVER DOWN :( :mad: :muro:

cdimauro
05-05-2006, 11:17
Uh che brutto test che si basa su una variabile globale. Vedete perche' vi dico di non usare i Singleton? Creano esattamente questi problemi. Peccato che la variabile globale l'ho introdotta io :)
Beh, questo test l'ho introdotto io... :fiufiu:

Comunque il suo fallimento vuol dire che esistono delle texture che vengono caricate durante il gioco, ma non sono state aggiunte all'elenco di quelle da precaricare: basta aggiungere queste texture all'elenco presente in GameLoop.loadTextures e modificare il 44 in quel test.

D'altra parte il test parla chiaro, no? testAllTexturesLoadedBeforeStartPlaying :p
Cesare, a che punto siamo con Environment?
Questa settimana sono stato fermo, mi spiace: oggi finisco di sistemare il PC a lavoro e quello a casa, e per la prossima settimana torno a rifattorizzare (debbo dire che c'ho preso gusto. Al contrario di Alberto :Prrr: :D).

cionci
05-05-2006, 11:29
Cesare...secondo me è un po' diverso...

Il numero di texture ritornate da quel metodo dipende dalla sequenza secondo cui i test vengono eseguiti...

cdimauro
05-05-2006, 12:03
Mumble mumble. Forse ho capito: è dovuto al fatto che le strutture per mantenere la cache delle texture sono statiche, per cui vengono usate per tutti i test (condividendo, quindi, la "storia" delle texture caricate).

In ogni caso il problema è dovuto all'introduzione e utilizzo di altre texture, che non sono presenti nell'elenco di quelle da precaricare: basta inserirle e il problema è risolto.

fek
05-05-2006, 12:19
Cesare...secondo me è un po' diverso...

Il numero di texture ritornate da quel metodo dipende dalla sequenza secondo cui i test vengono eseguiti...

Esatto, e la cosa fa fissata il prima possibile.

fek
05-05-2006, 12:20
Mumble mumble. Forse ho capito: è dovuto al fatto che le strutture per mantenere la cache delle texture sono statiche, per cui vengono usate per tutti i test (condividendo, quindi, la "storia" delle texture caricate).

In ogni caso il problema è dovuto all'introduzione e utilizzo di altre texture, che non sono presenti nell'elenco di quelle da precaricare: basta inserirle e il problema è risolto.

No Cesare, la soluzione e' non usare variabili statiche e disaccoppiare questo test dagl'altri, altrimenti il problema si riproporra' in futuro e il test dovra' essere aggiornato, con conseguente perdita di tempo.

cdimauro
05-05-2006, 12:32
Ho semplicemente usato quelle che c'erano già, e che implementavano la cache delle texture. ;)

Per fare ciò che chiedi, la cache delle texture andrebbe gestita come hai fatto tu con la cache dei suoni, "infilandola" nell'istanza di Audio.

Urge refactoring, insomma (ma questo era previsto).

fek
05-05-2006, 12:35
Si', esatto, adesso questo refactoring e' urgente perche' dobbiamo fixare questo.
Chi se ne occupa?

cionci
05-05-2006, 12:36
Oppure si infilano in Enviroment...

fek
05-05-2006, 12:37
Oppure si infilano in Enviroment...

Questa potrebbe essere una buona soluzione temporanea.

cdimauro
05-05-2006, 13:00
Si', esatto, adesso questo refactoring e' urgente perche' dobbiamo fixare questo.
Chi se ne occupa?
In questo momento non posso farlo: ho poco tempo libero, e lo sto impiegando a cercare di far funzionare Eclipse... :muro:

Jocchan
06-05-2006, 12:29
Build rotta.

thebol
06-05-2006, 13:09
Build rotta.
sistemata, errore mio

Jocchan
06-05-2006, 15:45
sistemata, errore mio

Ri-rotta.

EDIT: Ah no, è la stessa build di stamane :mbe:

Jocchan
09-05-2006, 13:09
Bug: nel menu principale, chiudere la finestra con il pulsante in alto a destra fa partire la musica di Rock per qualche secondo prima del termine del gioco.

cionci
16-05-2006, 12:53
Il gioco non mi parte e ho il seguente report:

Stacktrace:
java.lang.RuntimeException: Unable to find the image data\gfx\layout\lower.png
at it.diamonds.engine.video.LWJGLImage.loadImageFromFile(LWJGLImage.java:102)
at it.diamonds.engine.video.LWJGLImage.<init>(LWJGLImage.java:77)
at it.diamonds.engine.video.LWJGLImage.create(LWJGLImage.java:84)
at it.diamonds.engine.LWJGLEngine.createImage(LWJGLEngine.java:97)
at it.diamonds.GameLoop.loadTextures(GameLoop.java:445)
at it.diamonds.GameLoop.<init>(GameLoop.java:63)
at it.diamonds.GameLoop.create(GameLoop.java:115)
at it.diamonds.Game.setUp(Game.java:62)
at it.diamonds.Game.create(Game.java:36)
at it.diamonds.Game.main(Game.java:88)

cisc
16-05-2006, 19:51
scusate, ma sotto linux, quando ascolto altra musica, se lancio diamonds, prima mi da il solito messaggio che dava prima, ma poi, invece di continuare senza sound, mi da un altro errore e si chiude, come se l'audio venisse inizializzato due volte...

Jocchan
16-05-2006, 20:09
Il gioco non mi parte e ho il seguente report:

Stacktrace:
java.lang.RuntimeException: Unable to find the image data\gfx\layout\lower.png
at it.diamonds.engine.video.LWJGLImage.loadImageFromFile(LWJGLImage.java:102)
at it.diamonds.engine.video.LWJGLImage.<init>(LWJGLImage.java:77)
at it.diamonds.engine.video.LWJGLImage.create(LWJGLImage.java:84)
at it.diamonds.engine.LWJGLEngine.createImage(LWJGLEngine.java:97)
at it.diamonds.GameLoop.loadTextures(GameLoop.java:445)
at it.diamonds.GameLoop.<init>(GameLoop.java:63)
at it.diamonds.GameLoop.create(GameLoop.java:115)
at it.diamonds.Game.setUp(Game.java:62)
at it.diamonds.Game.create(Game.java:36)
at it.diamonds.Game.main(Game.java:88)


Abbiamo tolto due texture non usate, ora il problema dovrebbe essere fixato. Ti si presenta ancora?

cionci
16-05-2006, 20:36
Ora funziona ;)

cisc
16-05-2006, 20:39
ecco il problema :eek: :


try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudio();
}


tolto il createAudio nel catch e creata la possibilità di scegliere il fullscreen da GameConfig..come richiesto da Jocchan su msn

Jocchan
16-05-2006, 20:42
ecco il problema :eek: :


try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudio();
}


tolto il createAudio nel catch e creata la possibilità di scegliere il fullscreen da GameConfig..come richiesto da Jocchan su msn

Grazie, Cisc :)

cisc
16-05-2006, 21:30
allora, com'è il codice adesso non viene considerata proprio la possibilità che l'audio possa non essere inizializzato....e quindi errori ovunque si chiami getAudio() di environment...un bel controllo se getAudio ritorna null...o aggiunta di metodo in environment che ritorna boolean!?!

Jocchan
16-05-2006, 22:05
allora, com'è il codice adesso non viene considerata proprio la possibilità che l'audio possa non essere inizializzato....e quindi errori ovunque si chiami getAudio() di environment...un bel controllo se getAudio ritorna null...o aggiunta di metodo in environment che ritorna boolean!?!

Favorevole. Fek? Vic?

cionci
16-05-2006, 22:29
Un bel NullObject ?

Bonfo
17-05-2006, 01:09
c'è un un problema simile in LWGLImage e un bel TODO che lo ricorda ;)

cdimauro
17-05-2006, 08:42
ecco il problema :eek: :


try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudio();
}


tolto il createAudio nel catch e creata la possibilità di scegliere il fullscreen da GameConfig..come richiesto da Jocchan su msn
Problema risolto:
try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudioForTesting();
}
;)

cdimauro
17-05-2006, 08:45
c'è un un problema simile in LWGLImage e un bel TODO che lo ricorda ;)
Dopo le precedenti rifattorizzazioni, non è più un problema: codice di produzione e di test sono sostanzialmente separati (rimangono da rifattorizzare Keyboard, KeyMappings ed Event), per cui LWJGLImage viene istanziata soltanto in produzione, mentre in fase di test viene istanziata MockImage.

Quel TODO si potrebbe anche eliminare. Fran, che ne dici?

cdimauro
17-05-2006, 08:50
Una cosa che si potrebbe fare, in futuro, è controllare che la creazione di queste istanze possa avvenire una sola volta. Quindi se richiamo createEngine e l'engine viene creato correttamente, una successiva chiamata allo stesso dovrebbe generare un'eccezione.

Giusto per avere un maggior controllo su quello che fa il codice (specialmente di test).

Ma si può fare anche più avanti.

Bonfo
17-05-2006, 12:08
Una cosa che si potrebbe fare, in futuro, è controllare che la creazione di queste istanze possa avvenire una sola volta. Quindi se richiamo createEngine e l'engine viene creato correttamente, una successiva chiamata allo stesso dovrebbe generare un'eccezione.

Giusto per avere un maggior controllo su quello che fa il codice (specialmente di test).

Ma si può fare anche più avanti.

Sembra molto un SINGLETON :ops2:

:D :D :D

thebol
17-05-2006, 12:12
Sembra molto un SINGLETON :ops2:

:D :D :D
si, anche se basterebbe una variabile statica

cdimauro
17-05-2006, 13:47
Per pietà: non voglio sentir parlare di variabili static, dopo quello che ho passato! :(

thebol
17-05-2006, 14:22
Per pietà: non voglio sentir parlare di variabili static, dopo quello che ho passato! :(

beh allora se environamente tiene un riferimento all'engine, non basta controllare che questo sia == null durante la creazione?

cdimauro
17-05-2006, 16:48
Certamente, ma il punto è che non è stato richiesto questo comportamento.

Voglio dire: a cambiarlo non ci vuole molto (scrivo i test, implemento il codice e vado a caccia delle duplicazioni eseguendo la build con Ant), ma mi è necessario sapere se è una cosa da fare oppure si può lasciare tutto com'è ora.

fek
17-05-2006, 17:47
Dopo le precedenti rifattorizzazioni, non è più un problema: codice di produzione e di test sono sostanzialmente separati (rimangono da rifattorizzare Keyboard, KeyMappings ed Event), per cui LWJGLImage viene istanziata soltanto in produzione, mentre in fase di test viene istanziata MockImage.

Quel TODO si potrebbe anche eliminare. Fran, che ne dici?

Toglilo pure.

Sembra molto un SINGLETON :ops2:

:D :D :D

Ci tieni alle ditine? :D

Certamente, ma il punto è che non è stato richiesto questo comportamento.

Voglio dire: a cambiarlo non ci vuole molto (scrivo i test, implemento il codice e vado a caccia delle duplicazioni eseguendo la build con Ant), ma mi è necessario sapere se è una cosa da fare oppure si può lasciare tutto com'è ora.

Non abbiamo nessun requirement che richieda di forzare una sola istanza di Engine, quindi e' decisamente YAGNI.

71104
17-05-2006, 22:57
premessa: ammazzatemi pure se è un problema che avete già riscontrato plurime volte e se senza saperlo lo sto ripetendo per la pluresima volta più uno :D
fine premessa.

quando le stones si trasformano in gemme, se stanno vicine ad un baule dovrebbero scomparire, e invece rimangono :p

thebol
17-05-2006, 23:10
premessa: ammazzatemi pure se è un problema che avete già riscontrato plurime volte e se senza saperlo lo sto ripetendo per la pluresima volta più uno :D
fine premessa.

quando le stones si trasformano in gemme, se stanno vicine ad un baule dovrebbero scomparire, e invece rimangono :p

strano, la updateStone viene chiamata prima che si scateni la prima crush :mumble:

cdimauro
18-05-2006, 08:32
Toglilo pure.
OK
Non abbiamo nessun requirement che richieda di forzare una sola istanza di Engine, quindi e' decisamente YAGNI.
Immaginavo. Comunque è un problema che riguarda esclusivamente i test, perché nel codice di produzione la creazione di questi oggetti è localizzata in un solo punto (GameLoop).

Bonfo
18-05-2006, 19:36
FERMI TUTTI.
E' stato introdotto un bel bug.

La trasformazioni delle stones in gemme non funzia più a dovere.
Le due gemme rosse alla base erano 2 stones

Bonfo
18-05-2006, 19:52
Ho visto adesso che è stata introdotta l'animaqzione dello sgretolamento delle stone.

A parte che nel gioco non si vede proprio, inoltre dev essere stato proprio quello ad introdurrre il bug!!!

E addesso eccone un altro...ma forse sempre dipendente dalla trasformazione

71104
18-05-2006, 19:56
FERMI TUTTI.
E' stato introdotto un bel bug.

La trasformazioni delle stones in gemme non funzia più a dovere.
Le due gemme rosse alla base erano 2 stones CAPITO L'ERRORE: la action che esegue l'animazione della trasformazione viene eseguita al momento sbagliato, devo solo trovare un momento migliore.

il problema è che non saprei come fare un test per questo bug... :mbe:
ora ci penso

71104
18-05-2006, 19:58
ah, e (penso) per lo stesso motivo ho commesso anche un altro errore: le stones vengono animate e trasformate a una a una, mentre dovrebbero andare tutte insieme.

Bonfo
18-05-2006, 19:59
CAPITO L'ERRORE

Ok...allora te ne occupi tu ;) ;)

Bonfo
18-05-2006, 20:09
Non so se è normale perchè nn è ancora stato implemenatto il controllo....ma ecco cosa mi è capitato ;)

71104
18-05-2006, 20:14
in quest'ultimo screenshot cosa c'è di strano...?

71104
18-05-2006, 20:17
vado a cena, quando torno cerco di correggere questi due errori (ho indagato e dipendono sicuramente dalla stessa causa).

VICIUS
18-05-2006, 20:21
Non so se è normale perchè nn è ancora stato implemenatto il controllo....ma ecco cosa mi è capitato ;)
Il task per numerare la dinamite e limitare le istanze a tre non è ancora terminato. Un po' di pazienza :p

ciao ;)

Bonfo
18-05-2006, 20:49
Il task per numerare la dinamite e limitare le istanze a tre non è ancora terminato. Un po' di pazienza :p

ciao ;)

OK :D :D :D

...71104, il problema è che ci sono 4 dinamiti quando il massimo è 3 ;)

jappilas
18-05-2006, 21:12
poco fa ho notato questo invece (schreenshot preso due cicli dopo la trasformazione):
dopo che svariate gemme si sono materializzate a fianco di un baule, non si sono cancellate, è normale? :stordita:

thebol
18-05-2006, 22:04
Non so se è normale perchè nn è ancora stato implemenatto il controllo....ma ecco cosa mi è capitato ;)

il bug improbabile...
mi ci sto mettendo ora :)

71104
18-05-2006, 22:22
eh, guarda che dipende sempre dal modo (scorretto) in cui viene chiamata forEachGem(turnStonesIntoGemsAction); ora però non ci posso guardare, mia madre è na schiappa col PC e devo aiutarla a scrivere un doc x scuola :cry:

71104
18-05-2006, 23:36
rieccomi, ho analizzato il codice e trovato il modo di correggere il problema: l'errore sta nel fatto che il lastUpdateTimeStamp contenuto nella Action è appunto associato ad una Action, mentre invece dovrebbe essere associato ad ogni singola stone.

71104
18-05-2006, 23:59
e anche stavolta TDD in forma rigorosamente PURA per Stone.update: 7 test per 15 righe di codice di cui solo 7 sono concettualmente significative (escludiamo dal conteggio parentesi graffe e righe vuote); in pratica, un test a linea! :) :yeah:

risolti i bug che avevo introdotto, funziona tutto alla grande.

71104
19-05-2006, 00:15
risolti i bug che avevo introdotto, funziona tutto alla grande. ehm no, ho cantato vittoria troppo in fretta asd ^^
i due bacarozzi ci sono ancora: quando una stone si trasforma in gemma funziona tutto ma solo al drop successivo; ora cerco di correggere...

EDIT: la causa l'ho scoperta; il difficile è correggere...

71104
20-05-2006, 17:36
i due bug sono stati risolti da me in locale, ma le due linee nella classe GemsPairOnControlState che permettono di risolverli le ho committate commentate perché fanno fallire una marea di test che non attendono il completamente delle animazioni delle stones. sti test vanno sistemati uno per uno, è un lavoro molto lungo :cry:

ora devo uscire, comunque, questo è il codice attuale di GemsPairOnControlState:

public class GemsPairOnControlState implements GridControllerState
{
private CrushState nextState;
//private StoneTurnState nextState;


public GemsPairOnControlState(Environment environment, GridController controller)
{
nextState = new CrushState(environment);
//nextState = new StoneTurnState(environment, controller);
}
.
.
.


se lo fate diventare così, il gioco funziona perfettamente:

public class GemsPairOnControlState implements GridControllerState
{
//private CrushState nextState;
private StoneTurnState nextState;


public GemsPairOnControlState(Environment environment, GridController controller)
{
//nextState = new CrushState(environment);
nextState = new StoneTurnState(environment, controller);
}
.
.
.

ma molti test falliscono per il motivo sopra spiegato :cry:

non è che qualche anima pia quando c'è tempo mi da una mano a sistemarne qualcuno?? :cry:

71104
20-05-2006, 17:37
ah a proposito, ho fixato la build :p

thebol
20-05-2006, 21:29
qualcuno ha modificato quallcosa sulle stone o ci sta lavorando?
ora quando vengono aggiornate, non si trasformano in gemme, ma rimangono al frame precedente :(

71104
20-05-2006, 21:43
leggi il resto del thread :Prrr:
ci stavo lavorando, adesso finalmente sono riuscito a risolvere tutto!! :winner: :winner: :winner:

e senza neanche dover cambiare tutti i test che fallivano :cool:

cdimauro
24-05-2006, 11:01
Build rotta:
[junit] Testcase: testIsDrawn(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnInPlayField(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnInCorrectPosition(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnWithCorrectTexture(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testSetCrushCounterBounds(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnWithCorrectRectangle(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterWithoutCrush(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterAfterTwoCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterPositionAfterTwoCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterAfterThreeCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterAfterTenCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testFirstPlayFieldCrushBoxMovingLeft(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testSecondPlayFieldCrushBoxMovingRight(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testOffScreenCrushBoxIsNotMoving(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testOriginForPlayerOne(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testOriginForPlayerTwo(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testDummy(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)

BUILD FAILED
C:\Documents and Settings\Cesare\workspace\Diamonds\build.xml:128: Test it.diamonds.tests.TestCrushBox failed

Total time: 16 seconds
Succede anche a voi?

VICIUS
24-05-2006, 11:20
Build rotta:
[...]
BUILD FAILED
C:\Documents and Settings\Cesare\workspace\Diamonds\build.xml:128: Test it.diamonds.tests.TestCrushBox failed

Total time: 16 seconds
Succede anche a voi?
Ah quanto pare qualcuno si è scordato un pezzo durante il commit.

ciao ;)

^TiGeRShArK^
24-05-2006, 17:54
Ah quanto pare qualcuno si è scordato un pezzo durante il commit.

ciao ;)
mmmm...
dynamiteAnimationTimeout???
:fiufiu:
jappilas...ma l'hai fatto x bene il merge?
quella variabile fino a ieri sera c'era :p

^TiGeRShArK^
24-05-2006, 17:56
cmq tra un pò torno a casa e vedo se risistemo la build ke dovrei avere il codice originale sul pc...
me lo salvo prima di fare update e mergio x bene :p

^TiGeRShArK^
24-05-2006, 18:51
risolto :D
problema mio ke mi ero dimenticato di committare il nuovo gameconfig :fiufiu:
leggendo prima di fretta avevo capito ke mancava la variabile e pensavo ke avesse mergiato jappilas ....invece era la proprietà del config :p
mea culpa :D

^TiGeRShArK^
24-05-2006, 20:27
mmmmmm...
ma il server è down o la mia connessione di skifo non me lo fa raggiungere??? :mbe:
eppure in http mi apre tutti i siti.. :cry:

jappilas
24-05-2006, 21:12
mmmm...
dynamiteAnimationTimeout???
:fiufiu:
jappilas...ma l'hai fatto x bene il merge?
quella variabile fino a ieri sera c'era :p
io in Dynamite ho aggiunto solo 4 addFrame e sono 2 settimane che non premo commit :O :p

Ufo13
28-05-2006, 20:02
C'è una quantità incredibile di codice non testato! L'input per esempio, a partire dai Key Mappings, è in gran parte scoperto dai test!

Ufo13
30-05-2006, 20:29
un test fallisce a random in it.diamonds.tests.handlers.TestBlowDynamiteHandler:

mi accingo a fixare

Ufo13
30-05-2006, 20:37
A posto :)

fek
30-05-2006, 21:39
La build e' rotta da quattro commit. Va aggiustata subito.

fek
30-05-2006, 21:45
java.lang.RuntimeException: The file containing the keys configuration does not exists at it.diamonds.engine.Config.<init>(Config.java:36) at it.diamonds.engine.Config.create(Config.java:44) at it.diamonds.engine.Environment.<init>(Environment.java:31) at it.diamonds.engine.Environment.createForTesting(Environment.java:43) at it.diamonds.tests.TestCellsideCollision.setUp(TestCellsideCollision.java:36)

Ufo13
30-05-2006, 21:54
java.lang.RuntimeException: The file containing the keys configuration does not exists at it.diamonds.engine.Config.<init>(Config.java:36) at it.diamonds.engine.Config.create(Config.java:44) at it.diamonds.engine.Environment.<init>(Environment.java:31) at it.diamonds.engine.Environment.createForTesting(Environment.java:43) at it.diamonds.tests.TestCellsideCollision.setUp(TestCellsideCollision.java:36)

da me è green come mai?

fek
30-05-2006, 22:30
Perche' sembra che la buildmachine sia impazzita. Ho rifatto il checkout del progetto e l'ho fatta ripatire. Sembra ok.

Bonfo
30-05-2006, 22:54
Ragazzi...è normale che i tasti non mi vadano più?? :muro: :muro:
Arrivato alla schermata dei menù non risco a fare nulla.
Il gioco nonrisponde più all atastiera :eekk: :eekk: :eekk:

Ufo13
30-05-2006, 23:42
anche io non riesco più ad usare la tastiera nel gioco..

VICIUS
31-05-2006, 00:00
Cesare ne sa una più del diavolo. Prima ha fatto esplodere la build machine e ora la tastiera no va. :D

ciao ;)

Ufo13
31-05-2006, 00:07
ehehe vabè siamo in pesante fase di refactoring :D

Significa che mancano dei test :)

cdimauro
31-05-2006, 08:50
Ragazzi...è normale che i tasti non mi vadano più?? :muro: :muro:
Arrivato alla schermata dei menù non risco a fare nulla.
Il gioco nonrisponde più all atastiera :eekk: :eekk: :eekk:
No, non è affatto normale, infatti: era un bug che aveva introdotto nell'ultima rifattorizzazione. :cry:

I test passavano tutti perché era un problema dovuto esclusivamente all'implementazione di LWJGLKeyboard.
In pratica, dopo aver convertito il "raw" key in EventType, dentro update(), facevo la stessa cosa in notifyEvent(), ma col valore già convertito.

Eliminata quella riga di codice ha funzionato nuovamente tutto. :muro:

cdimauro
31-05-2006, 08:56
Cesare ne sa una più del diavolo. Prima ha fatto esplodere la build machine e ora la tastiera no va. :D

ciao ;)
E forse sono anche l'unico a cui Eclipse / Java non ha funzionato su TUTTE le macchine che ho usato.
Per dire l'ultima: stamattina verso le 5, mi sono collegato al forum e ho visto che c'era questo problema. Ero col portatile, che non usavo più da tempo per lavorare a Diamonds; ho fatto l'update, e da allora ho provato in tutti i modi (compreso scaricare l'ultima versione di Eclipse e ricominciare da capo) a lanciare Game.java: nulla di fatto. L'ultimo errore che mi dava era che non riusciva a trovare il main. Alle 7 ho dovuto staccare.

Qui, invece, ho perso "soltanto" venti minuti dietro ai problemi col display, che non funzionava da commandline e da Eclipse non mi permetteva di debuggare. :muro:
Alla fine ho risolto togliendo di mezzo il fullscreen. Dopo 5 minuti avevo trovato già trovato il bug ed eseguito il commit.

Tutte le mie maledizioni vanno a chi ha creato Eclipse, ma soprattutto Java: al peggio non c'è mai fine.
Se non fosse per i tool di rifattorizzazione, di cui sono ormai morbosamente dipendente :oink: , prenderei a calcioni Eclipse dalla mattina alla sera... :muro:

VICIUS
31-05-2006, 09:04
Tutte le mie maledizioni vanno a chi ha creato Eclipse, ma soprattutto Java: al peggio non c'è mai fine.
Se non fosse per i tool di rifattorizzazione, di cui sono ormai morbosamente dipendente :oink: , prenderei a calcioni Eclipse dalla mattina alla sera... :muro:
Siamo in due. :D Sono sicuro che fra qualche anno ci troveremo insieme in una "comunità di recupero" per disintossicarci.

ciao ;)

cionci
31-05-2006, 09:27
IMHO ci sarebbe da abilitare il fullscreen solo nella versione di produzione tramite un'opzione di configurazione...

thebol
31-05-2006, 09:50
IMHO ci sarebbe da abilitare il fullscreen solo nella versione di produzione tramite un'opzione di configurazione...

sarebbe comodo anche per il restart del gioco sul game over sta cosa...
Oppure introdurre il singlePlayer :)

cdimauro
31-05-2006, 10:01
Perfettamente d'accordo con tutti e tre. :p

Una cosa volevo sottolineare, comunque: ho notato ieri che è stata creata un'istanza di Config FUORI da Environment. Visto che abbiamo deciso di "centralizzare" il tutto usando questa classe, sarebbe bene usare sempre e soltanto lei per create istanze delle classi "principali" di cui facciamo uso.

Una soluzione a questo problema sarebbe quello di rendere privati i metodi static "create" e usare il meccanismo dei metodi "friend", ma Fran è LEGGERMENTE in disaccordo :D, per cui cerchiamo di applicare sempre le stesse regole nella scrittura del codice. ;)

fek
31-05-2006, 10:19
Siamo in due. :D Sono sicuro che fra qualche anno ci troveremo insieme in una "comunità di recupero" per disintossicarci.

ciao ;)

Siamo in tre. Programmo in C++ durante il giorno sognando il tool di refactoring di Eclipse.

Jocchan
31-05-2006, 10:33
IMHO ci sarebbe da abilitare il fullscreen solo nella versione di produzione tramite un'opzione di configurazione...
Il full screen è già settabile, per toglierlo basta settare l'apposito valore a zero in GameConfig ;)

sarebbe comodo anche per il restart del gioco sul game over sta cosa...
Oppure introdurre il singlePlayer :)
Cosa intendi per "restart sul game over"?
Per il single player purtroppo c'è un mare di lavoro da fare. Introdurlo significa non rilasciare altre versioni per un bel pò.

cionci
31-05-2006, 10:34
Il full screen è già settabile, per toglierlo basta settare l'apposito valore a zero in GameConfig ;)
Me l'ero perso...ma in ogni caso credo che converrebbe tenerlo disabilitato di default nel repository...

fek
31-05-2006, 10:49
Me l'ero perso...ma in ogni caso credo che converrebbe tenerlo disabilitato di default nel repository...

Assolutamente si'.

thebol
31-05-2006, 10:54
Cosa intendi per "restart sul game over"?
Per il single player purtroppo c'è un mare di lavoro da fare. Introdurlo significa non rilasciare altre versioni per un bel pò.

il fatto che nel 1vs1 se uno dei 2 va in gameOver il gioco riparte.

cdimauro
31-05-2006, 10:56
Me l'ero perso...ma in ogni caso credo che converrebbe tenerlo disabilitato di default nel repository...
Già fatto nel primo commit di stamattina. ;)

Bonfo
31-05-2006, 12:33
No, non è affatto normale, infatti: era un bug che aveva introdotto nell'ultima rifattorizzazione. :cry:

I test passavano tutti perché era un problema dovuto esclusivamente all'implementazione di LWJGLKeyboard.
In pratica, dopo aver convertito il "raw" key in EventType, dentro update(), facevo la stessa cosa in notifyEvent(), ma col valore già convertito.

Eliminata quella riga di codice ha funzionato nuovamente tutto. :muro:

Ma quindi non esitono test per questo problema ??? :confused:

Jocchan
31-05-2006, 12:56
il fatto che nel 1vs1 se uno dei 2 va in gameOver il gioco riparte.

Ora ho capito :)
In tal caso, sono d'accordo. Per il testing sarebbe molto più comodo.

cdimauro
31-05-2006, 13:03
Hai ragione. Nella foga di fixare il bug ho dimenticato di scrivere il test. :(

Ecco qua:
public class TestKeyboard extends TestCase implements Listener
{

private Event notifiedEvent;

public void testNotifyCorrectEventToListners()
{
environment.getKeyboard().setListener(this);
environment.getKeyboard().notify(Event.create(Code.KEY_A, State.PRESSED));
assertTrue(notifiedEvent.is(Code.KEY_A));
assertTrue(notifiedEvent.isPressed());
}


public void notify(Event event)
{
notifiedEvent = event;
}


}
Oltre a questo test, ho commitato anche delle modifiche al codice: adesso Input preleva gli eventi da un generico InputDevice (che in questo momento è la tastiera).
KeyboardInterface estende InputDevice e aggiunge soltanto un metodo (shutDown). ;)

thebol
31-05-2006, 14:36
forse è frutto del refactoring di bigGem & company, ma ci sono dei bug nelle bigGem, a volte si sfasano(oggi ho giocato per la prima volta 1vs1, è una droga :asd: ).

Ho lo screen sul portatile, stasero lo posto.

thebol
31-05-2006, 19:33
ecco il bug.

è stato fatto con la rev 2165, + bugfix di cdimauro

Ufo13
31-05-2006, 19:41
Hmmm riesci a scrivere un test vedendo il log per caso?

thebol
31-05-2006, 21:11
Hmmm riesci a scrivere un test vedendo il log per caso?
l'ho salvato, ma ero molto avanti nella partita...
cmq ci provo

thebol
31-05-2006, 21:19
l'ho salvato, ma ero molto avanti nella partita...
cmq ci provo
nulla troppo lungo...
cmq mi è capitato altre volte in 20m circa di gioco, quindi è riproducibile.

jappilas
31-05-2006, 21:33
ecco il bug.

è stato fatto con la rev 2165, + bugfix di cdimauro
sporadicamente constatavo lo stesso comportamento anche piu' di una settimana fa ;)

Ufo13
31-05-2006, 21:58
comunque aspetterei la fine del refactoring dei Droppables + BigGem prima di pensare a questo bugfix poichè molto del codice attuale che gestisce le BigGem deve essere modificato/eliminato.

cdimauro
05-06-2006, 14:09
Da almeno un paio d'ore ho problemi a collegarmi al repository per effettuare l'update e finire il mio task:
Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione.
svn: Can't connect to host 'repository.diamondcrush.net': Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione.
Succede anche a voi?

Bonfo
05-06-2006, 20:18
Bisogna assolutamente mettere ordine ai moveDown, sia di AbstractDroppable che di BigGem.
Per farlo mi sa che ci voglia una squadra di refactor dei test :doh:

Ecco un bel Bug:

Bonfo
05-06-2006, 20:34
:eekk: :eekk:

Nessuna pressione di tasto...nessuna interazione col gioco...
http://img431.imageshack.us/img431/3710/gameover5ua.th.jpg (http://img431.imageshack.us/my.php?image=gameover5ua.jpg)
..io ho perso e la mia ragazza no :cry:

Mi sa che è da mettere a posto :D

cionci
06-06-2006, 11:02
Nessuna pressione di tasto...nessuna interazione col gioco...
E' il solito problema relativo a quel refactoring del timestamp... In pratica non propagando lo STESSO timestamp ad entrambi i playfield il gioco va leggermente fuori sincronia... Manca solo da metterlo a posto in playfield (il resto l'avevo tutto già fatto), ma mi saltavano 20 test e non capivo il motivo...

Scusate ragazzi per l'assenza, ma sono, non nei casini, di più... Sono fisso a programma per J2ME ;)

andbin
09-06-2006, 15:10
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :(

Ho seguito la procedura descritta in questo (http://www.hwupgrade.it/forum/showpost.php?p=9498250&postcount=1) post di fek ma TortoiseSVN mi segnala questo errore:

Error: Can't connect to host 'spartacus.dnsalias.net': Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato.(Il server potrebbe forse essere semplicemente "down")

Ah, già che ci sono, un'altra domanda. :p
Per compilarlo cosa serve??? Io non ho gli IDE come Eclipse e simili. Ho solo il JDK 5.0, Ant 1.6.5 e JUnit 3.8.2. Bastano???

Grazie! :)

Bonfo
09-06-2006, 19:10
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :(

Ho seguito la procedura descritta in questo (http://www.hwupgrade.it/forum/showpost.php?p=9498250&postcount=1) post di fek ma TortoiseSVN mi segnala questo errore:

Error: Can't connect to host 'spartacus.dnsalias.net': Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato.(Il server potrebbe forse essere semplicemente "down")

Ah, già che ci sono, un'altra domanda. :p
Per compilarlo cosa serve??? Io non ho gli IDE come Eclipse e simili. Ho solo il JDK 5.0, Ant 1.6.5 e JUnit 3.8.2. Bastano???

Grazie! :)


Sì...mi sa che il server è DOWN :(

Per compilare, se hai già ant, basta che:
- decomprimi
- vai dentro la cartella
- esegui il comando ANT

FATTO !! :D

Poi in base alla piattaforma su cui stia lavornado lanci o il .bat o l'.sh

^TiGeRShArK^
09-06-2006, 20:02
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :(

Ho seguito la procedura descritta in questo (http://www.hwupgrade.it/forum/showpost.php?p=9498250&postcount=1) post di fek ma TortoiseSVN mi segnala questo errore:

Error: Can't connect to host 'spartacus.dnsalias.net': Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato.(Il server potrebbe forse essere semplicemente "down")

Ah, già che ci sono, un'altra domanda. :p
Per compilarlo cosa serve??? Io non ho gli IDE come Eclipse e simili. Ho solo il JDK 5.0, Ant 1.6.5 e JUnit 3.8.2. Bastano???

Grazie! :)
ehm...
mi sa che però i parametri sono lievemente cambiati da quel post di fek :D
svn://repository.diamondcrush.net:20140/diamonds/trunk
questo dovrebbe essere l'indirizzo corretto ;)

71104
09-06-2006, 22:21
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :( chiunque ne ha le capacità, basta sapere un minimo di Java e fare un po' di training con qualcuno del team

thebol
10-06-2006, 13:44
ho spostato un po di classi di test(ho creato il package per grid e grid.state, perche in test c'erano troppe classi).

fate sync

thebol
10-06-2006, 14:23
mi è venuta in mente una probabile sitazione critica per le dinamiti

in un caso in cui:
ci sia una big gem larga 3
appoggiata su una colonna larga 1

la gemsPair ci si puo infilare sotto.

Cosa succederebbe se la colonna crollasse per la dinamite, e la bigGem cadesse sulla gemsPair ancora in caduta?(si potrebbe farla travolgere)

Bonfo
10-06-2006, 16:49
Travolgere... :mbe:
...cioè sì...fai cadere tutto alla StrongestGravity e poi rimarrà la gemsPair con sopra la bigGem.

Che ne dici?? :stordita:

thebol
10-06-2006, 17:45
Travolgere... :mbe:
...cioè sì...fai cadere tutto alla StrongestGravity e poi rimarrà la gemsPair con sopra la bigGem.

Che ne dici?? :stordita:

esatto.

certo che è una situazione molto rara, ma bisogna segnarci di gestirla

Jocchan
10-06-2006, 19:25
Se pò fà. Una bella spintonata verso il basso alla gemspair e si va avanti.
L'altro giorno parlavo con Ufo di questa eventualità, ed ero orientato per considerare la gemspair dropped dopo l'impatto (insomma, il giocatore ne perderebbe il controllo)... ma la semplice spintonata potrebbe essere più efficiente, e persino più semplice da implementare.

thebol
10-06-2006, 19:55
Se pò fà. Una bella spintonata verso il basso alla gemspair e si va avanti.
L'altro giorno parlavo con Ufo di questa eventualità, ed ero orientato per considerare la gemspair dropped dopo l'impatto (insomma, il giocatore ne perderebbe il controllo)... ma la semplice spintonata potrebbe essere più efficiente, e persino più semplice da implementare.

beh alla fine è lo stesso discorso o sbaglio?

Jocchan
10-06-2006, 20:39
beh alla fine è lo stesso discorso o sbaglio?

Più o meno sì :)

Jocchan
12-06-2006, 11:42
Build rotta.

DanieleC88
12-06-2006, 11:49
Build rotta.
Corretto, era un semplicissimo errore di formattazione che CheckStyle non accettava. ;)

VICIUS
12-06-2006, 11:56
Corretto, era un semplicissimo errore di formattazione che CheckStyle non accettava. ;)
Ti sei finalmente deciso a ritornare attivo? :D

ciao ;)

Jocchan
12-06-2006, 11:57
Grazie, Daniele. Vic, quando ci sei buttiamo giù i task.

DanieleC88
12-06-2006, 12:24
Ti sei finalmente deciso a ritornare attivo? :D

ciao ;)
Certamente. ;)
Devo solo trovare un task alla mia portata. Nel frattempo mi sto navigando il codice cercando qualcosa da migliorare, ma non so dove mettere le mani, non trovo difetti. :)

thebol
12-06-2006, 13:07
Ho appena fatto una prova per vedere se il contatore delle crush funziona con le dinamiti, e in come sospettavo funziona =D e viene fuori il bannerino per quanto è grossa la crush.

L'unica cosa e che la dinamite non è contata come crush, ma è il meno ;)

Bonfo
12-06-2006, 14:46
Certamente. ;)
Devo solo trovare un task alla mia portata. Nel frattempo mi sto navigando il codice cercando qualcosa da migliorare, ma non so dove mettere le mani, non trovo difetti. :)

In realtà ce ne sono :cry:
guardati un po' il thread sul refactoring di Droppable e BigGem e dacci una mano :D

DanieleC88
12-06-2006, 16:00
In realtà ce ne sono :cry:
guardati un po' il thread sul refactoring di Droppable e BigGem e dacci una mano :D
Ok, allora vengo a vedere e se posso aiuto. ;)

Ufo13
16-06-2006, 19:34
Credo che tutti i bug relativi alla visualizzazione di BigGem siano stati fixati. Potreste provare a riprodurli?

Bonfo
16-06-2006, 19:43
E' normale che la dinamite sia sempre la "gemma" inferiore nella coppia ???

thebol
16-06-2006, 20:18
E' normale che la dinamite sia sempre la "gemma" inferiore nella coppia ???

se hai fatto la prova con dynamiteProbability a 100 si :p

in una situazione normale non saprei dire..


ps.svn è giu anche a voi?

Bonfo
17-06-2006, 01:43
se hai fatto la prova con dynamiteProbability a 100 si :p

:D :D

Intendevo: quando si presenta una gemsPair che contenga una dinamite la dinamite è sempre la "gemma" inferiore della coppia

thebol
17-06-2006, 10:06
:D :D

Intendevo: quando si presenta una gemsPair che contenga una dinamite la dinamite è sempre la "gemma" inferiore della coppia
ho appena provato in modalità normale, e mi è arrivata giu una pair con la dinamite in alto.

mettendo dynamiteProbability a 100, viene sempre inferiore perche:

a 100 dovrebbero essere tutte dinamiti;
la prima è una dinamite;
la seconda non puo essere una dinamite perche non ci possono essere 2 dinamiti attaccate;
la terza sarà una dinamite;

e cosi via..

Bonfo
17-06-2006, 13:00
ho appena provato in modalità normale, e mi è arrivata giu una pair con la dinamite in alto.

mettendo dynamiteProbability a 100, viene sempre inferiore perche:

a 100 dovrebbero essere tutte dinamiti;
la prima è una dinamite;
la seconda non puo essere una dinamite perche non ci possono essere 2 dinamiti attaccate;
la terza sarà una dinamite;

e cosi via..

sul 100 eravamo d'accordo :D
Il problema è che in modalità normale non dovrebbero esserci le dinamiti :eekk:
Volevi scrivere advanced vero :stordita:

thebol
17-06-2006, 13:19
sul 100 eravamo d'accordo :D
Il problema è che in modalità normale non dovrebbero esserci le dinamiti :eekk:
Volevi scrivere advanced vero :stordita:

ovvio :asd:

anche perche il task sulla modalita normale/advance l'avevo fatto io :asd:

jappilas
22-06-2006, 23:46
visto adesso questo comportamento sulle bigGem in seguito a una crush
se qualcuno ha idea di cosa lo possa causare ...

altrimenti provo a dedicarmici io domani :stordita:

thebol
23-06-2006, 07:47
visto adesso questo comportamento sulle bigGem in seguito a una crush
se qualcuno ha idea di cosa lo possa causare ...

altrimenti provo a dedicarmici io domani :stordita:

ho visto anche di peggio :asd:
ma senza log e con il refactoring di bigGem in corso è un po dura andarci dietro

jappilas
23-06-2006, 11:54
ho visto anche di peggio :asd:
ma senza log e con il refactoring di bigGem in corso è un po dura andarci dietro
ah ok... mi era venuto il dubbio che non fosse tra i bug noti (non conoscendolo io... :fagiano: :D :p ) e/o fosse tra quelli che si presumevano risolti col refactoring di bigGem ( che per qualche strano motivo, mi pareva fosse finito... :p )
ultimamente sono davvero stordito, per cui chiedo scusa... :O

thebol
23-06-2006, 11:59
ah ok... mi era venuto il dubbio che non fosse tra i bug noti (non conoscendolo io... :fagiano: :D :p ) e/o fosse tra quelli che si presumevano risolti col refactoring di bigGem ( che per qualche strano motivo, mi pareva fosse finito... :p )
ultimamente sono davvero stordito, per cui chiedo scusa... :O

no beh, se riesci ad andarci dietro e risolverlo meglio :)(un test vale sia se il refactoring è finito o no).

il problema e che quando l'ho verificato giocavo con un mio amico, e non ho la minima idea di come riprodurlo.

Per questo aspetterei il log e il refactoring(che dovrebbe semplificare e unificare la gestione delle droppable)

thebol
24-06-2006, 18:17
a tener spinto il pulsante per far esplodere le dinamite, queste esplodono subito.


ps(ho notato che alcuni test annessi sono commentati per refactoring in corso, probabilmente è quello ;) )

71104
24-06-2006, 20:04
io ne ho commentati alcuni perché erano incomprensibili (troppo lunghi e complessi, troppe asserzioni); che ci siano o no non fa molta differenza visto che quei test non mi dicono nulla quando li vado a leggere. probabile che siano gli stessi a cui ti riferisci tu. ad ogni modo sono sicuro che questo crisis-refactoring introdurrà una marea di bug, ma ne usciremo anche con un perfetto sistema di logging che ci permetterà di correggerli molto velocemente (anche perché buona parte saranno gli stessi che abbiamo avuto in passato). quindi se trovate i bug per ora prendetela con un po' di filosofia :p se riuscite a correggerli bene, ma non vi ci scervellate troppo: non ha senso fasciare la caviglia se tanto stiamo per amputare la gamba.

Bonfo
24-06-2006, 20:14
non ha senso fasciare la caviglia se tanto stiamo per amputare la gamba.

:asd: :asd: :asd: :asd:

DanieleC88
26-06-2006, 11:41
non ha senso fasciare la caviglia se tanto stiamo per amputare la gamba.
:mano: :asd:

^TiGeRShArK^
01-07-2006, 20:06
:mbe:
sto assistendo ad una cosa stranissima...
sto eliminando tutti i java.io.FileSeparator in moda da aumentare la leggibilità del codice e eventualmente nel caso in cui riprendiamo il progetto e usiamo webstart...
ma mi sono accorto di una cosa stranissima...
testAllTexturesLoadedBeforeStartPlaying ogni volta che faccio una sostituzione fallisce perchè si ritrova + texture di quelle che si aspetta...:mbe:
Da cosa può dipendere questo comportamento?
magari prima non riusciva a precaricare tutte le texture per qualche strano motivo che mi sfugge? :mbe:

jappilas
01-07-2006, 20:08
:mbe:
sto assistendo ad una cosa stranissima...
sto eliminando tutti i java.io.FileSeparator in moda da aumentare la leggibilità del codice e eventualmente nel caso in cui riprendiamo il progetto e usiamo webstart...
ma mi sono accorto di una cosa stranissima...
testAllTexturesLoadedBeforeStartPlaying ogni volta che faccio una sostituzione fallisce perchè si ritrova + texture di quelle che si aspetta...:mbe:
Da cosa può dipendere questo comportamento?
magari prima non riusciva a precaricare tutte le texture per qualche strano motivo che mi sfugge? :mbe:
scommetto che fallisce in junit ma non in ant :D

il famigerato testAllTexturesLoadedEccetera era in effetti un test idiosincrasico , nel senso che a volte falliva in junit per passare in ant, a causa se non ricordo male dello stato dei test fin lì eseguiti da junit stesso :p

poi tale idiosincrasia è stata bypassata qualche mese fa con un refactoring operato da cesare...

^TiGeRShArK^
01-07-2006, 20:10
scommetto che fallisce in junit ma non in ant :D
no...pensavo anch'io fosse quel problema che mi era capitato un paio di volte....
ma fallisce sia in juint che in ant....:mbe:
e tutti e due riportano un numero maggiore di texture di quelle che si aspettava il test :mbe:
ora ad esempio ne ha 49 mentre se ne aspettava 45 (prima delle modifiche se ne aspettava 44)
boh... non ho idea da cosa può dipendere.. :confused:

Bonfo
01-07-2006, 20:57
no...pensavo anch'io fosse quel problema che mi era capitato un paio di volte....
ma fallisce sia in juint che in ant....:mbe:
e tutti e due riportano un numero maggiore di texture di quelle che si aspettava il test :mbe:
ora ad esempio ne ha 49 mentre se ne aspettava 45 (prima delle modifiche se ne aspettava 44)
boh... non ho idea da cosa può dipendere.. :confused:

ATTENZIONE: io non toglierei i separatori che con tanta fatica Cesere ha messo. :nonsifa: è l'unico modo per avere i path indipendenti dalla piattaforma.

Inoltre mi sa che il test era stato messo a posto per capire da solo quante texture deve caricare e di conseguenza controllare che utte siano caricate.
Se proprio dela vedi brutta fai una stampa delle texture caricate per poi controllare ;)