C++11 Primer geeignet für Spielprogrammierung?



  • Hi,
    ich möchte lernen wie man Spiele programmiert bzw. mir die Grundlagen erst deutlich machen. Ich habe in meinem Leben noch nie wirklich was programmiert und habe vor 1 woche angefangen.
    Ich habe nun C++ Primer 5th Edition nun als EBook und lerne damit halbwegs den Umgang mit C++. Nun habe ich gesehen, dass es auch Bücher direkt für die Spieleprogrammierung gibt. Nun würde ich gerne wissen ob es sich lohnt diesen englischen Brocken zu lesen oder ob ich mir gleich ein auf Spieleprogrammierung spezialisiertes Buch kaufen soll.

    Mfg,
    Noob

    P.S.: Wo kann ich Fragen über IDE's für C++ fragen? 😕



  • Nein, erstmal richtig C++ lernen, da bist beim Primer schon richtig. Wenn du die Sprache richtig beherrschst (und bei C++ geht man üblicherweise von einem halben Jahr Lernzeit aus), kannst du dir was über Spieleprogrammierung anschauen. Da würde ich diese "spezialisierten" Bücher dann aber auch eher weniger empfehlen, die meisten sind ziemlich schlecht und nur darauf ausgelegt, möglichst viele ahnungslose Käufer zu finden, die halt Spiele programmieren wollen.



  • Tu Dir einen Gefallen und lerne zuerst recht gut programmieren. Danach fällt die Spieleprogrammierung recht leicht und alles wird gut.
    Viel zu viele steigen leider zu früh in die Spieleprogrammierung ein und werden unglaubliche Stümper. Laute von sich überzeugte Stümper, traurig anzusehen.

    Der Primer ist gut. Vielleicht vorm gamecoding noch zwei gute C++-Bücher davorsetzen, dann werden Dir beim ersten Spiel-Buch vermutlich Lachtränen durch den Bart rinnen, wie umständlich der Autor es angefaßt hat. Dann ziehst Du Dir die gamecoding-Inhalte raus, aber läßt Dir Deinen Stil nicht versauen. Das wäre toll.



  • Danke für die Hilfe Jungs ... Ich werde eure Tipps definitv berücksichtigen. Und das Lustige volkard ist, dass ich wirklich einen Bart habe ^^. Vielleicht bleibe ich ja auch solange vom gamecoding weg bis dann das Studium anfängt und widme ich solange den Basics 🤡



  • DerNewb schrieb:

    Und das Lustige volkard ist, dass ich wirklich einen Bart habe ^^.

    Naja, deine Ansage machte mir irgendwie glaubwürdig, daß Du es im Programmieren weit bringen willst und kannst.
    http://www.wired.com/2012/06/beard-gallery/

    DerNewb schrieb:

    Vielleicht bleibe ich ja auch solange vom gamecoding weg bis dann das Studium anfängt und widme ich solange den Basics 🤡

    Keine Chance! Aber bleib mal locker und halte Dich lang von grafischen Oberflächen fern. Wirst die Software vor dem Studium eh nicht verkaufen; Du kannst auch mit Konsole-Ausgaben zocken.

    ~(aus anderem Thread)~

    DirkB schrieb:

    Sollte aber alles in dem Buch stehen. Durcharbeiten und nicht nur lesen. Und lesen und nicht blättern.

    Nöööööööö!
    Damit man bei den ersten Übungsaufgaben sich keinen Scheiß angewöhnt, muß das Buch schon exorbitant gut sein und dann ist es noch nicht garantiert, weil jeder spezielle Lerner ein anderes spezielles Buch braucht. Hartes Durcharbeiten ist nur sinnig, wenn man viel viel mehr Zeit als Geld hat.

    Ich nehme mal an, daß Du zwar gelegentlich Schach spielst, aber den Tarrasch
    Das Schachspiel | ISBN: 3938484845
    noch nicht kennt. Uih, der hat in Sachen Schach echt dicke Eier. Aber auch im Erklären. Im Vorwort sagt er entschieden: Jetzt Hände weg vom Schachspiel gegen Gegner! Erst alles lesen! Erst alles lesen! Tust Du abbrechen wirste Stümper! Lies es durch und du haust die meisten Vereinsspieler weg!
    Und Zappzarrap, so ähnlich war es bei mir. Hab meinen damaligen 4-Bit-Schachcomputer nach dem Tarrasch-Lesen von Stufe2 (ca 1min überlegen) auf Stufe8 (unbeschränkt überlegen, hab ihn beim Aufstehen und beim Zubettgehen nach seinem Zug befragt) gestellt und ihn regelmäßig plattgemacht.

    Wenn Du es Dir leisten kannst (quatsch, das sollten die Eltern schon stiften, ehrlich), dann hau Dir schnell den Primer rein (ja, beim ersten mal 90% nicht verstanden/verinnerlicht, das ist voll ok), den Breymann, Meyers(ec++), Struppi(neuestes), leider den Kotzbrocken Sutter. Und dann lies die alle nochmal und beim zweiten mal Lesen sind diese Behauptungen nicht mehr komische wirre Behauptungen, sondern im großen Kontext des Programmierwissens sind es "nur" aber wirklich begeisternde "Aha-Erlebnisse"! In einer total wirren Zeit. Keiner weiß bescheid. Aber der schreibt genau das, was Du selber herausgefunden hättest, wenn Du dafür ein paar Jahre Zeit gehabt hättest, um endlich große Ordnung reinzubringen. Wirst in jedem C++-Buch beim zweiten mal Lesen unglaublich viel dazulernen, denn nun paßt es harmonisch zum Rest rein.

    Meine Empfehlung: Erst viel lesen, dann coden. Selbst wenn gamecoding dein Hauptziel ist, je länger Du es verzögerst, desto besser wirst Du.

    Tip für Leben: Wenn Du demnächst gut programmieren kannst, dann studiere auf keinen Fall Informatik! Hat keinen Zweck, das beste Kellerkind zu werden. Studiere was, was möglichst weit erntfernt ist. Bei kognitiven Psychologen kannste mit 2 Stunden Excel-Programmieren(mit Debuggen) 14 Tage Hand-Auswertung ersetzen und bist dabei noch fehlerfrei. In Argentinien müssen die armen Leute Stücklisten in Excel mit 30000 Zeilen per Hand anpassen, da wärst Du der Hammer. Weil dort keiner weiß, daß es so leicht programmiert wäre.

    Klar hab ich mich auch in gamecoding versucht. Und eine Sprache entworfen und mit dem Compiler/Interpreter angefangen. Mit einem Betriebssystem angefangen. Oh, mein MMORPG-Server(im Anfangssadium) hat vergleichbare Server(bei selben Aufgaben) um Faktor 50 weggehauen, konsequentes C++(virtual wenn nötig) und konsequentes Nicht-C++(MyVector initialisiert nicht mit 0), außerdem ein wenig Gefühl für Datenstrukturen.

    Uuups, lies den Sedgewick "Algos und Datenstrukturen in C". Kein "in C++" oder "in Java". Perfekter Einstieg. Sowas von lehrreich und gleichzeitig unterhaltend.


  • Mod

    volkard schrieb:

    Tu Dir einen Gefallen und lerne zuerst recht gut programmieren. Danach fällt die Spieleprogrammierung recht leicht und alles wird gut.

    naja, nur weil jemand schneiden lernt wird er nicht ganz 'leicht' ein koch. gibt leider auch zuviele die glauben ihr allumfassendes c++ wissen wuerde sie zum spieleprogrammieren befaehigen wuerde. Man sollte zwar grundlagen kennen, aber danach kommt erst der grosse batzen den man lernen muss um spiele zu machen.

    ich wuerde vorschlagen c++ und spieleprogrammierung parallel zu machen, nicht so sehr ambitioniert ein spiel zu erstellen, sondern das gerade gelernte c++ wissen in ein spiel umzuformen.
    -ein wuerfel
    -lottozahlen generator
    -guess the number
    -tetris
    -pac man
    -text adventure
    -...

    wir geben hier auch gerne tips und ideen im forum 🙂



  • rapso schrieb:

    naja, nur weil jemand schneiden lernt wird er nicht ganz 'leicht' ein koch.

    Wer nicht gut schneiden lernt, wird ganz sicher kein guter Koch. 🤡


  • Mod

    volkard schrieb:

    rapso schrieb:

    naja, nur weil jemand schneiden lernt wird er nicht ganz 'leicht' ein koch.

    Wer nicht gut schneiden lernt, wird ganz sicher kein guter Koch. 🤡

    wer andere schneidet, der schneidet nicht sich selbst 🤡



  • Ich empfehle in diesen Situationen immer, dir das Spiel nicht ausreden zu lassen. Aber überschätz dich bloß nicht. Es wird beim ersten Mal nichts, beim zweiten und dritten auch nichts. Ich habe für C++ nach den ersten Tutorials alles auf diese Weise gelernt. Ich habe geschätzt alles an Fehlern gemacht, aber dadurch dass ich ein Ziel hatte, habe ich intensiv daran gesessen und immer wieder mit anderen Methoden angefangen.



  • Schwieriges Thema.
    Einerseits sind die Grundlagen wichtig.
    Andrerseits sind auch die domänenspezifischen Dinge wichtig. Und man verliert schnell das Interesse wenn man nur Grundlagen lernt.

    Ich glaube eine gute Möglichkeit die Sache anzupacken ist dass man erstmal die grundlegendsten Grundlagen lernt, und dann anfängt kleine Projekte umzusetzen. Und mit klein meine ich *wirklich* klein. Siehe http://tinodidriksen.com/2003/05/06/but-can-you-make-pong/

    Und dann das nächste kleine Projekt, und das nächste. Und dabei der Versuchung widerstehen Dinge wiederverwenden zu wollen. Wiederverwenden kann man wenn man mal ein paar Jahre programmiert hat. Und auch dann nicht vom ersten Projekt in einer neuen Domäne. Denn so gut man auch programmieren kann, die Abstraktionen die man beim ersten Projekt in einer neuen Domäne wählt werden kaum gut sein.

    In der Arbeitswelt haben viele von uns nicht die Möglichkeit ein Projekt zwei oder dreimal zu entwickeln, und müssen daher mit Code "produktiv gehen" den sie so kein zweites mal schreiben würden. Oder noch schlimmer: vermurksten Code aus dem ersten Projekt in einer Domäne in weiteren Projekten wiederverwenden. "Das haben wir ja schon, das verwenden wir einfach wieder" sagt der Chef.
    Als Hobbyist kann man sich den Luxus Dinge die man beim ersten mal verbockt hat beim zweiten mal ordentlich zu machen aber gönnen. Und sollte man mMn. auch.

    Und nebenbei natürlich immer ein bisschen Grundlagen auffrischen/dazulernen. Bloss nicht glauben man kann oder weiss jetzt alles was es zum Thema C++/Software-Design/... zu wissen gibt, und aufhören über neue Dinge zu lesen bzw. diese zu probieren.



  • ++ an hustbaer.
    Eines möchte ich noch anmerken: Wenn die Projekte dann größer und modularer werden, sollte man sich auch nicht unbedingt daran aufhängen, an das "Sauberer Code"-Mantra dieses Forums zu denken. C++ lässt einen am an langen Arm verhungern, sobald man vernünftiges RTTI, Serialisierung und solchen Kram benötigt, was Bibliotheks- und Verarbeitungsprogramm-Entwickler mit Entwicklungen in einer "statischen" Domäne oftmals übersehen, und dann trotzdem ihre Meinung dazu abgeben. Natürlich sollte alles modular sein, übersichtlich, schöne Schnittstellen usw., aber manchmal muss man sich dann eben auch die Hände schmutzig machen. Da ist es echt kontraproduktiv, wenn man sich ständig unter Druck setzen lässt, dass dies und jenes "nicht sauber" ist. Die Welt ist eben kein Zuckerschlecken 😉

    Nicht dass das im Moment für den OT wichtig wäre, wenn er sich erstmal in die Materie einarbeiten muss...



  • Ich spreche mal aus meiner eigenen Erfahrung:

    Meine primäre Intention war es am Anfang meiner Programmierung mit C++ Grafiken zu sehen und ein Spiel zu entwickeln. Dies jedoch, ohne die Grundlagen von C++ verinnerlicht zu haben.
    Dies hat dazu geführt, dass ich unnötig ein halbes bis ein Jahr damit verschleudert habe, weil ich noch nicht in der Lage war, in C++ "zu denken".

    Ohne die Sprache wirklich zu kennen, würde man sicherlich nicht so schnell auf Dinge wie z.B. Pointer kommen, was jedoch zu erheblichen Einschränkungen führen kann.
    Ich ging ohne ernstzunehmende Programmierkentnisse die Probleme in Spielen einfach viel zu beschränkt an, da ich zum Einen mehr Freude an einer Grafik auf dem Bildschirm hatte und zum Anderen die faktische (Befehle), als auch gedankliche, logische Basis der Programmiersprache C++ (ließe sich sicherlich auf diverse Sprachen übertragen) fehlte.

    Allerdings kann ich auch nicht empfehlen, sich durch Projekte in Büchern (ist der Primer immer noch mit der Buchverwaltung mit ISBN und Co?) zu quälen, ohne an ihnen interessiert zu sein.
    Ich nutzte auch den Primer und konnte mich erst nur bis Seite 250 "quälen", weil mich das Beispielprojekt doch herzlich wenig interessierte.

    Es ist aber sicherlich ratsam, die ersten 100 oder 200 Seiten erstmal einfach nur zu lesen, um sich einen Überblick über die Sprache zu verschaffen (Systematik allg., Variablen, Funktionen, Klassen, usw.).
    Immer mal wieder darüber nachdenken, wie man bestimmte Probleme mit C++ lösen könnte (Taschenrechner z.B.), und die Projekte, an deren Lösung man interessiert ist, WIRKLICH realisieren.

    Nur so ist es meinem Erachten nach möglich, eine Programmiersprache wie C++ ordentlich zu erlernen, ohne -wie ich- einen Teil seiner Lebenszeit zu verschwenden.

    Wenn du dann die Grundlagen erlernt hast und größere Projekte planst (umfangreicher Taschenrechner, Spieldatenbank, Mini-TextRPG mit mehreren Klassen), bist du dann gut für die nächsten Seiten des Buches gewappnet, weil du neu erlernte Inhalte zur Erweiterung deiner vorherigen Projekte nutzen kannst und wieder motiviert sein wirst, neue Mittel von C++ zu erlernen.

    Dann wirst du z.B. sehen, dass du deinen Taschenrechner um eine Funktion zur Errechnung von Flächen erweitern kannst und wirst im Hinblick auf die zuvor gelesenen weiteren Buchseiten merken, dass eine Form bzw. ein geometrisches Objekt als abstrakte Klasse gelten kann und diese Implementierung doppelten Code vermeidet.

    Und wenn man dennoch ein wenig "Grafik" haben möchte, nutzt man Schriftzeichen in der Konsole.

    ... So viel zu meinen Tipps und Erfahrungen 😉



  • Benutzt einfach Unity3D wenn ihr Spiele machen wollt. Damit lassen sich auch 2D Spiele machen. Programmiert wie in C#. Make Games, Not Engines ist die Devise. Ein Spiel als In die Dev mit C++ hochzuziehen ist einfach nur Sinnfrei.



  • jejeme schrieb:

    Benutzt einfach Unity3D wenn ihr Spiele machen wollt. Damit lassen sich auch 2D Spiele machen. Programmiert wie in C#. Make Games, Not Engines ist die Devise. Ein Spiel als In die Dev mit C++ hochzuziehen ist einfach nur Sinnfrei.

    lol


  • Mod

    wer urban runner 13 in 2 monaten ueber die buehne bringen muss, der folgt dieser anweisung vermutlich, da macht es keinen sinn nachzudenken oder jegliche ambitionen zu zeigen. fertig schreiben, bugs fixen, raus in die free to play welt. und wenn man damit zufrieden ist und das noch 40jahren machen moechte ➡ do it.


Log in to reply