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



  • Du hast Recht, aber std::string ist auch nicht der Weisheit letzter Schluss. Zum Beispiel ist das Interface der Klasse ziemlich zerbloatet, viele Funktionen wären besser frei. Und für spezielle Anforderungen gibt es oft geeignetere Alternativen (und seien das z.B. nur Iteratoren-Paare), doch für den Allgemeingebrauch ist std::string kein schlechter Kompromiss.



  • In der Welt der absoluten Performance verwendet man wohl sowieso keine Strings, aber Gut. Niemand hindert dich in C++ mit Character Buffern am Stack zu arbeiten, im Gegenteil, C++ bietet dir alle Mittel um auch sowas wunderbar und ohne Overhead zu kapseln. Wenn die Performance es wirklich verlangt (was sehr selten der Fall sein wird) dann macht man das eben. Und auch wenn du einfach direkt mit rohen char-Pointern um dich wirfst wird das ganze Programm nicht automatisch C...

    RHBaum schrieb:

    Und wo war das Kopieren da schonmal ein tatsächliches Performanceproblem in einem richtigen Program das du geschrieben hast?

    Und ja, ich selber hab auch ab und an Anwendungsfaelle in der Art.
    Beispielsweisse parsen von Datenbanken, im XML Format. die XML dateien sind oft +100MByte gross. Uebelst viele Referenzierungen drin. Geparst wird mit mehrstufigen eventparser ... Sax (xerces) und dann eigene Stufen drüber.
    Bei einem Plugin z.b. war die letzte Stufe eine Komfortsufe auf eine Qt Schnittstelle. ParseZeiten von 5 min bei einigen files.
    Aendern des internen Datentyps der qt Stufe von QString auf QByteArray und vermeiden der implizieten konvertierung auf utf16, druckte die Parsezeiten auf 30sek.
    Das sind Dinge die der Anwender definitiv merkt 🙂
    Und richtig kritisch iss das ned, sondern nur nervig 🙂 wer 100MB + parsen will, braucht eigentlich geduld.

    Ok, mal abgesehen davon dass man über den Sinn von 100MB großen XML Dateien vermutlich streiten kann (wer editiert 100MB große Textfiles!?) hast du also ein extremes Beispiel gefunden wo der naive Ansatz ein Problem ist und gleichzeitig gezeigt dass es einen besseren Ansatz gibt mit dem es dann doch wieder kein Problem ist...

    RHBaum schrieb:

    Denk mal im Bereich der GrafikProgrammierung, Spieleentwicklung, werden Strings ned so das Problem sein, aber dafuer texturpuffer etc. und da wird man sowas noch krasser merken ....

    Ich hatte da noch nie Probleme mit der Performance von C++. Und selbst wenn: Mit C hätt ich natürlich genau die gleichen Probleme...



  • Die Buecher sollen verkauft werden ... schreib mal als Ausgangsvorraussetzung in dein DirectX - "Ich programmiere den super Shooter in 2 Tagen" Buch, das die Leute "Modern C++ Design" gelesen und verstanden haben sollten, rein.
    Was glaubst wer das Buch kauft und was fuer rezensionen da kriegst. Ich waer echt gespannt drauf und ja, wuerd es mir vielleicht sogar kaufen 🙂

    Naja ich bin ja kein Autor, ich überlasse das schreiben lieber andere. Außerdem bin ich noch am lernen und das würde den anderen auch nicht weiterhelfen wenn ich jetzt anfange ein Buch über die 3D Spieleprogrammierung zu schreiben das noch dazu für erweiterung im code offen und für veränderungen geschlossen ist. Mir geht es ums design pattern. Denn man will ja mal eine anderen Hintergrund oder so und da ist C wirklich nicht die Ideale sprache. Für den Anfang möchte ich mal Pong und Space Invaders programmieren und danach wenn ich besser programmieren kann ein 2D Adventure aller Monkey Island schreiben da wird, glaub ich schon mehr mit design pattern gearbeitet. Korrigiert mich wenn ich falsch liege.

    Gruß Blacky



  • Gerne korrigiere ich dich:
    ... ein 2D Adventure à la Monkey Island ...
    😉



  • Danke für die Korrektur mein Französisch ist nicht grad das beste 😉 . Kein wunder hab es ja nie gelernt. :D. Vielleicht werde ich mal ein Buch schreiben über dieses Thema. Wird allerdings noch ein paar Jahre dauern bis ich wirklich gut C++ behersche. Bis dahin werde ich versuchen die Sprache zu verstehen.

    Mfg. Blacky



  • da wird, glaub ich schon mehr mit design pattern gearbeitet.

    Glaub nicht, das man bei komplexeren Spielen, mit etwas höherer Modularitaet, auf sowas verzichten wird. Die Anforderungen sind doch die selben wie in anderen Bereichen.
    Problem, denk ich,ist eher, was man unter "Spiele-Entwicklung" versteht.
    Die meisten werden sofort an ein buntes Effekt-Feuerwerk denken, was die Schmerzen beim Kauf der Grafikkarte aus der 500 EUR Klasse etwas in Vergessenheit geraten laesst 🙂 Der Logik-Teil verkuemmert dann meist auf simple Zuarbeit fuer die Grafik-Karte.

    BTW: Designpatterns finden auch in C Anwendung 🙂 Aber mit C++ ist es definitiv "schöner".
    Und COM, und damit auch DirectX, hat ein zutiefst Object-Orientiertes Design. Trotzdem ist es Sprachtechnisch pures C, also die Schnittstellen. Die Implementierungen sieht man ja nicht.

    Wenn Du eher gemütliche 2D Spiele mit Komplexer Logic bauen magst, bist eher mit Literatur aus anderen Bereichen besser bedient. Design patterns sind generell ned schlecht, auch Buecher speziell ueber Algorithmik (Sortieralgo's, Baeume, etc) helfen da mehr. Und das sind Themen, die hab ich in Buecher über Spieleentwicklung eher selten gesehen. Naja, hab auch ned so viele ^^

    wer editiert 100MB große Textfiles!?

    Kein Mensch!
    Aber Maschinen können sich stundenlang damit beschaeftigen 🙂
    Und ganze Firmen verdienen Viel Geld um ganze Heerscharen von Angestellten zu beschaeftigen, die Sich nur um den "Generator" kümmern, der aus dem Inhalt einer tollen Datenbank möglichst menschlich unleserlichen pseudo-Code generiert.
    Im konkreten Fall gehts sogar um einen Standard.
    http://de.wikipedia.org/wiki/Field_Bus_Exchange_Format

    Ciao ...



  • Design Pattern in C? Ich frag mich wie man in C erstens Objekte anlegen, abstrahiehren und Methoden überschreiben kann? Ich lass mich gerne eines besseren belehren.



  • BlackFalcon schrieb:

    Design Pattern in C? Ich frag mich wie man in C erstens Objekte anlegen, abstrahiehren und Methoden überschreiben kann? Ich lass mich gerne eines besseren belehren.

    Warum sollte man das nicht können? OOP hat nichts damit zu tun ob eine Sprache das Schlüsselwort class kennt oder nicht. Du kannst auch in Assembler objektorientiert Programmieren wenn du lustig bist...



  • aso auf typedef struct hab ich ja völlig vergessen 😃 . Tja hab schon lange kein C mehr Programmiert. Aber wie schauts mit dem Komfortablen Programmieren aus?

    Gruß Blacky



  • BlackFalcon schrieb:

    Aber wie schauts mit dem Komfortablen Programmieren aus?

    Darum gehts ja nicht, möglich ist es. Es gibt Leute die schwören drauf, auch bekannt als "C-Hacker-Syndrom" 😉


Anmelden zum Antworten