Spieleprogrammierung mit OpenGL und C++



  • Aber wie kann ich mit diesen Kenntnissen ein Spiel programmieren?

    Wenn du das alles kannst, was du schreibst, fehlt dir hierzu wohl erstmal eine Idee?! Die Frage ist dermaßen Abstrakt, dass mir eine bessere Antwort nicht möglich ist. Was genau willst du denn machen?



  • Auch wenn das ne Frage für nen anderen Thread ist, will ich mal versuchen, die Frage halbwegs zu beantworten.

    Wie opener schon sagte, ist das ein sehr komplexes Thema. Die Spieleprogrammierung ist eine so große Anforderung, dass is meiner Meinung nach nicht sinnvoll ist, ein Spiel so zu entwickeltn. Der beste Weg ist eine Engine, die all deine Aufgaben kapseln kann und die du dann aufrufen kannst, um dein Spiel zu programmieren.

    Typische Aufgaben sind folgende:

    * Laden von Meshdateien (meistens nimmt man hier die gängsten Formate, z.B. .3ds) und eventuell ein eigenes Format

    * Managen der Scene (Scene Managment)

    * Soundmanagment

    * Netzwerkmanagment

    usw.

    Wenn du diese Aufgaben verwirklicht hast, dann brauchst du eine Story. Das heisst jetzt musst du genau wissen, was du willst. Du musst dir überlegen, was es für ein Spiel sein soll und musst halt jetzt deine Objekte laden und entladen, und damit etwas sinniges machen. Das ist ja jetzt kein Problem, da du ja deine Engine hast.

    Noch einen Hinweis: Das da oben mit den Aufgaben sind nur ein paar von vielen. Wennn du wissen willst, wie so eine Engine aufgebaut ist, dann guck dir die gängigen Open Source Grafikengines wie Ogre3d oder zfxcon an.

    Gruß Sebastian



  • Wenn du das alles kannst, was du schreibst, fehlt dir hierzu wohl erstmal eine Idee?! Die Frage ist dermaßen Abstrakt, dass mir eine bessere Antwort nicht möglich ist. Was genau willst du denn machen?

    Ich habe mir zum Ziel genommen, ein Spiel zu programmieren, am besten ein extrem simples Strategiespiel.
    Ich kann auch C++ ziemlich gut, auch die Befehle von OpenGL beherrsche ich.

    Meine konkrete Frage war jetzt, wie ich dieses beides verbinden kann.
    Kann ich mitten in den C++ Code plötzlich einen OpenGL-Befehl integrieren?



  • hmmmm deine letzte Antwort verdeutlichst, dass du wohl sowohl in C++ als noch in OpenGL nicht so recht klarkommst. Natürlich kannst du in einem C++ Programm einfach OpenGL code reinschreiben. Das Problem ist, du brauchst ein Fenster. Ein Fenster musst du selber erstellen. Dazu musst du erstmal entscheiden, auf welchen Computern das teil laufen soll. Soll es nur auf Windows Betriebssystemen laufen, würde ich dir die WinApi enpfehlen (such dir dazu dann mal ein Tut, das erstellen eines Fensters in OpenGL ist nicht so wild).

    Wenn du in Linux deine Programme ausführen willst, musst du einen anderen Weg gehen. Da wird die Sache komplizierter, weil hier rechtliche Faktoren eine Rolle spielen. Wenn Du dein Programm unter der GPL oder LGPL stehen lassen willst würde ich dir eine der folgenden Libs vorschlagen:

    * QT
    * SDL
    * GLUT
    * GKT+

    Ansonsten musst du irgendwie schaun das du nen Fenster in Linux hinkriegst *g*.



  • Vielen Dank für die Antowort!
    GLUT habe ich bereits installiert und integriert, allerdings finde ich kein Tutorial, das erklärt, wie ich diese "OpenGL-Fenster" in den C++ Quellcode integriere.



  • Wenn du bisher schon kleine OpenGL sachen geschrieben hast, dann erklär mir mal, wie? Du kannst OpenGL, hast es aber nie in C++ eingesetzt, oder was?
    Oder meinst du damit, dass du OpenGL in eier anderen Programmiersprache gemacht hast?

    fluxy: Was hat das rechtliche damit zu tun? Wenn er es für Windows programmiert, darf er es auch nicht verkaufen, wenn ihm seine Compilerlizenz das verbietet. Mit dem Borland 5.5 oder mit der Autorenversion vom VC++ ist das der Fall.
    Unter Linux ist das nix anders, wobei die GPL das Verkaufen der Software meines Wissens nicht ausschließt. Man muss halt die Sourcen mitgeben. So gesehen hast du das "rechtliche Problem" überall.



  • hmmm GLUT ist eigentlich ziemlich einfach

    #include <gl/glut.h> 
    
    void main(int argc, char **argv) {
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
    	glutInitWindowPosition(100,100);
    	glutInitWindowSize(320,320);
    	glutCreateWindow("ein hoch auf http://www.c-plusplus.net/forum/posting.php?mode=reply&t=81100");
    }
    


  • Du kannst OpenGL, hast es aber nie in C++ eingesetzt, oder was?

    Das ist es!
    Und das ist auch mein Problem: Ich weiß nicht, wie ich es in C++ einsetzen kann. Und da hoffe ich, dass mir das ein User schreiben kann!

    @fluxy: Ich probiere den Code gleich mal aus



  • [quote="opener"]

    Ich kann auch C++ ziemlich gut, auch die Befehle von OpenGL beherrsche ich.

    Meine konkrete Frage war jetzt, wie ich dieses beides verbinden kann.
    Kann ich mitten in den C++ Code plötzlich einen OpenGL-Befehl integrieren?

    LOL
    Nice Widerspruch 👍 👍



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich würde mir etwas derart einfaches nicht von einem anderen schreiben lassen, sondern es selber lernen(und zwar nicht auswendig)! Das wird die einfachste Aufgabe bei Deinem Spiel noch sein!

    Das Problem was ich immer in der Spieleprogrammierung sehe ist, dass man ohne einen guten Grafiker kaum weit kommt.



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • *** schrieb:

    Das Problem was ich immer in der Spieleprogrammierung sehe ist, dass man ohne einen guten Grafiker kaum weit kommt.

    Kommt drauf an. Pixelbitmaps in 640x480 für einen C&C1-Clone kricht wohl JEDER _halbwegs_ hin. 👍


Anmelden zum Antworten