Warum C Code in vielen Spieleprogrammier bücher bzw. Tutorial



  • BlackFalcon schrieb:

    Ich lerne jetzt sowieso erst mal c++ mit diesem Buch: http://www.amazon.de/Einführung-die-Programmierung-mit-C/dp/3868940057/ref=sr_1_5?s=books&ie=UTF8&qid=1306216911&sr=1-5 ist zwar teuer aber eine gute Lektüre vor allem vergeht mir nicht der Spaß am lesen an diesem Buch was bei mir der Hauptgrund ist warum ich keine Bücher fertig bekomme 😃

    Als ich habe mir folgendes Buch gebraucht gekauft:
    http://www.amazon.de/C-Pocket-leichte-Einstieg/dp/3827265010/ref=sr_1_1?ie=UTF8&qid=1306232575&sr=8-1
    60€ für ein Buch über C++ Programmierung halte ich ehrlichgesagt für rausgeschmissenes Geld. C++ Pocket beschreibt eigentlich alles wichtige kurz und knapp mit guten Beispielen. Wem das nicht reicht, der findet im Internet Unmengen Tutorials.

    Ich gehöre übrigens auch zu den Leuten die C und C++ mischen :p Liegt aber womöglich auch daran das ich zuerst mit ANSI C begonnen habe. Vllt ist das auch bei einigen Autoren der Grund, denn ich habe schon öfters gehört das es mittlerweile teilweise als grundlegend falsch bzw. unnötig angesehen wird zuerst C zu lernen.

    Der Autor des von mir benannten Buches sagt auch folgendes:

    Wann immer Sie vor der Aufgabe stehen etwas in C++ realisieren zu müssen, das in C einfacher machbar ist, dann rate ich Ihnen schweren Herzens, auf C-Code zurückzugreifen.

    Jedoch warnt er im folgenden davor das zu übertreiben.



  • Flori() schrieb:

    Der Autor des von mir benannten Buches sagt auch folgendes:

    Wann immer Sie vor der Aufgabe stehen etwas in C++ realisieren zu müssen, das in C einfacher machbar ist, dann rate ich Ihnen schweren Herzens, auf C-Code zurückzugreifen.

    Ich glaub der Autor hat nicht so wirklich verstanden was C++ ist...



  • dot schrieb:

    Flori() schrieb:

    Der Autor des von mir benannten Buches sagt auch folgendes:

    Wann immer Sie vor der Aufgabe stehen etwas in C++ realisieren zu müssen, das in C einfacher machbar ist, dann rate ich Ihnen schweren Herzens, auf C-Code zurückzugreifen.

    Ich glaub der Autor hat nicht so wirklich verstanden was C++ ist...

    mag sein^^, doch ich finde ehrlich gesagt so unrecht hat der garnicht 😉



  • "Wir müssen unseren Kindern besseres Deutsch lernen."

    Ich bin Österreicher da wundert ihr euch noch das wir kein anständiges Deutsch sprechen können. 😃

    60€ für ein Buch über C++ Programmierung halte ich ehrlichgesagt für rausgeschmissenes Geld

    Wenn damit leichter lerne, ist mir der Preis völlig egal. Es darf nur nicht zuviel kosten.



  • Flori() schrieb:

    mag sein^^, doch ich finde ehrlich gesagt so unrecht hat der garnicht 😉

    Sowas darfst du hier nicht sagen. Die von Mischung C und C++ ist hier verpönt ^^
    Die ganzen "Mischer" agieren hier nur im Untergrund 😃



  • @Topic: Du hast doch offenbar schon Erfahrung mit Softwareentwicklung in C#. Ein Spiel ist auch nur Software. Ich könnte mir vorstellen dass dir einfach ein gutes C++ Buch mehr bringt als irgendwelche C++ und Spieleprogrammierungs-Anfängerkurse-Komplettpakete.

    Flori() schrieb:

    dot schrieb:

    Flori() schrieb:

    Der Autor des von mir benannten Buches sagt auch folgendes:

    Wann immer Sie vor der Aufgabe stehen etwas in C++ realisieren zu müssen, das in C einfacher machbar ist, dann rate ich Ihnen schweren Herzens, auf C-Code zurückzugreifen.

    Ich glaub der Autor hat nicht so wirklich verstanden was C++ ist...

    mag sein^^, doch ich finde ehrlich gesagt so unrecht hat der garnicht 😉

    Also ich hab in meinem ganzen Leben noch nie ein Problem gesehen das in reinem C besser lösbar ist als in C++...



  • Die einzigen Kapiteln die ich noch durchgehen muss ist alles mit Zeiger und Referenzen dann könnte ich schon mal anfangen will aber das Buch erstmal ganz durcharbeiten. Des es ist schon lange her das mit C++ gearbeitet hab und einbisschen auffrischung ist sicherlich nicht schlecht. ^^



  • Traue nie einem Buch, das dir alles aufs Mal beibringen will. "Spieleprogrammierung mit C++"... Nicht ohne Grund hat der C++-Primer alleine schon über 1000 Seiten. Und der behandelt nur C++. Als eines der wenigen Bücher dafür richtig.

    Das andere Problem wurde auch schon erwähnt: Fundamentale Konzepte werden mal grundsätzlich falsch verstanden oder nur sehr limitiert wiedergegeben. Das fängt bei den rigiden Assoziationen "C++ hat Klassen und ist somit OOP, C hat keine Klassen und ist somit prozedural" an. Dazu kommen die tausenden Mythen von wegen "C ist effizienter als C++ weil hardwarenaher", "virtuelle Funktionen sind langsam" etc. Ein wichtiger Schritt besteht meines Erachtens darin, solche sich teilweise hartnäckig haltentenden Dogmen kritisch zu hinterfragen.



  • Der Wrapper schrieb:

    Die meisten APIs sind nunmal C basiert, dazu gehört auch die SDL, OpenAL und OpenGL, 3 wichtige Bibliotheken für die Spieleprogrammierung.

    SDL ist nicht wichtig, da es eine austauschbare Highlevel-Bibliothek ist. Mit SFML existiert inzwischen auch eine massiv bessere Alternative, besonders für C++.

    Und mit Low-Level-Frameworks wie OpenGL muss man auch nicht unbedingt zu tun haben, wenn man Spiele programmiert. Das hängt sehr von den genauen Ansprüchen ab. Sobald man abstrahierende Frameworks verwendet, gibt es vieles direkt für C++, z.B. die Open-Source-Grafikbibliotheken Irrlicht und Ogre.



  • Was ist der eigentlich der Unterschied zwischen einer Engine und einer z.B. DirectX Bibliothek? Ich hab das immer noch nicht begriffen.

    Gruß Blacky



  • Engine siehe hier: https://secure.wikimedia.org/wikipedia/de/wiki/Gameengine

    Directx stellt die Funktionen zur Verfügung, um die Darstellungen, die die Engine generiert, auf dem Bildschirm anzuzeigen, mal so ganz grob gesagt.



  • BlackFalcon schrieb:

    Ja gut im grunde genommen kann eh jeder machen was/wie er es will. Mich wundert nur das in den meisten Spieleprogrammierbücher die von C++ sprechen nur C Code enthalten. Naja vielleicht sollte ich aber auch mal ein Buch zu ende lesen. 😃 Ich lerne jetzt sowieso erst mal c++ mit diesem Buch: http://www.amazon.de/Einführung-die-Programmierung-mit-C/dp/3868940057/ref=sr_1_5?s=books&ie=UTF8&qid=1306216911&sr=1-5 ist zwar teuer aber eine gute Lektüre vor allem vergeht mir nicht der Spaß am lesen an diesem Buch was bei mir der Hauptgrund ist warum ich keine Bücher fertig bekomme 😃

    Mann, der Preis von diesem Buch ist in den vergangenen Jahren ja heftigst angestiegen.

    Früher bekam man so ein Buch für 50 €.



  • dot schrieb:

    Flori() schrieb:

    Der Autor des von mir benannten Buches sagt auch folgendes:

    Wann immer Sie vor der Aufgabe stehen etwas in C++ realisieren zu müssen, das in C einfacher machbar ist, dann rate ich Ihnen schweren Herzens, auf C-Code zurückzugreifen.

    Ich glaub der Autor hat nicht so wirklich verstanden was C++ ist...

    Objektorientierte Bloatware!



  • BlackFalcon schrieb:

    60€ für ein Buch über C++ Programmierung halte ich ehrlichgesagt für rausgeschmissenes Geld

    Wenn damit leichter lerne, ist mir der Preis völlig egal. Es darf nur nicht zuviel kosten.

    Wann ist denn für dich zu viel?

    Also > 70 € für ein Programmierbruch sind eigentlich nicht normal.
    Wie schon gesagt, der Standardpreis für die wirklich guten Bücher, also nicht solche 30 € in 10 h Lernbücher ohne Inhalt, liegt bei 50 €.



  • Ich weiß es! schrieb:

    dot schrieb:

    Flori() schrieb:

    Der Autor des von mir benannten Buches sagt auch folgendes:

    Wann immer Sie vor der Aufgabe stehen etwas in C++ realisieren zu müssen, das in C einfacher machbar ist, dann rate ich Ihnen schweren Herzens, auf C-Code zurückzugreifen.

    Ich glaub der Autor hat nicht so wirklich verstanden was C++ ist...

    Objektorientierte Bloatware!

    ...Aber wie du siehst ist der Autor damit bei weitem nicht allein...



  • Nexus schrieb:

    Der Wrapper schrieb:

    Die meisten APIs sind nunmal C basiert, dazu gehört auch die SDL, OpenAL und OpenGL, 3 wichtige Bibliotheken für die Spieleprogrammierung.

    SDL ist nicht wichtig, da es eine austauschbare Highlevel-Bibliothek ist.

    In der Open Source Szene oder für kleine Projekte ist die SDL wichtig und gerade Spieleprogrammieranfänger profitieren von ihr deutlich.

    Klar kann man sie auch gegen eine eigenen Highlevel-Bibliothek austauschen und eigenes crossplattformfähiges Threading, Tastatur- und Joysticksteuerung usw. in seinen Code einbauen, aber warum sollte man sich diese Arbeit machen?

    Insofern ist die SDL eine super Bibliothek.
    Für 30 Mio € teure Großprojekte kann man natürlich auch alles selber in den Code einbauen, wenn es die gekaufte 3d Engine nicht schon von Haus aus mitbringt. Aber für Kleinstprojekte muß man sich so etwas ja nun wirklich nicht antun.

    Mit SFML existiert inzwischen auch eine massiv bessere Alternative, besonders für C++.

    Klar, die SFML ist ja auch in C++ geschrieben und nicht in C, wie die SDL.

    Aber daraus folgt auch, daß sie eigentlich nur für C++ Code sinnvoll ist, für alle anderen Spiele in anderen Programmiersprachen, also Python, Pascal usw. nimmt man dann doch besser die SDL weil diese eben in C geschrieben ist und die meisten Programmiersprachen eben spielend mit C Code klarkommen.
    Was im umgekehrten Fall, also C++ Code eben meist nicht der Fall ist.
    Da müssen dann von Phyton zu C nach C++ Zwischenwrapper bzw. Bindings her und die machen das ganze dann wieder langsam oder einfach nur fetter.

    Und mit Low-Level-Frameworks wie OpenGL muss man auch nicht unbedingt zu tun haben, wenn man Spiele programmiert. Das hängt sehr von den genauen Ansprüchen ab. Sobald man abstrahierende Frameworks verwendet, gibt es vieles direkt für C++, z.B. die Open-Source-Grafikbibliotheken Irrlicht und Ogre.

    Irrlicht und Ogre sind fertige 3d Grafikengines und nicht nur Grafikbibliotheken.
    Hättest du OSG gesagt, ja, dann würde es anders aussehen.



  • Burkhi schrieb:

    Engine siehe hier: https://secure.wikimedia.org/wikipedia/de/wiki/Gameengine

    Man beachte den Unterschied:
    Grafikengine != Gameengine

    Eine Grafikengine ist nur eine Teilmenge aus einer Gameengine.

    OGRE oder Irrlich sind z.B. keine Gameengines, sondern nur eine Grafikengines.
    Dafür ist Crystal Space eine Gameengine.

    Directx stellt die Funktionen zur Verfügung, um die Darstellungen, die die Engine generiert, auf dem Bildschirm anzuzeigen, mal so ganz grob gesagt.

    Das ist falsch.

    Diesen Teil macht nur Direct3d, eine Teilmenge von DirectX
    DirectX kümmert sich auch um die Soundausgabe und Eingabegeräte etc.



  • Der Wrapper schrieb:

    Klar kann man sie auch gegen eine eigenen Highlevel-Bibliothek austauschen und eigenes crossplattformfähiges Threading, Tastatur- und Joysticksteuerung usw. in seinen Code einbauen, aber warum sollte man sich diese Arbeit machen?

    Ich habe nicht von Selbstmachen gesprochen. Aber davon, dass SDL nicht essentiell für das Funktionieren einer Grafikanwendung ist, weil man in vielen Fällen gerade so gut eine Alternative nutzen kann.

    Der Wrapper schrieb:

    Aber daraus folgt auch, daß [SFML] eigentlich nur für C++ Code sinnvoll ist, für alle anderen Spiele in anderen Programmiersprachen, also Python, Pascal usw. nimmt man dann doch besser die SDL weil diese eben in C geschrieben ist und die meisten Programmiersprachen eben spielend mit C Code klarkommen.

    SFML hat ein C-Binding, also geht auch dieser Vorteil von SDL verloren. Damit bleibt nicht mehr viel übrig, das für SDL spricht.

    Übrigens hat SFML auch Bindings für .NET, Ruby, Python und D. Soweit ich weiss, gibt es auch Leute, die ein Java- und Haskell-Binding implementieren.

    Der Wrapper schrieb:

    Irrlicht und Ogre sind fertige 3d Grafikengines und nicht nur Grafikbibliotheken.

    Danke für den Hinweis. Den Begriff "Engine" habe ich noch nie gemocht... 🙂



  • Nexus schrieb:

    Der Wrapper schrieb:

    Klar kann man sie auch gegen eine eigenen Highlevel-Bibliothek austauschen und eigenes crossplattformfähiges Threading, Tastatur- und Joysticksteuerung usw. in seinen Code einbauen, aber warum sollte man sich diese Arbeit machen?

    Ich habe nicht von Selbstmachen gesprochen. Aber davon, dass SDL nicht essentiell für das Funktionieren einer Grafikanwendung ist, weil man in vielen Fällen gerade so gut eine Alternative nutzen kann.

    Das die SDL essentiell für das Funktionieren einer Grafikanwendung wäre, steht auch nirgends in meinem Posting.

    Der Wrapper schrieb:

    SFML hat ein C-Binding, also geht auch dieser Vorteil von SDL verloren. Damit bleibt nicht mehr viel übrig, das für SDL spricht.

    Übrigens hat SFML auch Bindings für .NET, Ruby, Python und D. Soweit ich weiss, gibt es auch Leute, die ein Java- und Haskell-Binding implementieren.

    Dann schau dir mal an, wie bei C++ Bibliotheken Bindings zu anderen Sprachen gemacht werden, also schau es dir low Level an, dann stößt du genau auf das, was ich geschrieben habe.

    Deswegen ist die SFML eben kein guter Ersatz für SDL, wenn man z.b. in C oder einer anderen nicht C++ Sprache programmiert.

    Der Wrapper schrieb:

    Irrlicht und Ogre sind fertige 3d Grafikengines und nicht nur Grafikbibliotheken.

    Danke für den Hinweis. Den Begriff "Engine" habe ich noch nie gemocht... :)[/quote]

    Das ändert aber nichts daran, daß Engine nunmal der Begriff ist für Engines.

    Grafikbibliotheken sind viel abstrakter, das kann alles sein, schon eine Lib, die dir hilft eine JPEG oder PNG Datei zu laden, ist eine Grafikbibliothek.
    Sie ist aber dann noch keine Grafikengine.



  • Der Wrapper schrieb:

    Das die SDL essentiell für das Funktionieren einer Grafikanwendung wäre, steht auch nirgends in meinem Posting.

    Okay, es steht etwas anders. Aber SDL ist aus dem gleichen Grund auch keine wichtige Bibliothek für die Spieleprogrammierung.

    "Wichtig" bedeutet für mich "sollte man kennen" bzw. "man hat einen grossen Vorteil davon, wenn man es kennt". Und das ist meiner Meinung nach bei SDL nicht gegeben, zumindest nicht mehr als bei anderen ähnlichen Bibliotheken.

    Der Wrapper schrieb:

    Dann schau dir mal an, wie bei C++ Bibliotheken Bindings zu anderen Sprachen gemacht werden, also schau es dir low Level an, dann stößt du genau auf das, was ich geschrieben habe.

    Du meinst, dass das Ganze durch ein Binding langsamer wird? Und ausgerechnet bei SDL bringst du das Geschwindigkeits-Argument?


Anmelden zum Antworten