Dubbio programmazione Giochi in C++

di il
7 risposte

Dubbio programmazione Giochi in C++

Ciao a tutti ragazzi, avrei una domanda da porvi; premetto che sono molto confuso su questo argomento e non ho alcuna esperienza.
Il mio problema riguarda la creazione di giochi 2D e 3D in C++, ho visto che ci sono molte librerie che permettono di utilizzare vari comandi più attinenti alla programmazione di giochi come per esempio L'OpenGL, e dato che mi sembra di aver visto che praticamente questa libreria utilizza comandi a sè, la mia domanda è: per programmare giochi è necessario sapere anche comandi presenti nella libreria standard come per esempio (ciclo for, if, valori booleani ecc) oppure è solo necessario studiarsi bene la sintassi e i comandi della libreria OpenGL?
Nel caso fosse necessario studiare anche i comandi della libreria standard, a che cosa potrebbero servire nello sviluppo di un gioco??
Grazie mille per l'attenzione e mi scuso per la mia eventuale confusione, è che non sò come funziona precisamente la creazione di un gioco in C++...

Grazie mille e buona giornata

7 Risposte

  • Re: Dubbio programmazione Giochi in C++

    Vedila così: puoi utilizzare i termini "salvataggio, caricamento, salta, spara" senza conoscere la lingua italiana?
  • Re: Dubbio programmazione Giochi in C++

    ^^^^^^^^^
    Non so quale sia il tuo progetto ma già programmare un gioco come Tetris non è un'impresa elementare (almeno parlo per me), per quello che vuoi fare avrai bisogno di solide basi.
  • Re: Dubbio programmazione Giochi in C++

    Ok grazie mille a tutti e due ragazzi! , riuscireste a farmi un esempio con del codice in cui sono presenti sia dei comandi della libreria standard e delle integrazioni in open Gl?
    Grazie Mille
  • Re: Dubbio programmazione Giochi in C++

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <GL/glew.h>
    #include <GL/glfw3.h>
    #include <glm/glm.hpp>
    using namespace glm;
    	
    int main(){
    if( !glfwInit() )
    {
        fprintf( stderr, "Failed to initialize GLFW\n" );
        return -1;
    }
    glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // We want OpenGL 3.3
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); 
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 
     
    // Open a window and create its OpenGL context
    GLFWwindow* window; // (In the accompanying source code, this variable is global)
    window = glfwCreateWindow( 1024, 768, "Tutorial 01", NULL, NULL);
    if( window == NULL ){
        fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\n" );
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window); // Initialize GLEW
    glewExperimental=true; // Needed in core profile
    if (glewInit() != GLEW_OK) {
        fprintf(stderr, "Failed to initialize GLEW\n");
        return -1;
    }
    // Ensure we can capture the escape key being pressed below
    glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
     
    do{
        // Draw nothing, see you in tutorial 2 !
     
        // Swap buffers
        glfwSwapBuffers(window);
        glfwPollEvents();
     
    } // Check if the ESC key was pressed or the window was closed
    while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS &&
    glfwWindowShouldClose(window) == 0 );
    
    }
    
    Questo SOLO per aprire una finestra contenente un contesto OpenGL.

    Come noterai dalla quantita' di codice, utilizzare OpenGL non e' proprio semplice.
    Minimo, minimo ci sono 1600 pagine da leggere: 800 per i concetti fondamentali ed altre 800 per l'implementazione degli shader.

    Di che sto parlando?

    Appunto!

    OpenGL non e' l'unica libreria esistente: e' molto potente perche' permette di accedere direttamente alla scheda grafica.

    Ci sono librerie molto piu' semplici da utilizzare.

    In ogni caso, per poter lavorare con librerie del genere, devi saper programmare e conoscere i concetti della grafica 2D e 3D, quindi matematica, trigonometria, concetti di algebra lineare (cosa e' una matrice di rotazione?)

    Insomma, un bel po' di cose.

    Ti consiglio di andare per gradi.

    Inizia con imparare a programmare con un linguaggio di programmazione tra python, java e C++ (tutti prevedono librerie per la grafica 2D e 3D).

    Alla grafica 3D ci arriverai dopo che ti sarai fatto le ossa con la programmazione.

    Giusto per darti un'idea di quello che si puo' fare con OpenGL:

    1) con una libreria che usa solo la CPU, in Python, riesci a processare in tempo reale circa un migliaio di triangoli

    2) con OpenGL circa 10.000.000 (dieci milioni!!!!)

    e questo usando una scheda grafica per portatile con circa 200 core.

    Immagina cosa puoi fare con una NVIDA Titan che di core ne ha 3000
  • Re: Dubbio programmazione Giochi in C++

    Grazie mille per spiegazione perfetta! ma quindi da quello che ho capito ci sono varie librerie per i vari ambienti che si vogliono sviluppare, per esempio in ambiente grafico si può utilizza l'OpenGL o altre librerie... ma quindi come si fa ad esempio a sviluppare un'interfaccia come quella di Call of duty dove per esempio si associa ad un particolare comando un movimento del giocatore (salto, sparo ecc)?? immagino sia una cosa difficilissima!...Sono un po confuso , molto probabilmente dovrei, come hai detto tu, procedere passo per passo invece che complicarmi pensando a cose grandissime..
    Grazie ancora comunque...
  • Re: Dubbio programmazione Giochi in C++

    Ci sono dei framework molto potenti, detti engine 3d (li trovi con google) che ti supportano nello sviluppo.
    Ma per usarli si deve essere un programmatore esperto
  • Re: Dubbio programmazione Giochi in C++

    Grazi mille, Buona Giornata!
Devi accedere o registrarti per scrivere nel forum
7 risposte