Einsteigerhilfe



  • Hallo liebe C++ Menschen^^
    Bin 20 Jahre jung und es war schon seit ich 4 Jahre alt bin mein kleiner Traum Spiele zu programmieren.
    (Nachdem ich Super Mario gespielt habe, wusste ich: Ich will selbst Spiele machen und hab weniger gespielt, als mehr meine eigenen Levels auf Papier gezeichnet.)

    Seit ca. 2 Monaten nun beschäftige ich mich jetzt mit C++ und arbeite beispielsweise Volkards Tutorial durch, hab mir auch ein Buch gekauft und schau mir das ganze an und versuch mich in die Programmierung reinzutasten.

    Die Grundlagen denke ich habe ich halbwegs verstanden, aber irgendwie stecke ich voll und komm nicht weiter, weil ich nicht weis was ich mit meinen neu erworbenen Wissen anfangen soll, da es zu wenig ist um irgendwas sinnvolles (eben ein grafisches Spiel) zu machen, steh ich irgendwie völlig an, weil ich ja doch die Praxis brauche um mich "weiterzuentwickeln".

    Mein Ziel wäre es fürs erste mal ein kleines einfaches 2D Spiel zu programmieren. (beispielsweise Sidescroll Shooter)
    Mein Endziel natürlich wäre es irgendwann an einem fetten 3D RPG mitzuwirken, aber mir ist schon klar, dass ich nicht von heute auf morgen das kann und einen Schritt nach den anderen machen muss.

    Kann mir jemand was empfehlen wie ich weiterkomme am besten? Was ich zu beachten habe wenn ich so etwas machen will? Irgendein Tipp, Hinweis wie ich meinen Ziel näher komme am besten?

    Wie habt ihr es genau gemacht? Was war eure "Lernweg?"

    Freue mich auf eure Antworten. 🙂

    LG Martin



  • Hallo MSG,

    Ich kann dir auf jeden Fall dieses Buch "C++ für Spieleprogrammierer von Heiko Kalista"
    http://www.amazon.de/C-f%C3%BCr-Spieleprogrammierer-Heiko-Kalista/dp/3446403329/ref=sr_1_1?ie=UTF8&s=books&qid=1240831867&sr=8-1 empfehlen.
    Es ist für Einsteiger sehr gut geeignet. Es zeigt außerdem nette Beispiele, die auch schon was mit Spieleprogrammierung zu tun haben.
    Nicht nur "HelloWorld", was einem ja schon langsam zum Hals raushängt.

    Mit Graphik hat das erstmal nix zu tun, aber du lernst ja eh erstmal c++. Dann würd ich mich zunächst damit beschäftigen

    Hoffe, ich konnte dir damit weiterhelfen.

    Viel Spaß beim Coden



  • Super danke bubidup 🙂

    Werd mir das Buch zulegen, das klingt genau nach sowas was ich suche.



  • hi MSG,
    mir gings genau wie dir ich selbst bin 21 und programmiere auch erst seit anfang des jahres. ich habe mich anfangs durch viele tutoriels im netz geschlagen und in jedem wurde c++ anders beigebracht nach ca 2 monaten hab ich mich dann mit büchern aus der biblio versorgt und mir die grundlagen beigebracht. aber zum spieleprogrammieren gehört noch wesentlich mehr. z.b. winapi um ein windows fenster zu erzeugen und die windows nachrichtenabfrage die sich über den aktuellen stand des programms informiert. und alles andere habe ich dann mit direct x gemacht. steuerung , grafik , audio bin ich bei,einfach ma in der bücherei nachschauen da findet man viel nützliches 🙂
    naja und nun bin ich dabei mein erlerntes wissen zu testen und baue mein wissen nach und nach aus.



  • Wie wäre es am Anfang mit der Library "Allergo" ?
    Kann man bestimmt auch ohne Probleme in C++ "includen" 😉

    Grüße
    agi 🙂



  • aXYZn schrieb:

    Wie wäre es am Anfang mit der Library "Allergo" ?

    Und nicht zu vergessen: Heuschnupfen++ 🤡



  • Allegro ist alt und SDL wäre eine guter Einstieg wenn man mit Carbeiten würde.
    Aber SDL kann man gut zum lenren benutzen da es ziemlich viele Tutorials gibt.
    Und SDL+OpenGL ist schon fast Unschlagbar.
    Bei C++ welchen Objektorentiet ist da gibt es noch anderes Librarys die Objectorentiert sind.
    http://www.sfml-dev.org/
    http://fantasy2c.fa.ohost.de/ (zurzeit offline da ohost eine Probleme hat)

    Hier is noch ein List mit nütlichen Librarys:
    http://gpwiki.org/index.php/Libraries



  • Wenn man C++ lernen will, bin ich der Meinung dass man ziemlich früh mit der Grafik anfangen soll. Was bringt es, wenn sich in code irgendetwas tut, ohne dass es auf der Grafikoberfläche kommt? Console behindert das Lernen mehr als dass es fördert. Berechnet man eine einfache Perspektive, wie will man das auf die Console tun?
    4-gewinnt auf Console kann man ersparen - lieber gleich was mit Grafikschnittstelle anfangen. Sind ja auch nur ein paar Initialisierungsbefehle und lernt dabei gleichzeitig was.
    Es reicht aus wenn man die Funktionen drawPoint (pixeldraw), drawLines, drawPolygons beherrschen kann. Qt käme vlt in Frage, ist aber kompliziert weil man die Bibliothek einrichten muss, Klassen erben muss usw. SDL wäre einfacher, Problem ist wiederrum, dass man dort keine GUI Elemente erstellen kann, was Input schwierig macht. Nur Tastatur und Mouseevents hat man nicht soviel Freiheit und zögert das Lernen hinaus. Es gibt GUI-Bibliotheken für SDL aber dann kann man ja gleich Qt nehmen. Wer trotzdem schafft Qt ohne wirklich viel C++ Hintergrundwissen, laufen zu bringen, der kann auf maximum C++ lernen, weil Freiheit maximum ist. Äh ich willn ich gutheissen dass Qt die beste Wahl ist aber wem wxWidgets oder MFC gefällt soll halt das nehmen. 😃



  • Nein, da kann ich überhaupt nicht zustimmen.
    Wenn man C++ lernen will und mit SDL anfängt, lernt man C mit Klassen, einfach, weil die Lib C ist.
    Qt ist auch kein wirklich gutes C++ (Stichwort moc), da schaut man sich auch nur Unfug ab.
    Auf der Konsole zu programmieren ist für den Anfang ausreichend. Da kann man sich darauf konzentrieren, die Sprache C++ zu lernen und wird nicht von komischen Umsetzungen in einer externen Library abgelenkt. Das führt meiner Meinung nach zu nix.

    Aber wenn man unbedingt diesen Weg gehen will, dann sollte man mit SFML starten. Das ist immerhin recht ordentliches C++.

    Didaktisch ist es meiner Meinung nach trotzdem Unfug. Allerdings muss das jeder selbst entscheiden...



  • Wenn man C++ lernen will, bin ich der Meinung dass man ziemlich früh mit der Grafik anfangen soll. Was bringt es, wenn sich in code irgendetwas tut, ohne dass es auf der Grafikoberfläche kommt? Console behindert das Lernen mehr als dass es fördert. Berechnet man eine einfache Perspektive, wie will man das auf die Console tun?

    Du hast das Konzept nicht verstanden. Grafikprogrammierung besteht unter Anderem aus Formeln bzw. Mathematik (z. B. Perspektivische Berechnungen) und dem eigentlichen Code.



  • xBlackKnightx schrieb:

    Was bringt es, wenn sich in code irgendetwas tut, ohne dass es auf der Grafikoberfläche kommt? Console behindert das Lernen mehr als dass es fördert

    Das kann doch nicht dein Ernst sein? Die Programmiersprache C++ lernt man nicht durch lustige Grafikausgaben. Wie soll man so wichtige Konzepte wie Zeiger, Objektorientierung, Templates erlernen? Als ob man sich als Anfänger grafische Anwendungen solcher Konzepte nur im Entferntesten vorstellen könnte...

    mad_martin hat völlig Recht. Mit Grafik zu beginnen ist mehr als leichtsinnig. Auf diese Weise fehlen einem die ganze Zeit grundlegende Sprachkenntnisse, die einen wiederum bei der Grafikprogrammierung behindern. Es gibt so viele Leute, die zwar etwas grafisch zustande bringen (teilweise sogar 3D), aber einen bedenklichen Codestil an den Tag legen und teilweise nicht einmal wissen, was die Standardbibliothek ist.

    Sowas bringt niemandem was, da lohnt sich die investierte Zeit für C++ allemal. Auch würde ich am Anfang auf keinen Fall mit einem Framework lernen. Gerade bei GUI-Frameworks ist hässliches C++ weit verbreitet. Klar muss es jeder selber wissen, aber ich rate davon stark ab.



  • Meine Idee war eher gemeint, dass man von diesem Boden aus (Grafik) dann richtig C++ lernt. Klar gibt es da Ablenkungen, aber man greift trotzdem ein gutes C++ Buch und arbeitet damit durch. Anfang sollte schon Console sein, aber sobald man mit Vererbung, Containern, new & delete, threads und multiarrays lernt, so finde ich, braucht man etwas mehr Sichtbarkeiten und Freiheiten. Mit new in Console ein Objekt erzeugen macht wenig Sinn, außer bei Datenbanken. Ich selbst habe was mit SDL angefangen und später Qt simple Programme geschrieben ohne noch C++ wirklich auszukennen. Weil ich eben von diesen Plattformen aus weiterhin auf die eigentliche C++ Sprache konzentrieren will. So beschäftige ich mich immer noch mit Containern und müsste die Zusammenhänge zwischen Zeiger und Array plus Objekte gründlich durchlernen. Eine Consolenausgabe hat man zusammen mit Grafikausgaben immer noch. Aber wenn die Ablenkung wirklich so stark sein soll, wie ihr meint, so sind die Leute doch sehr verschieden ^^

    Du hast das Konzept nicht verstanden. Grafikprogrammierung besteht unter Anderem aus Formeln bzw. Mathematik (z. B. Perspektivische Berechnungen) und dem eigentlichen Code.

    Wie will man den Schülern Pythagoras ohne Grafik erklären? Eine Logik kann man zwar immer verfolgen, aber man wird dadurch nicht richtig bewußt. Ich zeige nur eine Möglichkeit mit der Gleichzeitigkeit: Mit Formeln arbeiten und gleichzeitig in Console und Grafikausgabe ausgeben.

    Und um ein richtiges 3D RPG Spiel zu programmieren, muss er irgendwie den Weg abkürzen, denn die wenigsten können so ein Spiel noch annähernd herbeizaubern.

    Naja, jeder seinen Weg... Vlt können wir so zusammenfassen: wer richtig viel Geduld hat, fängt lange mit console an und eine Langeweile käme nicht in Frage. Wer wenig Geduld hat sollte sofort etwas herbeigezaubert sehen, sonst gibt er schnell auf.



  • xBlackKnightx schrieb:

    Naja, jeder seinen Weg... Vlt können wir so zusammenfassen: wer richtig viel Geduld hat, fängt lange mit console an und eine Langeweile käme nicht in Frage. Wer wenig Geduld hat sollte sofort etwas herbeigezaubert sehen, sonst gibt er schnell auf.

    Das würde ich so nicht Unterschreiben, entweder man hat Gedult oder man hat keine, wenn man keine hat sollte man das ganze am besten direkt lassen. Direkt auf Grafik zu gehen bringt nichts, setz dich mal mit fast 0 Kenntnissen hin und mach mal mit der WINAPI ein paar Buttons, klar du bekommst sie irgendwann dahin wo du sie hinhaben willst, aber was bringen sie dir? Da ist es doch viel einfacher zumindest die Grundlagen ind er Console zu machen und erstmal etwas herum zu Probieren, der Zusätzliche Aufwand für etwas Grafik ist ja stellenweise nicht ohne, und mit der Console kann man auch einiges Anstellen.



  • Wer wenig Geduld hat sollte sofort etwas herbeigezaubert sehen, sonst gibt er schnell auf.

    Das ist definitiv der falsche Weg. Wie ich bereits sagte, du hast das Konzept nicht verstanden.



  • Ja klar kann man mit der Console was anstellen. Als ich mit C++ angefangen habe, war mein allererstes Programm mit drawlines auf console die sich rotieren
    http://www.youtube.com/watch?v=cLZLo4RxBTk
    eben ganz ohne Bibliotheken, nur reines Cc++ und iostream.
    Warum nicht gleich Pixel zeichnen?

    Ich hatte damals sonst keine Idee was ich mit C++ anfangen soll, außer ein paar langweilige Text- und Zahlausgaben. Lernt man Referenzen und Zeiger, erkennt den Sinn nicht so richtig, lernt man weiter mit Vererbung so vergiss man das vorige wieder. Wieder wertvolle Zeit verschwendet. Was soll den das Konzept sein? Gerade in der Grafikausgabe mit Widgets, Buttons etc werden Zeiger, new, delete, Vererbung, am häufigsten eingesetzt. Da erkennt man den Sinn und bleibt im Kopf! Wissenschaftler haben herausgefunden, dass alles nicht in Sinn erkennbares schneller wieder aus dem Kopf fällt. Deswegen wissen die meisten Menschen nicht mehr was sie in der Schule zu 80% gelernt haben. Dort ist der Lernstoff eben Unfug ohne Ende.



  • Bei Grafikausgabe oder GUI-Programmierung werden aber auch Konzepte benutzt, die man erstmal verstehen muss. Ein Gameloop oder ein Eventsystem kann Anfänger schnell verwirren, weil das Programm scheinbar nicht mehr hinternander ausgeführt wird, sondern an vielen Stellen hin und her springt. Dann stellen sich Fragen, wie man denn im Eventhandler an die Daten außerhalb kommt, oder umgekehrt.

    Und nur weil man sich auf die Console beschränkt muss es nicht langweilig sein. Gerade weil RPG erwähnt wurde, wäre doch ein Text-RPG eine tolle Sache. Schreib z.B. eine Character- oder Inventarsystem. Textausgabe reicht da erstmal locker wie:

    Character: Stärke: 3, Ausdauer 5 ...
    Inventar: 3x Heiltrank, 5x Manatrank, 1x Schwert des Todes ...
    

    Das tolle dabei ist, wenn du es gut geschrieben hast, kannst du es später immer noch grafisch darstellen.



  • Ich hatte damals sonst keine Idee was ich mit C++ anfangen soll, außer ein paar langweilige Text- und Zahlausgaben.

    Damals, ok. Und wie siehts heute aus? Hast du Referenzen?

    Lernt man Referenzen und Zeiger, erkennt den Sinn nicht so richtig, lernt man weiter mit Vererbung so vergiss man das vorige wieder.

    Man lernt Code auch nicht, sondern versteht ihn und versucht ihn an passenden Stellen einzubauen.

    Was soll den das Konzept sein?

    Das (/Mein) Konzept besteht daraus, sich stufenweise vorzuarbeiten. Komplexe Zusammenhänge zu verstehen und komplexen Code effizient einzusetzen. Wenn man diese Grundkondition erfüllen kann, dürfte man bereit für die effektive Grafikprogrammierung sein. Ich habe nach diesem Schema gearbeitet und bin stolz auf meine Leistungen. Ich habe gelernt, mit Prinzipien zu arbeiten.

    Gerade in der Grafikausgabe mit Widgets, Buttons etc werden Zeiger, new, delete, Vererbung, am häufigsten eingesetzt.

    Wenn du da den WIN-API bereich ansprichst, haben Vererbungen herzlich wenig mit der Thematik zu tun.

    Da erkennt man den Sinn und bleibt im Kopf!

    Das verstehe ich nicht, was haben Zeiger, Allokierungsoperationen oder Vererbungen mit der WIN-API zu tun? (Siehe letzte Antwort)

    Wissenschaftler haben herausgefunden, dass alles nicht in Sinn erkennbares schneller wieder aus dem Kopf fällt.

    Da ist etwas wahres dran, wenigstens etwas wertvolles in deinem post. Allerdings gibt es gute Resourcen, die es einem verständlich erklären. (Ich denke da an Literatur) Btw: Hilfe zur Selbsthilfe zeugt meiner Ansicht nach von Unselbstständigkeit.

    Deswegen wissen die meisten Menschen nicht mehr was sie in der Schule zu 80% gelernt haben. Dort ist der Lernstoff eben Unfug ohne Ende.

    Ahja und woher kannst du 1+1 rechnen? Kannst du das etwa nicht? Woher kannst du lesen, schreiben?



  • xBlackKnightx schrieb:

    Lernt man Referenzen und Zeiger, erkennt den Sinn nicht so richtig, lernt man weiter mit Vererbung so vergiss man das vorige wieder. Wieder wertvolle Zeit verschwendet.

    Wieso Zeit verschwendet, ich kann auch nicht die ganze Vererbung auswendig, abe rich hab sie mal irgendwann durchgearbeitet und weiß was es alels gibt und schaue bei Bedarf rein wie es nochmal ganz genau ging, und genau darum geht es, man sollte sich wenigstens im Klaren sein was es alles gibt auch wenn man es sich nicht bis ins Detail gemerkt hat, denn wie wilst du wissen das du an Stelle X Vererbung nutzen könntest wenn du nichtmal weist das es sie gibt? Und Zeiger und Referenzen sind schlechte Beispiele, die kommen auch in einfachen Programmen öfters mal zum Einsatz, und zur Not benutzt man sie einfach absichtlich um sich einzuüben.


Anmelden zum Antworten