Spieleprogrammierung mit QT C++

Alles rund um die Programmierung mit Qt
timi19
Beiträge: 6
Registriert: 17. November 2010 17:17

Spieleprogrammierung mit QT C++

Beitrag von timi19 »

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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

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.
Caesar
Beiträge: 2
Registriert: 19. November 2010 17:16

Re: Spieleprogrammierung mit QT C++

Beitrag von Caesar »

timi19 hat geschrieben:PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
Moin timi19,

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.
timi19
Beiträge: 6
Registriert: 17. November 2010 17:17

Re: Spieleprogrammierung mit QT C++

Beitrag von timi19 »

Caesar hat geschrieben:
timi19 hat geschrieben:PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
Moin timi19,

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.
Genau das wäre z.B. mein erstes Problem: wie stelle ich ein Brettspiel dar?:s

In der Konsole oder GUI?

Könntest du mir ein bisschen beschreiben, wie du dieser Aufgabe angegangen bist?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Spieleprogrammierung mit QT C++

Beitrag von franzf »

timi19 hat geschrieben:Genau das wäre z.B. mein erstes Problem: wie stelle ich ein Brettspiel dar?:s

In der Konsole oder GUI?
Wenn du es in der Konsole darstellen wolltest, bräuchtest du erst gar nicht nach QT oder sonstwas fragen.
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 :P) GUI-Frameworks mit dir rum. Und die nicht Spiele-zentrierte Ausrichtung von Qt geht auch zu Lasten der Performance deiner Spiele.
timi19
Beiträge: 6
Registriert: 17. November 2010 17:17

Re: Spieleprogrammierung mit QT C++

Beitrag von timi19 »

franzf hat geschrieben:
timi19 hat geschrieben:Genau das wäre z.B. mein erstes Problem: wie stelle ich ein Brettspiel dar?:s

In der Konsole oder GUI?
Wenn du es in der Konsole darstellen wolltest, bräuchtest du erst gar nicht nach QT oder sonstwas fragen.
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 :P) GUI-Frameworks mit dir rum. Und die nicht Spiele-zentrierte Ausrichtung von Qt geht auch zu Lasten der Performance deiner Spiele.
Danke für deinen Beitrag, hat ein bisschen mehr Licht in meine Welt reingebracht^^

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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Die drei von mir genannten (sfml, ogre, irrlicht) sind in C++ geschrieben (sonst hätte ich die gar nicht erwähnt :P).
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 :)
timi19
Beiträge: 6
Registriert: 17. November 2010 17:17

Beitrag von timi19 »

franzf hat geschrieben:Die drei von mir genannten (sfml, ogre, irrlicht) sind in C++ geschrieben (sonst hätte ich die gar nicht erwähnt :P).
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.
Aber das sind doch schon "fertige" Engines oder?
Ist es viel Arbeit eine eigene Engine für ein simples Jump'n'Run zu entwickeln?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

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.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Gut okay, ich will klar auf die Spieleprogrammierung gehen.
Bleibt Prinzipiell die Frage, was fuer Spiele Du programmieren möchtest.
- 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 ...
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Spieleprogrammierung mit QT C++

Beitrag von solarix »

timi19 hat geschrieben: ...
PS: vlt. könnt ihr mir auch ein paar Games sagen, die ich versuchen könnte zu programmieren.
..
Für mich klingt das, wie wenn du kein konkretes Ziel hast und "was für die Ausbildung" tun möchtest. Daher mein Rat:

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.
Ist es viel Arbeit eine eigene Engine für ein simples Jump'n'Run zu entwickeln?
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..

hth..
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

// Offtopic
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.
Like this ^^ Darf ich dich fragen ob du damit Beruflich zu tun hast oder nur der Hobbyspieleprogrammierer bist?
Gruß
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

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 ...
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Templates und Zeiger.. Lass das erste weg und du weisst womit ich milliardenfach um mich werfe ;) (Es funktioniert sogar).
Und wenn du von Bücher redest, hast du ein bestimmtes im Sinn?
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

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 ...
Antworten