Spieleprogrammierung mit QT C++
Spieleprogrammierung mit QT C++
Hallo @ all,
ich will mich zuerst kurz vorstellen und dann meine Frage stellen. Ich bin seit 2 Jahren Applikationsentwickler-Azubi und arbeite seit dem auch mit den Programmiersprachen C++ und Java.
Ich würde auch sagen, dass ich jetzt bei beiden Sprachen die Grundlagen verstanden habe bzw. die Grundlagen der Allgemeinen Programmierung.
Das Thema Spieleprogrammierung hat mich schon immer gereizt, doch erst jetzt will ich es mal richtig versuchen.
Mein Ziel wäre es ein einfaches Jump'n'Run Game zu entwickeln
Doch irgendwie hab ich keine Ahnung wo ich anfangen soll.
Ich würde auch gerne Zeit und Geduld reinstecken, doch ich habe im Moment überhaupt keine Anhaltspunkte, wo ich "weiter" arbeiten könnte.
Ich hoffe ihr könnt mir weiterhelfen:)
PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
Freundliche Grüsse
timi19
ich will mich zuerst kurz vorstellen und dann meine Frage stellen. Ich bin seit 2 Jahren Applikationsentwickler-Azubi und arbeite seit dem auch mit den Programmiersprachen C++ und Java.
Ich würde auch sagen, dass ich jetzt bei beiden Sprachen die Grundlagen verstanden habe bzw. die Grundlagen der Allgemeinen Programmierung.
Das Thema Spieleprogrammierung hat mich schon immer gereizt, doch erst jetzt will ich es mal richtig versuchen.
Mein Ziel wäre es ein einfaches Jump'n'Run Game zu entwickeln
Doch irgendwie hab ich keine Ahnung wo ich anfangen soll.
Ich würde auch gerne Zeit und Geduld reinstecken, doch ich habe im Moment überhaupt keine Anhaltspunkte, wo ich "weiter" arbeiten könnte.
Ich hoffe ihr könnt mir weiterhelfen:)
PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
Freundliche Grüsse
timi19
Prinzipiell ist Spielprogrammierung mit Qt möglich. Es gibt mit gluon sogar ein recht interessantes Framework!
ABER (:)) es gibt leichtgewichtigere Lösungen wie etwa SFML, die du dir mal anscheuen solltest. Die Libs sind bei SFML klein, und alles ist schön auf Spiele ausgelegt. Und der Einstieg sollte leichter sein als der in Qt.
ABER (:)) es gibt leichtgewichtigere Lösungen wie etwa SFML, die du dir mal anscheuen solltest. Die Libs sind bei SFML klein, und alles ist schön auf Spiele ausgelegt. Und der Einstieg sollte leichter sein als der in Qt.
Re: Spieleprogrammierung mit QT C++
Moin timi19,timi19 hat geschrieben:PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
ich befasse mich auch erst seit relativ kurzer Zeit mit Qt und habe daher als erstes ein Brettspiel programmiert - nämlich Monopoly (mit Spielbrett-, Ereignis-Editor usw.). Ich finde Brettspiele immer nett, wobei es natürlich überschauberere Spiele gibt wie z.B. diverse Kartenspiele. Mit 3D usw. habe ich keine Erfahrung.
Re: Spieleprogrammierung mit QT C++
Genau das wäre z.B. mein erstes Problem: wie stelle ich ein Brettspiel dar?:sCaesar hat geschrieben:Moin timi19,timi19 hat geschrieben:PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
ich befasse mich auch erst seit relativ kurzer Zeit mit Qt und habe daher als erstes ein Brettspiel programmiert - nämlich Monopoly (mit Spielbrett-, Ereignis-Editor usw.). Ich finde Brettspiele immer nett, wobei es natürlich überschauberere Spiele gibt wie z.B. diverse Kartenspiele. Mit 3D usw. habe ich keine Erfahrung.
In der Konsole oder GUI?
Könntest du mir ein bisschen beschreiben, wie du dieser Aufgabe angegangen bist?
Re: Spieleprogrammierung mit QT C++
Wenn du es in der Konsole darstellen wolltest, bräuchtest du erst gar nicht nach QT oder sonstwas fragen.timi19 hat geschrieben:Genau das wäre z.B. mein erstes Problem: wie stelle ich ein Brettspiel dar?:s
In der Konsole oder GUI?
Die primitivste Form ein grafisches Spielfeld mit Qt darzustellen, wäre ein QGridLayout + Buttons/Labels. Ausgefuchster, mit Animationen und solchem Schnickschnack ginge mit Graphics View Framework. Oder zum Üben alles selber auf ein QWidget malen.
Ich würde mir vorneweg aber wirklich die Frage stellen
Was will ich?
1) Spiele programmieren?
2) Qt programmieren?
Wenn die Antwort klar "1" ist -> schau dir wirklich andere Sachen an. SFML für 2D, Irrlicht/Ogre/... für 3D-Spiele. Diese Sachen sind rein aufs Spiele entwickeln ausgerichtet.
Wenn du sagst "Ich will Gui programmieren und dafür Qt nehemen", dann ist als erstes Projekt zum Kennen lernen ein kleines Spielchen immer ganz nett.
Ich will dir nicht ausreden, Spiele mit Qt zu entwickeln. Das geht sicher und macht auch sicher Spaß. Aber du schleppst halt auch immer den Ballast eines kompletten, gigantischen (und richtig guten ) GUI-Frameworks mit dir rum. Und die nicht Spiele-zentrierte Ausrichtung von Qt geht auch zu Lasten der Performance deiner Spiele.
Re: Spieleprogrammierung mit QT C++
Danke für deinen Beitrag, hat ein bisschen mehr Licht in meine Welt reingebracht^^franzf hat geschrieben:Wenn du es in der Konsole darstellen wolltest, bräuchtest du erst gar nicht nach QT oder sonstwas fragen.timi19 hat geschrieben:Genau das wäre z.B. mein erstes Problem: wie stelle ich ein Brettspiel dar?:s
In der Konsole oder GUI?
Die primitivste Form ein grafisches Spielfeld mit Qt darzustellen, wäre ein QGridLayout + Buttons/Labels. Ausgefuchster, mit Animationen und solchem Schnickschnack ginge mit Graphics View Framework. Oder zum Üben alles selber auf ein QWidget malen.
Ich würde mir vorneweg aber wirklich die Frage stellen
Was will ich?
1) Spiele programmieren?
2) Qt programmieren?
Wenn die Antwort klar "1" ist -> schau dir wirklich andere Sachen an. SFML für 2D, Irrlicht/Ogre/... für 3D-Spiele. Diese Sachen sind rein aufs Spiele entwickeln ausgerichtet.
Wenn du sagst "Ich will Gui programmieren und dafür Qt nehemen", dann ist als erstes Projekt zum Kennen lernen ein kleines Spielchen immer ganz nett.
Ich will dir nicht ausreden, Spiele mit Qt zu entwickeln. Das geht sicher und macht auch sicher Spaß. Aber du schleppst halt auch immer den Ballast eines kompletten, gigantischen (und richtig guten ) GUI-Frameworks mit dir rum. Und die nicht Spiele-zentrierte Ausrichtung von Qt geht auch zu Lasten der Performance deiner Spiele.
Gut okay, ich will klar auf die Spieleprogrammierung gehen.
Kennst du vlt. Tut's zu deinen genannten Programmen, die ich mir mal ein bisschen anschauen kann?
Und wird in diesen Programmen auch in C++ geschrieben?
mfg timi19
Die drei von mir genannten (sfml, ogre, irrlicht) sind in C++ geschrieben (sonst hätte ich die gar nicht erwähnt ).
Die Webseiten:
http://www.sfml-dev.org
http://www.ogre3d.org
http://irrlicht.sf.net
Tutorials findet man entweder direkt auf den Projektseiten, oder mit google nach "ogre3d Tutorial" o.Ä.
Ich würde erstmal mit SFML + 2D anfangen, dann kannst du ganz einfach mit Bildchen arbeiten, und musst nicht gleich auch noch mit nem 3D-Modeller usw. anfangen. Projekte findet du über das sfml-Forum (sollte auf der Projektpage verlinkt sein).
Google z.B. mal nach "sfml uzf" oder "cosmoscroll". Sind zwei kleine nette Spielchen
Die Webseiten:
http://www.sfml-dev.org
http://www.ogre3d.org
http://irrlicht.sf.net
Tutorials findet man entweder direkt auf den Projektseiten, oder mit google nach "ogre3d Tutorial" o.Ä.
Ich würde erstmal mit SFML + 2D anfangen, dann kannst du ganz einfach mit Bildchen arbeiten, und musst nicht gleich auch noch mit nem 3D-Modeller usw. anfangen. Projekte findet du über das sfml-Forum (sollte auf der Projektpage verlinkt sein).
Google z.B. mal nach "sfml uzf" oder "cosmoscroll". Sind zwei kleine nette Spielchen
Danke für deine Beispiele, find ich alle gut, vorallem den SFML.franzf hat geschrieben:Die drei von mir genannten (sfml, ogre, irrlicht) sind in C++ geschrieben (sonst hätte ich die gar nicht erwähnt ).
Die Webseiten:
http://www.sfml-dev.org
http://www.ogre3d.org
http://irrlicht.sf.net
Tutorials findet man entweder direkt auf den Projektseiten, oder mit google nach "ogre3d Tutorial" o.Ä.
Ich würde erstmal mit SFML + 2D anfangen, dann kannst du ganz einfach mit Bildchen arbeiten, und musst nicht gleich auch noch mit nem 3D-Modeller usw. anfangen. Projekte findet du über das sfml-Forum (sollte auf der Projektpage verlinkt sein).
Google z.B. mal nach "sfml uzf" oder "cosmoscroll". Sind zwei kleine nette Spielchen
Aber das sind doch schon "fertige" Engines oder?
Ist es viel Arbeit eine eigene Engine für ein simples Jump'n'Run zu entwickeln?
Das Problem ist nicht, eine Engine zu erstellen. Wenn wir dazu bei Qt bleiben, läßt sich GraphicsView und/oder OpenGL dazu verwenden. Nur das ganze performant hinzubekommen ist die Herausforderung.
Und wenn man dazu ein Spiel schreibt, bei dem sich z.B. auch der Hintergrund bewegt, dann wird eine GraphicsView jedes mal die komplette Ansicht updaten was natürlich zu lasten der fps geht.
Und wenn man dazu ein Spiel schreibt, bei dem sich z.B. auch der Hintergrund bewegt, dann wird eine GraphicsView jedes mal die komplette Ansicht updaten was natürlich zu lasten der fps geht.
Bleibt Prinzipiell die Frage, was fuer Spiele Du programmieren möchtest.Gut okay, ich will klar auf die Spieleprogrammierung gehen.
- LogikSpiele mit einer GUI aquivalaent zu denen, die man aus der Anwendungsentwicklung kennt ?
Oder "richtige" 3D Spiele, also das was man meint wenn man "SpieleProgrammierung" sagt.
bei ersterem gelten natuerlich alle Dinge wie bei der Anwendungsentwicklung: Schoene saubere Abstraktion zwischen logik und GUI, und die Welt ist in ordnung.
bei 2teren:
- low level C++ / C vorraussetzung
- Nen extensives Verstaendnis von Speicherverwaltungs-Problemen und Kosten(RechenZeit) von Code ist unabdingbar. Du solltest mit nem Profiler umgehen koennen.
- unabhaengig von den oben genannten engines, solltest du die Core-Schnittstellen kennen, die Du benutzt. Allein schon um kosten fuer Transformationen von Schnittstellen einkalkulieren zu koennen.
Im Meisten Fall ist es DirectX, und in anderen Faellen OpenGL. Neuerdings ist ein Exkurs zu HLSL / GLSL zu empfehlen ... Du willst ja dass die Chipindustrie (AMD/Nvidia) an deinen Ideen verdient
- eine vorhandene Engine nehmen iss ne super Idee. Die Auswahl der richtigen Engine ist ne Wissenschaft. Kann auch zur Finanz-Wissenschaft werden Eine einzige ENgine inn und auswendig zu koennen ist ne Schlechte Idee. Aendern sich die Anforderungen an die Grafik Engine, ist es oft so dass die komplette Engine austauschen musst. So wie sich die Grafikschnittstellen weiterentwickeln, tun es die Engines auch. Ne kostenlose Engine muss ned schlecht sein, aber Du solltest dann nicht das nonplusultra erwarten ...
- zum "Einstieg" waer ne leicht zu "bedienende" Engine sicher nen Blick wert.
- nen Anderer Ansatz waer z.b. Sich mal Blender zu schnappen, und nen 3DModell zu entwerfen. Und dann mit Dx oder OpenGL (Alternativ ne Engine) nen Prog zu entwerfen, was das Model einfach mal darstellt und du ueber paar tastendruecke paar parameter veraenderst. Stell dir das aber ned so einfach vor
Wenn Du immer noch in die Richtung willst, dann willkommen in der Welt der Performance Probleme ! Hier sollten Dir unnötige Variablendeklarationen Schmerz bereiten, und dynamische speicherallokation Dich in der Wahnsinn treiben. Ich hoffe nur, du magst Templates.
Qt kannst dann "vergessen". Ok iss noch ganz nuetzlich fuer paar nette tools rund ums Hauptprogramm und vielleicht zur externen Konfiguration deines Projects, aber ansonsten ...
Ciao ...
Re: Spieleprogrammierung mit QT C++
Für mich klingt das, wie wenn du kein konkretes Ziel hast und "was für die Ausbildung" tun möchtest. Daher mein Rat:timi19 hat geschrieben: ...
PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
..
Mach was in Qt. Begründung:
- Eine Spieleengine ist ein spannendes Projekt im Sinne "spielend lernen"
- Was du da lernst, kannst du später auch in anderen Qt-Projekten einsetzen
- Wenn du nicht gerade "the-next-generation-sauerbraten" schreiben möchtest, reicht Qt
Probleme wirst du vermutlich mit dem Sound bekommen. Wenn du die ganze Graphik, KI, Levels usw. gemeistert hast, kannst du da aber noch gut das Soundbackend mit SDL_Mixer oder fmod erledigen.
Das ist kaum beantwortbar, weil wir weder dein Können, noch dein Verständnis von "viel" und "simple" kennen. Die Spanne dürfte etwa 20h-200h betragen..Ist es viel Arbeit eine eigene Engine für ein simples Jump'n'Run zu entwickeln?
hth..
// Offtopic
Gruß
Like this ^^ Darf ich dich fragen ob du damit Beruflich zu tun hast oder nur der Hobbyspieleprogrammierer bist?RHBaum hat geschrieben:Wenn Du immer noch in die Richtung willst, dann willkommen in der Welt der Performance Probleme ! Hier sollten Dir unnötige Variablendeklarationen Schmerz bereiten, und dynamische speicherallokation Dich in der Wahnsinn treiben. Ich hoffe nur, du magst Templates.
Gruß
Beruflich hab ich mit Games gar nix am Hut.
Performance Spielt bei mir aber schon ne Rolle. Ich mach weniger GUI's, ich mach mehr Hardware-Anbindungen, Abstraktionen zu unterschiedlicher Hardware. Fuer nen Usb-basierenden geraete-treiber hab ich auch mal Code-Anteile gemacht.
Beruflich hab ich einmal mit Dx zu tun gehabt, weil wir es zum Visualisieren eines Videostromes hergenommen haben. Privat hat es mich schon intressiert, und Plaene mal was zu machen waren auch da aber weisst ja wie es mit dem Berufsleben ist, wenn den ganzen tag Zeiger und Templates siehst, will man abends ned auch noch sowas tun. Da bin ich eher lieber Anwender.
Aber Buecher zu anderen Themenbereichen lesen, auch wenn man zu nix kommt, bildet grad in unserer Branche unheimlich weiter.
Ciao ...
Performance Spielt bei mir aber schon ne Rolle. Ich mach weniger GUI's, ich mach mehr Hardware-Anbindungen, Abstraktionen zu unterschiedlicher Hardware. Fuer nen Usb-basierenden geraete-treiber hab ich auch mal Code-Anteile gemacht.
Beruflich hab ich einmal mit Dx zu tun gehabt, weil wir es zum Visualisieren eines Videostromes hergenommen haben. Privat hat es mich schon intressiert, und Plaene mal was zu machen waren auch da aber weisst ja wie es mit dem Berufsleben ist, wenn den ganzen tag Zeiger und Templates siehst, will man abends ned auch noch sowas tun. Da bin ich eher lieber Anwender.
Aber Buecher zu anderen Themenbereichen lesen, auch wenn man zu nix kommt, bildet grad in unserer Branche unheimlich weiter.
Ciao ...
Naja, in Sachen Dx waer die erste Frage, wie weit kennst Dich mit COM aus ?
Ich hab z.B. 3D Spieleentwicklung mit DirectX 9.0 oder so. C++ technisch gesehen find ich es nicht so prall, aber die erklaerung wie man Models in ne Szene einfuegt und bewegt etc. sind ganz ok. Man lernt mehr ueber 3d probleme allgemein und wie halt DX als schnittstelle funktioniert. Wenn Dich halt mit c++ und COM super auskennst, kannst halt ne Menge anders und vielleicht auch bissi besser machen.
Wenn performance und c++ meinst, musst halt die klassiker kennen.
Den Stroustrup, klar,
fuer templates: Modern c++ Design von Alexandrescu oder so ...
Exeptional C++ usw.
Für COM kenn ich leider keine so guten Buecher. Ich hab von M$ Press das Inside COM und Inside ATL ... iss eher ne Uebersetzung der MSDN Hilfe. Aber sie tun Ihren Zweck.
Ciao ...
Ich hab z.B. 3D Spieleentwicklung mit DirectX 9.0 oder so. C++ technisch gesehen find ich es nicht so prall, aber die erklaerung wie man Models in ne Szene einfuegt und bewegt etc. sind ganz ok. Man lernt mehr ueber 3d probleme allgemein und wie halt DX als schnittstelle funktioniert. Wenn Dich halt mit c++ und COM super auskennst, kannst halt ne Menge anders und vielleicht auch bissi besser machen.
Wenn performance und c++ meinst, musst halt die klassiker kennen.
Den Stroustrup, klar,
fuer templates: Modern c++ Design von Alexandrescu oder so ...
Exeptional C++ usw.
Für COM kenn ich leider keine so guten Buecher. Ich hab von M$ Press das Inside COM und Inside ATL ... iss eher ne Uebersetzung der MSDN Hilfe. Aber sie tun Ihren Zweck.
Ciao ...