Doom 3 source nun open-source



  • Cpp_Junky schrieb:

    _matze schrieb:

    ...
    Außerdem sind da jede Menge solcher komischen Sternchen im Code. Sind das Fußnoten? Lässt sich das überhaupt von einem C++-Compiler übersetzen? 😃

    Das sind Multiplikatoren zur Leistungssteigerung!

    😃



  • Geilo! Endlich ist es soweit.


  • Mod

    schaut ganz ok aus fuer 10jahre alten code. mit dem projekt bekomme ich es nicht ganz durchgebaut, will jetzt aber nicht die ganze mittagspause fuer opfern 🙂



  • Naja, er prüft schon mal auf Gleichheit von float, nimmt schon mal memset(data,0,sizeof data) statt sofort zu initialisieren, nutzt gerne lokale static Variablen und (modul)globale, was wohl kaum einem evtl. zukünftigen Multithreading dienen dürfte, verwendet gar linked lists und scheint auch ein großer Freund von Casts aller Art zu sein.


  • Mod

    Wutz schrieb:

    Naja, er prüft schon mal auf Gleichheit von float

    kann absicht sein

    nimmt schon mal memset(data,0,sizeof data) statt sofort zu initialisieren

    kann auch absicht sein (z.b. schneller)

    wenn du mehr als nur anprangern moechtest, muesstest du schon den source quoten, sonst haben wir beiden nur stammtischgeschwafel 😉

    nutzt gerne lokale static Variablen und (modul)globale, was wohl kaum einem evtl. zukünftigen Multithreading dienen dürfte

    zum einen gab es ziemlich kein multithreading in spielen und als es dann da war (pentium4D), auch nur dualcore, was man effizient mit einem thread pro system auslasten kann, da selbst bei singlethreading die GPU das limitierende war.

    verwendet gar linked lists

    solange es den zweck erfuellt, reicht es doch. in der quake 3 engine geht er durch alle lichter pro objekt durch um rauszufinden welche genutzt werden soll.
    alle anderen fangen bei sowas an grossartige strukturen zu benutzen um die query time so niedrig wie moeglich zu halten und O(log n)-blabla und carmack macht es auf die simpelste art wie man es braucht.
    auf der anderen seite gab es schon vor dem quellcode release von der Q3 engine massig 'clones' die eigentlich nur das rendering nachbauten und viele haben sich einen keks gefreut wenn sie besser als 50% der quake3a performance erreicht haben.

    carmack coded halt sehr minimalistisch, erstmal muss es gehen und wenn es geht, arbeitet man weiter. wenn es dann mal probleme gibt, kann man es immer noch verbessern.
    auf der anderen seite siehst du dass er so ziemlich was zustande bekommt. manche haben engine abteilungen mit 30leuten, dazu noch game teams und dazu nutzen die allerlei libraries. schau dir die credits von doom 3 oder quake 3 an:
    http://www.mobygames.com/game/windows/doom_/credits
    http://www.mobygames.com/game/windows/quake-iii-arena/credits
    da sind 6programmierer die engine, game, tools, build pipeline erstellen.

    du findestes auch mal comments im source wo sie schon bessere dinge haben, aber aus stabilitaetsgruenden nicht einschalten.

    und scheint auch ein großer Freund von Casts aller Art zu sein.

    c engine, c coder, playstation 2 zeit, 99% der spiele waren in c geschrieben, questions? 😃

    ich glaube zwar nicht dass es soviel besser bei rage aussieht, aber in den tweets hat carmack schon einiges an entwicklung durchblicken lassen
    https://twitter.com/#!/wil/statuses/76388496037785600
    https://twitter.com/#!/ID_AA_Carmack/status/137192077091024896
    https://twitter.com/#!/ID_AA_Carmack/status/119254000431415296



  • Doom3 ist ein Hammergame, Bugs nicht existent, sehr tolle Performance etc
    Das macht ihr C++ deutlich schöner als das ganze hochgestylte C++, in dem eh nur Mist verzapft wird.
    Im Übrigen finde ich den Style eh nett, Spiele sind meistens etwas obskurr designt, da man mit dynamische Allokationen etc spart.



  • ich hab noch nicht reingeguckt, hoffe nur dass es nicht so ein buch mit 7 siegeln wird wie der quake3 source... 🙄



  • rapso schrieb:

    ksi schrieb:

    Wie kann es beim Stil überhaupt eine unterscheidung in gut und schlecht geben? Solange der Stil konsequent durchgezogen wird, kann der Stil nicht allzu schlecht sein.

    geb ich (und die meisten paper die sich damit beschaeftigen) sehr recht. fuer vielzuviele ist es eine art religion geworden, dabei sollte es nur so einheitlich wie moeglich sein damit man im team wenig zeit zum verstehen von syntax verwendet und dafuer mehr fuer den eigentlichen programmfluss. ich passe mich immer dem team an, egal wie ungewohnt mir eine formatierung vorkommt, aber ich habe auch miterlebt, dass manche wie kleine kinder meinten sie wuerden eher ihre kuendigung akzeptieren als ihren stil zu aendern.

    es gibt natuerlich, je nach sprache, eigenheiten bei der der stil helfen kann fehler zu vermeiden, aber ob jemand irgendwohin spaces oder tabs, tab2 oder tab4, klammern hier oder da hinsetzt ist nur eine alberne diskusion.

    Ähm, du redest jetzt plötzlich von der Formatierung des Codes, das hat für mich relativ wenig mit Stil zu tun. Gut, wenn ihr beide nur Formatierung als Stil anseht, ist es wirklich egal. Aber zum Stil gehört auch sowas wie keine globalen Variablen zu verwenden und die sprachtypischen Idiome usw. zu verwenden. Und wenn man konsequent globale Variablen verwendet, wird es immer noch nicht gut.

    PS. Du hast dort http://www.c-plusplus.net/forum/p2149426#2149426 den falschen Thread verlinkt. Solltest du mal ändern, vor jemand im Shader Thread über Doom redet.



  • Ethon schrieb:

    Doom3 ist ein Hammergame, Bugs nicht existent, sehr tolle Performance etc
    Das macht ihr C++ deutlich schöner als das ganze hochgestylte C++, in dem eh nur Mist verzapft wird.
    Im Übrigen finde ich den Style eh nett, Spiele sind meistens etwas obskurr designt, da man mit dynamische Allokationen etc spart.

    👍
    So programmieren halt Leute die es wirklich drauf haben. Ich mag auch nicht die Pseudoentwickler die glauben nur weil sie studiert haben und sich an alle modernen C++ Regeln halten, dass sie Qualität abliefern.

    Carmack hat sich das Studium nach 2 Semestern geschenkt und das Resultat seiner Entwicklung macht ihm zum Besten was es auf diesem Planeten im Bereich Gamedevelopment gibt. Da der Code keine großen Bugs hatte, sehr performant war und sehr sehr viel Geld eingebracht hat, sollten sich alle "ich habe aber 55 effektive C++ Regeln drauf" Typen mal von John eine dicke Scheibe abschneiden.

    So coden absolute Genies und nicht wie es sehr viele hier immer runter eiern, in dem sie 2-3 Fachbüchern naiv glauben schenken.



  • Schon mal überlegt, warum Carmack seine Gameengines immer wieder komplett neu entwickeln muss? Die Codequalität ist einfach zu schlecht für größere Erweiterungen.



  • Code-Hacker, die das echte Leben kennen vs. akademische Kellertheoretiker ist vielleicht etwas zu schwarz-weiss gedacht. Codes mit unnötig tiefen Vererbungshierarchien, komplizierter new / delete -Logik oder dauernden Überladungen der Big Three sind schon ein Hinweis, dass gewisse Ratschläge angebracht gewesen wären (jetzt allgemein gesprochen).

    Gefährlich sind auf der anderen Seite Leute, die auf maximale Generizität à la Alexandrescu aus sind oder überall nur noch shared_ptr einsetzen. Doch im Mass eingesetzt werden in guten C++-Büchern mächtige Techniken und Werkzeuge vermittelt, welche die Entwicklungszeit durchaus verkürzen können. Und auf vieles davon kommt man nicht so schnell von selbst, auch als Genie nicht.



  • schoklad schrieb:

    Schon mal überlegt, warum Carmack seine Gameengines immer wieder komplett neu entwickeln muss? Die Codequalität ist einfach zu schlecht für größere Erweiterungen.

    Mal im ernst, kaum eine Codebasis hält ein paar Jahre lang, weil sich einfach die Technologien zu schnell ändern. Alten OOP Code noch zu erweitern oder wiederzuverwenden ist ein graus. Noch so ein Graus ist es sich durch dutzend von generalisierten Klassen zu wurschteln genau wie man Datenbank nicht zu sehr Normalisieren und so die Menschlesbarkeit vernachlässigen sollte.

    Alle die immer auf das "perfekte Design" aussind werden mit ihrer Arbeit kaum fertig, der Code ist einfach nur noch anstrengend und es wird trozdem kaum was wiederverwendet. So ist jedenfalls meine Erfahrung aus diversen Projekten.


Anmelden zum Antworten