Questo Forum utilizza i Cookies
Questo Forum fa uso di Cookies per memorizzare le informazioni di login se sei registrato o sulla tua ultima visita se non siete registrati. I Cookies sono piccoli documenti di testo memorizzati sul vostro computer; i Cookies impostati dal Forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza. I Cookies su questo forum servono anche a monitorare gli argomenti specifici che hai letto. Si prega di confermare se accettare o rifiutare i Cookies impostati.

Un cookie verrà memorizzato nel browser indipendentemente dalla scelta, per evitare che il Forum faccia nuovamente questa domanda. Sarete in grado di modificare le impostazioni dei cookies in qualsiasi momento tramite il link a piè di pagina

Rispondi 
Diario di programmazione
s n a r m p h
snarmph
*
Offline

Messaggi: 17
Registrato: 12-09-2017
Reputazione: 0
Mi Piace Ricevuti: 46
PokéMoney: 90.00₱
Messaggio: #1
Diario di programmazione
Per metterla in breve, faccio molti piccoli progetti in c/c++, userò un po' questo post come diario di viaggio per documentarli.

Per incominciare, ultimamente sto provando a fare un piccolo engine in c++ per creare giochi simili a pokemon. Questa estate mi ero già cimentanto un po' in c ma ho dovuto abbandonare per l'università.

Ecco qui la repository su github.
Qualche nota:
  • Dubito molto fortemente di finirlo e non so fino a che punto andrà
  • Purtroppo potrò solo lavorarci nel tempo libero, quindi i progressi non saranno molto veloci
  • Non ho la più pallida idea di cosa io stia facendo, sarà molto divertente

Qualche specifica del progetto:
  • Per creare finestre uso SDL2, come backend grafico opengl (non sono ancora sicurissimo sulla versione, ma probabilmente 3.X)
  • L'engine sarà scritto in c++, ma le interazioni dovrebbe essere scriptabili con lua/moonscript
  • Non ho testato come compilarlo su windows, in ogni caso è tutto fatto con cmake

Il progetto è appena iniziato e per ora appare solo una finestra (di seguito il codice)
18-11-2020 06:54 PM
Cerca Cita
 Mi piace ricevuti da: Boh , IvanFGK , Flygon , ~Ketan , Drk090 , MegaTorterra , Bonnox , Pikalex04 , Andrea , IsMirrionis , 80C
IvanFGK
Scemo chi Legge!
*******
Offline

Messaggi: 7,110
Registrato: 12-06-2014
Reputazione: 57
Mi Piace Ricevuti: 3850
PokéMoney: 12,538.00₱
Messaggio: #2
RE: Diario di programmazione
Mi fa piacere che tu condivida un diario!
Tienilo sempre aggiornato! Wink
18-11-2020 09:31 PM
Sito Web Cerca Cita
 Mi piace ricevuti da: s n a r m p h
s n a r m p h
snarmph
*
Offline

Messaggi: 17
Registrato: 12-09-2017
Reputazione: 0
Mi Piace Ricevuti: 46
PokéMoney: 90.00₱
Messaggio: #3
RE: Diario di programmazione
Piccolo aggiornamento:
sto cercando si salvare ciò che era salvabile dal vecchio engine (magari poi pubblicherò un video di quello che poteva fare)
Per ora ho aggiunto qualche struct:
  • engine -> si occupa della gestione generale dell'engine
  • window -> il nome dice tutto
  • input -> il nome dice tutto

Per ora l'input ha solo il supporto per la tastiera, non riesco a pensare a una ragione particolare per cui servirebbe il mouse, se mai la troverò aggiungerò il supporto.
19-11-2020 01:21 PM
Cerca Cita
 Mi piace ricevuti da: Boh
s n a r m p h
snarmph
*
Offline

Messaggi: 17
Registrato: 12-09-2017
Reputazione: 0
Mi Piace Ricevuti: 46
PokéMoney: 90.00₱
Messaggio: #4
RE: Diario di programmazione
Ok oggi ho qualche novità.
Finalmente il rendering di sprite funziona, video.

Qui un piccolo pezzo di codice che presenta le funzionalità (per ora molto temporanee)
Codice:
int main() {
    // inizializzazione dell'engine
    engine::init();
    window::create(
        "Pocket Engine",
        {160 * 4, 144 * 4}
    );
    gfx::init();
    input::init();
    
    // creazione di una sprite e carica una texture da file (grazie stb_image)
    gfx::sprite_t spr("assets/kris.png");
    // imposta il numero di colonne e di righe (probabilmente dovrei invertire l'ordine)
    spr.set_atlas(10, 1);
    // setta la posizione
    spr1.position = { 50.f, 50.f };
    
    // prendi il numero di "ticks" da quando l'engine è stato inizializzato
    u32 start = engine::get_ticks();
    // ogni quanto cambiare frame
    u32 update_after = 120;
    // frame corrente
    u32 frame = 0;
    // imposta il frame sulla sprite
    // (in futuro ci sarà un'astrazione per le animazioni)
    spr.set_frame(frame1);

    while(true) {
        engine::manage_events();
        glClear(GL_COLOR_BUFFER_BIT);
        // usa lo shader di base
        gfx::basic_shader.use();
        // manda una matrice 3x3 alla gpu che trasforma un punto da risoluzione 0,160/0,144 a -1,1/-1,1
        gfx::basic_shader.set<mat3>("projection", gfx::projection);

        if(engine::get_ticks() - start > update_after) {
            // se è passato abbastanza tempo, aggiorna il frame
            frame = (frame == 9) ? 0 : frame+1;
            spr.set_frame(frame1);
            start = engine::get_ticks();
        }
        // renderizza la sprite
        spr.render();

        window::swap_buffers();
    }
}

Ho creato poi un po' di altre classi, lista nello spoiler
23-11-2020 01:08 AM
Cerca Cita
 Mi piace ricevuti da: IvanFGK , Andrea , Bonnox
Rispondi 




Utente(i) che stanno guardando questa discussione: 1 Ospite(i)
Powered by MyBB, © 2002-2020 MyBB Group. Copyright © | 2020 Pokémon Hacking