[FIFA19] Crash DirectX function Dx12Renderer::waitOnSwapChain

In modo del tutto casuale durante il gioco (a me è successo con FIFA19, ma pare succeda anche con altri giochi tipo Battlefield) tutto si blocca con il seguente DirectX Error:

DirectX function “Dx12Renderer::waitOnSwapChain Gpu timeout detected” failed with DXGI_ERROR_DEVICE_HUNG. DirectX function “Dx12Renderer::waitOnSwapChain Gpu timeout detected” failed with DXGI_ERROR_DEVICE_HUNG. GPU: “”, Driver: 43648. This error is usually caused by the graphics driver crashing; try installing the latest drivers. Also, make sure you have a supported graphics card with at least 1024 MB of VRAM.

Inutile dire come la scheda video abbia 8GB di RAM e i driver siano aggiornati all’ultima versione (nel mio caso driver NVIDIA 436.48). Anche reinstallare i driver non sembra sortire alcun effetto e il problema sembra manifestarsi in modo del tutto casuale (anche se potrebbe essere collegato alla connessione col server, dal momento che ho notato che appare più frequentemente, tanto da rendere il gioco ingiocabile, quando la EA ha problemi coi server).

In ogni caso una soluzione che sembra funzionare consiste nell’apportare una modifica al registro di sistema, aumentando il tempo per il parametro Timeout Detection and Recovery. In pratica Windows tenta di verificare se la scheda video abbia completato o meno una certa operazione entro un tempo consentito (2 secondi); qualora questo non succeda si innesca il meccanismo di errore. Una più dettagliata spiegazione del fenomeno può essere trovata sul supporto Microsoft.

Per cercare di correggere il problema aumentiamo quindi il tempo del TDR nella maniera seguente.

  1. Premiamo Win+R e digitiamo regedit nella finestra Esegui. Premiamo OK e apriamo il Registro di sistema.
  2. Posizioniamoci in Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
  3. Nel riquadro sulla destra clicchiamo con il tasto destro del mouse e creiamo una nuova chiave di tipo QWORD (per i computer a 64bit)
  4. Come nome della chiave digitiamo TdrDelay
  5. Clicchiamoci due volte sopra ed inseriamo 10 come valore decimale (altrimenti la lettera a come valore esadecimale) in modo da aumentare il tempo a 10 secondi (possiamo anche aumentare il valore maggiormente nell’eventualità di altri problemi)
  6. Chiudiamo il registro di configurazione e riavviamo il computer, in modo da ricaricare il registro (in teoria sarebbe sufficiente riavviare esplora risorse)

Fatto questo il problema non dovrebbe più presentarsi.

Nel caso che il problema non si fosse ancora risolto possiamo provare a modificare le Impostazioni 3D per il gioco (questo per i possessori di una NVIDIA).

Procediamo nella maniera seguente:

  1. Clicchiamo col destro sul desktop e scegliamo Pannello di controllo NVIDIA
  2. Andiamo su Impostazioni 3D > Gestisci le impostazioni 3D
  3. Apriamo la scheda Impostazioni programma e selezioniamo FIFA 19
  4. Modifichiamo le seguenti voci:
    Sincronizzazione verticale: Usa l’impostazione dell’applicazione 3D
    Tecnologia monitor: Aggiornamento fisso
    Velocità di aggiornamento preferita: La più elevata disponibile
  5. Premiamo sul tasto Applica

Il crash sulle DirectX 12 sembra infatti legato alla tecnologia G-SYNC dei monitor NVIDIA.

Vedi articolo

[risolto] Su Chrome appare una banda nera in alto che impedisce di cliccare sulle schede o sui pulsanti della finestra

Problema: Su Windows 10, utilizzando due monitor, su Chrome appare una banda nera in alto che impedisce di cliccare sulle schede, sul menu delle opzioni oppure sui pulsanti della finestra.

Soluzione: Aprire il task manager premendo ALT+CTRL+CANC e andando su Gestione Attività, andare in Dettagli e trovare il processo dwm.exe. Terminare il processo. Il processo dovrebbe riavviarsi da solo, risolvendo il problema.

Più nel dettaglio sembra che si tratti di un bug, già noto dalla seconda metà del 2018, di Windows 10. Nel caso specifico il problema si presenta nella maniera seguente:

Lì dove dovrebbero esserci le schede ed i pulsanti della finestra c’è solo una striscia nera. Il problema si presenta solamente a schermo intero e su un singolo monitor.

Riducendo la finestra, oppure aprendola a schermo intero su un altro monitor, il problema non sembra presentarsi. Dei due o più monitor non c’è uno “preferito” dal problema, avviene in modo casuale su qualunque. L’unica soluzione possibile sembra il riavvio del sistema.

Un’altra soluzione suggerita da Microsoft è quella di disabilitare l’accelerazione hardware in Chrome, ma questo non sembra incidere in alcun modo sulla questione, tanto più che io l’avevo disattivata da principio e la cosa è iniziata a succedere diverso tempo dopo.

In sostanza sembra che al momento, a meno che non correggano questo errore con qualche nuovo aggiornamento, l’unica soluzione concreta, a parte il riavvio, sia quella di terminare il processo dwm.exe (Desktop Windows Manager). Una volta terminato, il processo si riavvierà da solo e il problema non dovrebbe presentarsi, almeno per un po’.

Vedi articolo

[FIFA19] La connessione con l’avversario si è interrotta

Problema: Quando si cerca di giocare una partita online con un altro giocatore amico dopo l’invito ed una breve attesa appare il messaggio “La connessione con l’avversario si è interrotta“.

Soluzione: Una possibile soluzione consiste nel disabilitare il protocollo IPv6 e attivare l’UPnP sul router ed infine riavviare il gioco

Premetto che come ISP ho Fastweb e la soluzione è stata testata sul router in dotazione e Windows 10. Procediamo nel modo seguente.

Cerchiamo il Pannello di controllo nel menu principale:

Andiamo su Rete e Internet:

Poi su Centro connessioni di rete e condivisione

Clicchiamo su Modifica impostazioni scheda nel menu sulla sinistra.

Individuiamo la nostra scheda di rete, nel mio caso Ethernet, e clicchiamo col destro, poi spostiamoci su Proprietà e clicchiamo.

Cerchiamo la voce Protocollo Internet versione 6 (TCP/IPv6) e togliamo la spunta.

Per precauzione impostiamo il DNS sui Google DNS spostandoci su Protocollo Internet versione 4 (TCP/IPv4), selezioniamolo (ma attenzione a NON TOGLIERE la spunta) e poi clicchiamo su Proprietà.

Impostiamo il DNS su 8.8.8.8 e 8.8.4.4

Premiamo OK su tutto quanto.

Adesso controlliamo che sul router sia attivo l’UPnP. Nel caso del router Fastweb andiamo su Home > Casella degli strumenti > Condivisione giochi e applicazioni

Verifichiamo che l’UPnP sia attivo nel modo seguente:

Su un router Netgear D6300 l’opzione si trova tra le impostazioni avanzate:

E dev’essere impostata nel modo seguente:

Fatte tutte queste belle cose riavviamo la connessione cliccando su Disabilita

E poi di nuovo Abilita sulla scheda di rete.

Adesso riavviamo il gioco. Fatto tutto questo il problema dovrebbe essersi risolto e potremo tornare a giocare.

In caso di altri problemi suggerisco anche l’articolo ufficiale Risoluzione dei problemi per connessione per PC

Jordan Pickford, uno dei miei giocatori preferiti, oltre che portiere dell’Everton
Vedi articolo

Tow Point Hospital su Steam crash con errore TPH.exe e codice eccezione 0xc0000005

Questo codice di errore si verifica probabilmente perché c’è un file corrotto del gioco (o banalmente un aggiornamento andato male).

Si avvia il gioco e dopo un po’ va in crash senza motivo apparente.

Soluzione: bisogna verificare l’integrità dei file di gioco tramite lo strumento di Steam

Per farlo procedere nel modo seguente:

  1. Aprire Steam e andare su Libreria > Giochi
  2. Nell’elenco sulla sinistra cliccare col destro sul gioco e selezionare Proprietà

  3. Selezionare la scheda File locali e poi premere su Verifica integrità dei file di gioco
  4. Attendere la fine della procedura. Se il problema era di integrità si verrà avvisati che c’erano uno o più file corrotti e che saranno scaricati di nuovo. Si potrà notare attivo un download nell’omonima sezione.
  5. Fine. Adesso si può giocare di nuovo.

Vedi articolo

Ordine degli spinotti nella stanza di monitoraggio, Resident Evil 2 Remake [Claire B]

Similmente a quanto avviene nella prima parte con Leon, anche con Claire dobbiamo inserire gli spinotti nella stanza di monitoraggio.

Questa volta il messaggio cambia e l’ordine non è lo stesso di prima.

Il messaggio ci dice: “La torre è di fianco al cavallo, ma non di fronte alla regina. Il re non è di fianco alla regina, ma di fronte al cavallo, in fondo. Il cavallo non è dove dovrebbe essere.

La prima cosa da fare quindi è sostituire la posizione del cavallo. Le posizioni da occupare sono le seguenti:

Sulla parete alla nostra sinistra, guardando frontalmente quella centrale, vanno messi regina, alfiere e re. Sulla parete alla nostra destra vanno invece pedone, torre e cavallo.

Vedi articolo

Trovare auto giocattolo in The Division 2

Una delle missioni del Campus (per inciso quella denominata Giocattoli per bambini) richiede di donare un’auto giocattolo. Ma dove trovarla? In 85 ore di gioco non è saltata fuori da se e sembra che uno degli unici posti (sull’unicità non garantisco) dove salta fuori casualmente sia un vicolo poca sopra la Biblioteca memoriale Martin Luther King.

La posizione per la precisione è questa:

In fondo al vicolo, accanto ad un camion, si trova un mobile con cassetti dove è possibile, dopo un po’ di tentativi, trovare l’auto giocattolo.

Una volta recuperata ci si può recare al Campus per completare la missione (gli altri oggetti sono abbastanza comuni e si trovano un po’ ovunque, specialmente nelle case).

Infine riporto l’intera sequenza video per maggiore chiarezza.

Vedi articolo

Come riempire la soluzione diserbante nel laboratorio in Resident Evil 2 Remake

Resident Evil 2 è pieno di questi squisiti rompicapi e questo in particolare fa eco al cosiddetto enigma delle taniche d’acqua, reso famoso dal film Die Hard. Per chi ancora non lo avesse capito stiamo parlando del macchinario per la soluzione diserbante nel Drug Testing Lab, all’interno del laboratorio sotterraneo dell’Umbrella.

Questo qui insomma. La soluzione all’enigma è semplicissima, esattamente come quella del suddetto indovinello. In pratica bisogna fare nel modo seguente:

Alla partenza siamo in questa situazione. Vediamo che la differenza che c’è tra la soluzione verde e la linea rossa nel primo contenitore è la medesima che c’è tra l’intero primo contenitore ed il secondo. Essendo il liquido sufficiente a riempire tutto il primo contenitore se lo svuotassimo nel secondo contenitore, all’interno del primo resterebbe la quantità che cerchiamo. Notiamo subito che la metà del primo contenitore, piena di liquido per altro, è identica al terzo contenitore. Appurato tutto ciò scambiamo il primo con il secondo e premiamo il tasto verde. Dovremmo ottenere questo:

A questo punto nel secondo contenitore avanza giusto il liquido che c’è tra la linea rossa e la cima. Adesso disponiamo i contenitori nel modo seguente:

E riempiamo il primo contenitore in modo da ottenere questo:

Adesso non ci rimane che spostare al primo posto il terzo contenitore, ed il primo contenitore al secondo posto e poi procedere. La situazione prima di concludere dovrebbe essere questa:

Una volta riversato il liquido dal secondo nel primo avremo finito.

Vedi articolo

Ordine degli spinotti nella stanza di monitoraggio, Resident Evil 2 Remake [Leon A]

Una volta recuperati gli sei spinotti con le figure degli scacchi, ci si dovrà recare nella Stanza di monitoraggio per azionare il circuito elettrico e aprire la porta.

Sulla parete centrale c’è una bacheca con degli appunti, dove si troveranno gli indizi su come posizionare gli spinotti.

L’appunto recita “Se non sbaglio la torre e il cavallo sono sullo stesso muro, e l’alfiere e la regina non sono l’uno accanto all’altro. La regina e la torre, invece, sono ai lati opposti.

Questo indizio ci porta ad un’unica scelta possibile (bisognerà estrarre il cavallo dalla posizione attuale e spostarlo), che è la seguente, sulle due pareti:

Sulla parete alla nostra sinistra, guardando frontalmente quella centrale, vanno messi alfiere, torre e cavallo. Sulla parete alla nostra destra vanno invece pedone, regina e re.

Vedi articolo

[mysql] Creare una funzione che converta un codice hex RGB di CSS in valori HSV

Oggi propongo una piccola soluzione in SQL al problema dell’ordinamento dei colori. Una cosa apparentemente elementare si rivela in realtà estremamente complessa. Per un approfondimento generale sul tema consiglio questo interessantissimo articolo: The incredibly challenging task of sorting colours

Per quello che mi interessa voglio proporre oggi la soluzione dell’utilizzo dello spazio HSV per poterli ordinare.

Supponiamo di avere un database di colori in RGB formato esadecimale del CSS (per intendersi il rosso sarebbe #ff0000). Nell’esempio riportato suppongo che il codice di colore sia sempre a 6 caratteri.

Detto tutto questo andiamo alla nostra funzione in SQL:

Per utilizzarla possiamo fare così:

Vedi articolo

[risolto] UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe9 in position 0: ordinal not in range(128)

Questo genere di errore avviene in Python quando si cercano di convertire le stringhe da Unicode (UTF-8) in ASCII. Questo avviene più spesso di quanto non si creda, dal momento che le stringhe di testo sono tutte gestite come ASCII e il meccanismo che si occupa della conversione, paradossalmente, può gestire unicamente caratteri ASCII.

Per un approfondimento tecnico consiglio la lettura di questo articolo: Overcoming frustration: Correctly using unicode in python2

In questo caso voglio trattare l’esempio di errore che si ha utilizzando il seguente codice:

L’errore restituito è il seguente:

Traceback (most recent call last):
File "C:\Users\utente\Desktop\esempio\errore.py", line 4, in <module>
print ";".join(prova)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)

In particolare il problema si presenta quando si tenta di fare la join sulla lista con un separatore di testo.

Online si trovano numerose soluzioni come per esempio questa (che però non funziona!), ma nessuna che mi abbia davvero soddisfatto:

Il problema di fondo è che le stringhe incriminate, che nel mio esempio ho scritto io, sono lette dal programma da sorgenti esterne sulle quali non ho controllo e fare il debugging di tutti i possibili caratteri (milioni di caratteri come minimo!) è chiaramente alquanto improbabile.

Per aggirare il sistema e poter effettuare comunque la join ho usato quindi una funzione costruita ad hoc nel modo seguente:

A questo punto possiamo testarla nel modo seguente:

Il risultato stampato è il seguente:

é;a;è;;;èòà+;pippo  prova;;ancora

Faccio notare come in questo modo vengano ignorati i caratteri incriminati. Non è una soluzione molto elegante, ma comunque si raggiunge lo scopo di poter “pulire” il testo di origine.

Questo errore potrebbe anche presentarsi in altre forme come:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xc2' in position 0: ordinal not in range(128)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 20: ordinal not in range(128)

E altri.

Vedi articolo