PDA

View Full Version : Librerie Sfml / Giochi c++


Phil1603
02-10-2018, 16:48
Ciao a tutti, scusate il disturbo, sto sviluppando un giochino 2D con le librerie SFML ma ho un po' di domande:

1) se dovessi gestire 2 personaggi diversi, uno wasd e l'altro le freccette, subirei dei ritardi pazzeschi perchè mentre uno usa un tasto l'altro deve aspettare che finisca l'evento. Con i thread implementati dalle librerie stesse si può risolvere? Se no come posso fare?

2)Di conseguenza se dovessi usare i thread tutte le variabili dovrebbero essere global, ho però un problema: se dichiaro le textures fuori dal main appena l'ancio l'esecuzione il programma va in crash, non riesco ad andarne fuori.

3)Si possono creare e importare più textures con un comando solo? perchè importare 15 immagini per una sola animazione vengono fuori almeno 45 righe di codice.

4)Si può capovolgere orizzontalmente un'immagine?

5)Altre librerie che mi consigliate?


Grazie

Phil1603
04-10-2018, 13:22
Grazie mille della risposta

1) Che vuol dire ritardi pazzeschi?! Anche il computer più scrauso riesce a processare gli eventi da tastiera a una velocità tale che se in un gioco 2D ci sono ritardi apprezzabili è quasi sicuramente colpa di come è stato programmato il gioco. Hai fatto Delle prove o questa dei ritardi è una tua supposizione? In ogni caso con i Threads non risolvi il problema. Anzi, probabilmente con l'overhead nella gestione dei thread hai pure prestazioni peggiori.


Era una supposizione: se ho un personaggio A e lo faccio muovere con il tasto q per esempio e un personaggio B che si muove con il tasto p il pc li esegue contemporaneamente o deve aspettare che il personaggio A finisca di muoversi?

2) non sapendo come hai programmato il gioco è difficile dire cosa c'è di sbagliato. In ogni caso usare variabili globali é, tranne rari casi, sbagliato. La condivisione, se necessaria deve essere fatta passando esplicitamente il puntatore alla memoria che si vuole utilizzare al thread. Inoltre per l'accesso alla memoria condivisa sono necessari alcuni meccanismi di protezione e sincronizzazione come i mutex e i semafori. Detto questo, in virtù del punto precedente l'uso dei Threads mi sembra un'inutile complicazione nel tuo caso.

Dichiarando una Texture nel main posso usarla anche in altre funzioni usandola come puntatore?

4) https://www.sfml-dev.org/tutorials/2...-transform.php

Ho gia letto tutta la documentazione ma non c'è scritto come capovolgerla, non ruotarla.

Grazie mille

Phil1603
04-10-2018, 14:19
Grazie mille, mi stai dando una mano gigantesca.

1) il calcolo viene fatto in maniera sequenziale. Ma visto che l'elaborazione del tutto avviene in un tempo piccolo rispetto ai tempi di reazione umani, di fatto i giocatori non si accorgono del delay che intercorre tra la gestione di due input simultanei.

Perfetto.

2)Certamente.

Non sono molto esperto, come posso fare? Avevo gia fatto delle prove tipo : Sprite1.SetTexture(&Texture1); ma senza grandi risultati.

4) se vai alla voce 'Scale" vedi che se usi valori negativi fai il mirroring dell'immagine.

Mi ha aiutato un casino, grazie!

Phil1603
06-10-2018, 15:52
Grazie della risposta, se ti mando il codice potresti darci una occhiata?
So che è scritto male ma sono alle prime armi.
Grazie.