Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

29.09.2012, 23:40

Einstieg in die Spieleprogrammierung - Fragen

Hallo liebe Spieleprogrammierer.de - Community,

ich programmiere schon seit ca. 8 Monaten mit der Programmiersprache C#. Vor ungefähr vier Wochen habe ich zudem damit begonnen,
mich in die Programmiersprache C++ einzuarbeiten. Ich habe mich also hauptsächlich mit den grundsätzlichen Unterschieden zwischen
den Programmiersprachen auseinandergesetzt. Nun möchte ich C++, im Gegensatz zu C#, nicht für "normale" GUI-Anwendungen erlernen,
sondern für den Einsatz in der Spieleprogrammierung. Es scheint aber, dass allein die Einführung in diesen Bereich der Programmierung,
nicht so stark gebunden ist, wie beispielsweise bei C# in Kombination mit .NET.

Während ich bei C# ganz leicht hätte sagen können, dass ich
das mitgelieferte XNA verwende, so bietet sich bei C++ schon eine ganze Stange mehr an. Aus diesem Grund wende ich mich mit meiner
Fragen an euch und hoffe, dass ihr mir in diesem Fall weiterhelfen könnt.

1. Mit welchen 'Komponenten' soll ich den Einstieg in die Spieleprogrammierung beginnen? Soll ich lieber erst der Einfachheit wegen mit Frameworks
wie "SFML" beginnen? Soll ich mich an Engines wie z.B. die 3D-Grafikengine "Ogre3D" wenden? Oder soll ich gar direkt mit DirectX 11 beginnen?
Leider weiß ich einfach nicht, welchen Weg ich am besten für die Spieleprogrammierung einschlage. Wichtig ist mir, dass es kein Weg
alá "Ich lerne erst 'C' um später 'C++' zu lernen" ist. Ich möchte meine Kenntnisse später auch in größeren Projekten oder gar im
komerziellen Umfeld einbringen und somit direkt einen zukunftsorientierten Weg einschlagen.

2. Wie gehe ich am besten bei der Einarbeitung und späteren Entwicklung mit größeren Bibliotheken um? Wollte ich beispielsweise mithilfe von .NET eine Software
programmieren, hatte ich natürlich immer ganz leicht und übersichtlich die Möglichkeit, mir die Dokumentationen anzusehen. Vorallem war aber auch der ganze
Aufbau und gar die Bezeichnung von beispielsweise Methoden immer nahezu eindeutig. Wenn ich mir aber beispielsweise im Umfeld von DirectX Codezeilen der
WinAPI anschaue und Codeabschnitte wie die unten dargestellten sehe, frage ich mich echt, wie man auf sowas kommt. Da gibt es dann kein "mainMenu.Show()" mehr
sondern kryptische Bezeichnungen und desgleichen.

C-/C++-Quelltext

1
    LPCWSTR m_applicationName; HINSTANCE m_hinstance;  HWND m_hwnd;LRESULT CALLBACK MessageHandler(HWND, UINT, WPARAM, LPARAM);


3. Welche weiteren Tipps könnt ihr mir vielleicht noch für den Einstieg in die Spieleprogrammierung geben?

Vielen Dank!

Liebe Grüße

Daniel B.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

29.09.2012, 23:58

Hey,
wenn du schon Erfahrung mit C# hast, warum benutzt du dann nicht einfach XNA um dich einzuarbeiten? Dass dieser Weg relativ einfach ist, schreibst du ja selbst. Warum solltest du es dir unnötig schwer machen? Natürlich darfst du auch gerne C++ lernen;) Dabei würde ich vorschlagen zuerst mal mit der Sprache zu experimentieren. Schreibe mal ein paar Testanwendungen für die Konsole. Einfach um dich an die Sprache zu gewöhnen. Danach würde ich dann SFML vorschlagen. Damit kannst du dann grundlegend einsteigen und gucken was du so schaffst. Vielleicht mal ein Pong am Anfang oder ein Breakout. Das sollte für den Anfang mehr als genug zu tun sein.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

30.09.2012, 00:14

In der Tat, wenn du C++ lernen willst, dann vergiss erstmal Win32 und Direct3D und Engines etc. und lern die Sprache. Auch wenn es auf den ersten Blick vielleicht nicht so scheint und du natürlich viel deines mit C# erlangten Wissens auch auf C++ wirst übertragen können: C++ unterscheidet sich fundamental von C# und ich kann dir nur von ganzem Herzen raten, C++ ordentlich und von Grund auf zu lernen.

4

30.09.2012, 00:32

Hallo Schorsch,

dass ich nicht weiterhin XNA verwende, hat mehrere Gründe. Aufgrund der Tatsache, dass C# sogenannten "Managed Code" liefert, soll es
für die Spieleprogrammierung nicht so geeignet sein. Andererseits hat auch die Einführung von Windows 8 und somit Windows RT eine Blockade
kreiert. Denn laut bisherigen Aussagen von Microsoft soll XNA für die Windows 8 'Metro' nicht laufen.

Zitat

In der Tat, wenn du C++ lernen willst, dann vergiss erstmal Win32 und Direct3D und Engines etc. und lern die Sprache. Auch wenn es auf den ersten Blick vielleicht nicht so scheint und du natürlich viel deines mit C# erlangten Wissens auch auf C++ wirst übertragen können: C++ unterscheidet sich fundamental von C# und ich kann dir nur von ganzem Herzen raten, C++ ordentlich und von Grund auf zu lernen.
Hallo dot,

ich stimme dir natürlich zu, dass das Lernen von "C++" als eigene Sprache natürlich im Vordergrund steht. Andererseits muss ich natürlich zugeben, dass ich keine Lust hätte, mir nochmal tausende Seiten eines Buches durchzulesen, um dann "endlich" mit der Spieleprogrammierung beginnen zu können. Denn dafür habe ich leider keine Zeit. Denn die Programmierung mit C# werde ich natürlich weiterhin aktiv betreiben - nur halt nicht für die Spieleprogrammierung. Gibt es da keine Möglichkeit, das Lernen von "C++"-spezifischen Eigenschaften während des Lernens von den oben genannten Wegen ( SFML, DirectX ... ) einzubinden?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

30.09.2012, 00:40

ich stimme dir natürlich zu, dass das Lernen von "C++" als eigene Sprache natürlich im Vordergrund steht. Andererseits muss ich natürlich zugeben, dass ich keine Lust hätte, mir nochmal tausende Seiten eines Buches durchzulesen, um dann "endlich" mit der Spieleprogrammierung beginnen zu können.

In dem Fall würde ich dazu raten, für die Spieleprogrammierung eine Sprache zu verwenden, die du bereits beherrscht...

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

6

30.09.2012, 01:05

Ich geh jetzt nochmal direkt auf deine Fragen ein:

1. Da kommt es darauf an was du machen willst. Wenn du direkt Spiele schreiben willst, also hauptsächlich die Logik dieser, und relativ schnell ein grafisches Ergebnis erzielen willst nimm eine Engine. Da gibt es viele Angebote. Guck dir ein paar an und versuch damit etwas zu machen, dann kannst du dir eine aussuchen.
Wenn du jedoch eher an der Technik interessiert bist nimmst du am besten direkt eine API/einen Standard wie z.B. D3D. In dem Bereich kannst du dich von Grund auf mit allem beschäftigen (wie Daten zur Grafikkarte bekommen, Shader schreiben, Rendertechniken, ...). Damit bist du allerdings "ewig" beschäftigt. Zumindest wenn du ein paar Effekte wie z.B. Licht, Schatten, Reflektionen, ... haben willst. Das heißt man kommt erst spät zum Spiele schreiben. Allerdings macht auch dieser Bereich Spaß (mir zumindest, und darum geht es ja).

2. Auch mit Dokus und bei dem Technik Teil mit Büchern. Auf den meisten der Webseiten der Anbieter (z.B. SFML) findet man auch viele gute Tutorials. Und du kannst natürlich hier fragen. Wenn sonst nichts hilft -> Code lesen.

3. Fang wirklich unten an und nimm dir bloß nicht zu viel vor wie "ich schreib jetzt ein 3D MMORPG". Man braucht einen gewissen Satz an mathematischen Kenntnissen (wie ich dann doch schmerzlich feststellen musste) bevor man wirklich anfangen kann (vor allem sowas wie Vektorrechnung, bei 3D Matrizen und je nach Anforderungen noch anderen Kram).
Falls du Leute kennst die modelieren können -> fragen ob sie helfen. Wenn man programmiert ist das doch eine recht nervige Aufgabe.

7

04.10.2012, 20:48

Guten Abend,

aus zeitlichen Gründen habe ich leider erst jetzt die Möglichkeit gefunden, zu antworten.
Zuerst möchte ich mich natürlich für die bereits existierenden Antworten bedanken!

@dot
Wenn ich denn nun deinen Ratschlag Folge leisten würde, welches Buch würdest du mir denn empfehlen?
Oder genauer gefragt: Wie weit soll ich mich in C++ einarbeiten? Reicht ein einzelnes Einsteigerbuch wie "C++ für Spieleprogrammierer" oder soll
ich mir gar mehrere "fortgeschrittene" Bücher aneignen, bevor ich auch nur ansatzweise mit der Spieleprogrammierung anfange? Was genau soll ich mir denn
deiner Meinung nach alles aneignen, was den großen Unterschied zu beispielsweise C# ausmacht?


Denn ich kann schlecht "fühlen", wann ich, deiner Meinung nach, den Punkt erreicht habe, in die Spieleprogrammierung mit C++ einsteigen zu können.

@DeKugelschieber
Mich interessieren beide Bereiche. Selbstverständlich möchte ich irgendwann auch mal "Ergebnisse" sehen. Aber es soll natürlich alles auch vernünftig sein und nicht nur
'dahingeklatscht'. Natürlich denke ich nicht daran, utopische Projekte zu starten. Ich würde liebend gerne im 2D-Bereich einsteigen und später vielleicht in das Genre
"Strategiespiele" wechseln.

@Alle
Nun stellt sich mir dennoch die Frage, womit ich am besten einsteige - nach dem ich fundierte Kenntnisse in C++ besitze.
Habe ich mit DirectX 11 eigentlich alleine auch nur ansatzweise die Möglichkeit, etwas fertig zu bringen? Denn ich möchte natürlich, trotz Interesse an der 'Technik',
auch alleine etwas entwickeln. Lieber SFML? Bringt mir SFMl denn zukunftsorientiert irgendeinen Bonus an Erfahrung in der Spieleprogrammierung? [...]

Liebe Grüße
Daniel.B

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

8

04.10.2012, 21:45

Zitat

Habe ich mit DirectX 11 eigentlich alleine auch nur ansatzweise die Möglichkeit, etwas fertig zu bringen? Denn ich möchte natürlich, trotz Interesse an der 'Technik',
auch alleine etwas entwickeln.


Natürlich hast du eine Chance. Bis aber alles "steht" bzw. du damit ein Spiel schreiben kannst geht schonmal 1 Jahr drauf, zumindest wenn du etwas Ansprüche an die Grafik hast.

Zitat

Lieber SFML? Bringt mir SFMl denn zukunftsorientiert irgendeinen Bonus an Erfahrung in der Spieleprogrammierung? [...]


Es hängt nicht davon ab wie du die Grafik auf den Monitor bekommst. Entscheidend ist am Ende das du dich mit diversen Konzepten beschäftigt hast. Z.B. musst du dir evt. überlegen wie du deine Objekte im Spiel verwaltest. Kollisionen, Physik, das ganze wiederholt sich und ist Wissen das du überall anwenden kannst. Auch in fertigen Engines oder später (falls du das vor hast) in deiner eigenen.
Also ja es bringt dir etwas. Aber du könntest auch Java nehmen, oder Untiy3D oder sonst was. Solange du programmierst und dir Gedanken machst.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

04.10.2012, 22:47

Naja du kannst ja an sich schon programmieren. Von daher ist ein totales Einsteigerbuch vielleicht nicht wichtig.
Sowas würde sich denke ich ganz gut eignen. Fängt zwar bei 0 an, aber hält sich am Anfang nicht so super lang mit Sachen auf die du schon kennen wirst. Wann du nun dein erstes Spiel schreibst, das ist so eine Sache. Man kann immer noch ein bisschen mehr lernen. An sich kannst du damit auch recht schnell anfangen. Am Anfang solltest du dich vielleicht mehr auf die Konsole beschränken, aber auch hier kann man sich kleine Spiele schreiben. Ein Zahlenraten, das Streichholzziehspiel (keine Ahnung wie das eigentlich heißt), vielleicht ein kleines Textbasiertes Spiel. Da muss man nur kreativ sein. Dann irgendwann wenn du denkst du bist mit C++ warm geworden, kannst du dir mal SFML 2 laden und damit versuchen ein Spiel zu bauen. Stell dich aber drauf ein ne Menge arbeit zu haben. C# und C++ sind schon unterschiedlich was einige Arbeiten angeht.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

04.10.2012, 23:35

Das von Schorsch vorgeschlagene Buch dürfte ganz gut sein, hab zumindest bisher nur positives drüber gehört. Und Spiele sind imo auch ganz besonders gute Übungsprojekte. Es ist also nicht so, dass du jetzt bis zu einem gewissen, klar definierten Punkt mit der Spieleentwicklung warten musst. Lern einfach mal anhand eines guten Buches die Grundlagen und mach dich dann daran, kleinere Projekte umzusetzen. Direct3D 11 etc. würd ich für den Anfang erst mal vergessen. Selbst ein normales Schachspiel in der Konsole kann schon eine ganz ordentliche Herausforderung sein. Hol dir SFML, mach ein Pong, Tetris, einen Super Mario Klon, spendier deinem Pong einen Multiplayermodus übers Netzwerk...
Wenn du dann im Umgang mit der Sprache und den Tools vertraut bist, kannst du dich an Direct3D ranmachen.

Werbeanzeige