Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Le Jabra Evolve3 85 non sono semplicemente cuffie Bluetooth con cancellazione del rumore. Sono un dispositivo professionale pensato per chi trascorre gran parte della giornata in riunione, al telefono o davanti a un assistente basato sull'intelligenza artificiale
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-04-2006, 23:02   #1
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
crash OpenAL

il crash che avviene ogni tanto nel gioco è dovuto a OpenAL (più raramente a un problema di gestione delle stones), e la causa sembra essere il modo errato in cui utilizzo la classe DroppableFactory in StoneFallState; in attesa che io scopra come va utilizzata quella classe (mi serve per inizializzare correttamente le animazioni delle stones) vi evidenzio nel codice qui riportato (che si trova in DroppableFactory.java) le righe che dovete commentare per poter giocare senza crash:
Codice:
package it.diamonds.gems;


import it.diamonds.engine.Config;
import it.diamonds.engine.audio.Sound;


public class DroppableFactory
{
    private Sound sound;

    private int gemAnimationUpdateRate;

    private int gemAnimationDelay;



    public DroppableFactory(Config config)
    {
        sound = new Sound("diamond");
        gemAnimationUpdateRate = config.getInteger("GemAnimationUpdateRate");
        gemAnimationDelay = config.getInteger("GemAnimationDelay");
    }


    public static DroppableFactory createForTesting()
    {
        return new DroppableFactory(Config.createForTesting());
    }


    private Droppable setupGemAnimationAndSound(Droppable newGem)
    {
        newGem.setCollisionSound(sound);
        newGem.createAnimationSequence(gemAnimationUpdateRate);

        return newGem;
    }


    public Droppable create(DroppableType type, DroppableColor color)
    {
        Droppable newDroppable = null;
        
        if (type.isChest())
        {
            newDroppable = Chest.create(color, gemAnimationDelay);
        }
        else 
        if (type.isFlashingGem())
        {
            newDroppable = FlashingGem.create();            
        }
        else 
        if (type.isGem())
        {
            newDroppable = Gem.create(color, gemAnimationDelay);
        }
        else
        if (type.isStone())
        {
            newDroppable = Stone.create(color);
        }
        
        return setupGemAnimationAndSound(newDroppable);
    }


    public Droppable createFlashingGem()
    {
        return create(DroppableType.FLASHING_GEM, null);
    }


    public Droppable createStone(DroppableColor color)
    {
        return create(DroppableType.STONE, color);
    }
}
qualcuno che se ne intende di questa classe potrebbe per cortesia guardare come l'ho utilizzata in StoneFallState e dirmi cosa c'è di sbagliato??
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 01:17   #2
BlueDragon
Senior Member
 
L'Avatar di BlueDragon
 
Iscritto dal: Dec 2002
Messaggi: 418
Ciao 71104,
il problema è che OpenAL gestisce un limitato numero di fonti (il numero esatto credo dipenda dalla scheda audio del pc).
Ad ogni Sound noi associamo una nuova fonte.
Ogni DroppableFactory ha 1 solo Sound che usa per tutte le gemme che crea.
Purtroppo StoneFallState crea una nuova factory per ogni sua istanza.
CrushState crea nel tempo vari StoneFallState, ed alla fine il numero delle fonti sonore generate supera il massimo gestibile...crash!
BlueDragon è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 07:47   #3
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da BlueDragon
Ciao 71104,
il problema è che OpenAL gestisce un limitato numero di fonti (il numero esatto credo dipenda dalla scheda audio del pc).
Ad ogni Sound noi associamo una nuova fonte.
Ogni DroppableFactory ha 1 solo Sound che usa per tutte le gemme che crea.
Purtroppo StoneFallState crea una nuova factory per ogni sua istanza.
CrushState crea nel tempo vari StoneFallState, ed alla fine il numero delle fonti sonore generate supera il massimo gestibile...crash!
\o/ singletone \o/ su dropfactory

o su una factory di oggetti sound, che va creata in gameLoop e comune a i 2 playField.

oppure lo si passa tramite parametro da gameLoop fino al gridController

Ultima modifica di thebol : 12-04-2006 alle 07:49.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 10:08   #4
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da thebol
\o/ singletone \o/ su dropfactory

o su una factory di oggetti sound, che va creata in gameLoop e comune a i 2 playField.

oppure lo si passa tramite parametro da gameLoop fino al gridController
Singleton?

Allora, abbiamo bisogno urgentissimo del seguente refactoring: il costruttore di Sound diventa privato e i suoni si creano dalla classe Audio che deve essere propagata fino a DroppableFactory (quindi niente Singleton ). Audio fa pooling di Sound e quando viene fatta richiesta di creazione di un Sound, controlla che sia gia' stato creato e ritorna una copia o ne crea uno nuovo se necesario.

Questo dovrebbe risolvere il problema che abbiamo adesso. Quando poi ci serviranno piu' di N suoni diversi contemporaneamente risolveremo anche quel problema (bello OpenAL, lo potessino).

Me ne posso occupare io stasera se volete o uno di voi oggi. E' urgentissimo perche' e' un crash che impedisce di giocare (classe A).
fek è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 10:08   #5
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da thebol
\o/ singletone \o/ su dropfactory

o su una factory di oggetti sound, che va creata in gameLoop e comune a i 2 playField.

oppure lo si passa tramite parametro da gameLoop fino al gridController
Hmmmmm sarà mica giunto il momento di implementare il SoundBank?
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 11:06   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da fek
Singleton?

Allora, abbiamo bisogno urgentissimo del seguente refactoring: il costruttore di Sound diventa privato e i suoni si creano dalla classe Audio che deve essere propagata fino a DroppableFactory (quindi niente Singleton ). Audio fa pooling di Sound e quando viene fatta richiesta di creazione di un Sound, controlla che sia gia' stato creato e ritorna una copia o ne crea uno nuovo se necesario.

Questo dovrebbe risolvere il problema che abbiamo adesso. Quando poi ci serviranno piu' di N suoni diversi contemporaneamente risolveremo anche quel problema (bello OpenAL, lo potessino).

Me ne posso occupare io stasera se volete o uno di voi oggi. E' urgentissimo perche' e' un crash che impedisce di giocare (classe A).
Era più o meno quello che prevedevo di fare dopo aver fatto la stessa cosa con Engine / Texture.

Così mi risparmi un bel po' di lavoro. Thanx!
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 22:49   #7
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Ho fissato il bug di OpenAL facendo pooling di Sound e creando Sound a partire da un oggetto Audio.

Questo pero' vuol dire dover propagare Audio giu' per tutta la gerarchia e non e' banale da risolvere con la struttura corrente. Servirebbe un buon refactoring per capire quali classi sono necessarie globalmente, metterle in un oggetto tipo Environment e propagare lui.

Ma non c'era tempo per questo refactoring, c'era da risolvere il bug per la First Playable, quindi ci voleva un orribile hack: Config e' propagato quasi ovunque, ho messo l'oggetto Audio li' dentro. Lo so, e' orribile, mi pento e mi ripento di questa scelta, ma il bug e fixato, ora c'e' solo da rifatorizzare il fix in una soluzione piu' mantenebile.

Ho aggiunto i test per il pooling di Sound, che implicitamente testano anche il bug.

Voi non siete autorizzati ad hackare brutalmente come ho fatto io, fate quello che vi dico non quello che faccio
fek è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 22:56   #8
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da fek
Ho fissato il bug di OpenAL facendo pooling di Sound e creando Sound a partire da un oggetto Audio.

Questo pero' vuol dire dover propagare Audio giu' per tutta la gerarchia e non e' banale da risolvere con la struttura corrente. Servirebbe un buon refactoring per capire quali classi sono necessarie globalmente, metterle in un oggetto tipo Environment e propagare lui.

Ma non c'era tempo per questo refactoring, c'era da risolvere il bug per la First Playable, quindi ci voleva un orribile hack: Config e' propagato quasi ovunque, ho messo l'oggetto Audio li' dentro. Lo so, e' orribile, mi pento e mi ripento di questa scelta, ma il bug e fixato, ora c'e' solo da rifatorizzare il fix in una soluzione piu' mantenebile.

Ho aggiunto i test per il pooling di Sound, che implicitamente testano anche il bug.

Voi non siete autorizzati ad hackare brutalmente come ho fatto io, fate quello che vi dico non quello che faccio
Ottimo!
Voglio dire deprecabile... ma, in queste circostanze, davvero ottimo
Posso segnalare il bug come FIXED?
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2006, 23:36   #9
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Jocchan
Ottimo!
Voglio dire deprecabile... ma, in queste circostanze, davvero ottimo
Posso segnalare il bug come FIXED?
Prima testalo per assicurarti che sia fissato.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2006, 08:24   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Ottima soluzione. Avrei voluto infilare anch'io Engine, Audio, Keyboard, ecc. dentro Config, perché propagare tutti questi oggetti era ed è un grosso problema per procedere con alcuni refactoring, ma mi sono astenuto perché tenevo alle mie dita.

Proporrei di creare adesso una classe Environment e "sostituirla" a Config nelle varie API: penso che ne gioverebbe tutto il codice, e lavorare dovrebbe risultare più semplice (ho già un "repository" dove andare a pescare i singleton che mi servono, all'occorrenza).
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2006, 09:31   #11
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cdimauro
Ottima soluzione. Avrei voluto infilare anch'io Engine, Audio, Keyboard, ecc. dentro Config, perché propagare tutti questi oggetti era ed è un grosso problema per procedere con alcuni refactoring, ma mi sono astenuto perché tenevo alle mie dita.

Proporrei di creare adesso una classe Environment e "sostituirla" a Config nelle varie API: penso che ne gioverebbe tutto il codice, e lavorare dovrebbe risultare più semplice (ho già un "repository" dove andare a pescare i singleton che mi servono, all'occorrenza).
L'idea e' proprio questa classe Environment o qualcosa di analogo. I singleton pero' sono contro la mia religione

Mi confermate che il bug e' fissato?
fek è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2006, 10:26   #12
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Ho testato a fondo, e il bug non mi si presenta più.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Raffreddamento a liquido e schermo perso...
TSMC valuta la produzione di 3D DRAM su ...
Il Cybertruck ha i giorni contati? Musk ...
Meta porta la voce su Muse, e a sponsori...
Perché il disco principale di Win...
Quanta acqua consuma l'IA? Da cinque goc...
Airbnb lancerà un assistente AI per pian...
25 miliardi sul tavolo: i sauditi voglio...
TV Haier QLED da 65'' a meno di 400€ su ...
Il meglio degli sconti Amazon del weeken...
Il rumore degli aerei in sottofondo può ...
Ecco un tapis roulant pieghevole da 14 k...
Roborock Qrevo 2 Pro Set, coupon da 50€ ...
Gemini addestra l'IA con le chat private...
Addio ai floppy disk nei centri di contr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v