Jammer-Thread
Re: Jammer-Thread
Das ist der Grund, warum OpenSource so kläglich scheitert. Es macht keinen Spaß es zu benutzen. Ohne Kommerzialisierungshintergrund fehlt der gesamte Schritt "was die kunden eigentlich wollen" in der Entwicklung. Die Leute checken das nicht: Benutzer wollen NICHT kompilieren und NICHT Fehler suchen und KEINE Einarbeitung. Ich will, dass es Funktioniert.
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Jammer-Thread
Das ist bei Java aber anders. Da sind es mMn eher die fehlenden Geschäftsmodelle. Das ist bei C++&Co. natürlich auch ein Hauptgrund warum das so lästig ist. http://java.dzone.com/articles/open-sou ... -need-more fand ich ganz spannend.
Die Qualität von Open Source Bibliotheken im Java Bereich ist wirklich sehr überzeugend. Die Einfachheit Bibliotheken einzubinden ist genial. In der Hinsicht haben es Java Projekte viel einfacher zugänglich zu sein. Ich nehme an, das liegt an der ganzen Infrastruktur, die mir bei Java in der Hinsicht schlichtweg viel besser erscheint. Maven hat Welten bewegt.
Die Qualität von Open Source Bibliotheken im Java Bereich ist wirklich sehr überzeugend. Die Einfachheit Bibliotheken einzubinden ist genial. In der Hinsicht haben es Java Projekte viel einfacher zugänglich zu sein. Ich nehme an, das liegt an der ganzen Infrastruktur, die mir bei Java in der Hinsicht schlichtweg viel besser erscheint. Maven hat Welten bewegt.
Re: Jammer-Thread
Der Visual Studio Debugger ist manchmal echt nutzlos. Wenn eine Hardware-Exception im crt-deinit fliegt (also z.B. ein Nullpointer Zugriff in einem Destruktor einer globalen Variablen) hält er nicht an sondern das Programm stirbt einfach weg. Ohne Meldung, ohne alles, einfach tot, exit code 0. Wenn man sich dann wundert warum nur die Hälfte der Destruktoren aller globalen Variablen aufgerufen wird kann man ne Weile suchen...
Blog: http://3d.benjamin-thaut.de Tolle mobile engine: http://www.projectanarchy.com
Re: Jammer-Thread
Bei Endnutzer-Produkten mag das sein (wobei da wiederum Distributoren wiederum das kommerzielle Rädchen im Getriebe sind), aber bei Entwickler-Bibliotheken sind die Benutzer gleichzeitig die Autoren. Es gab nur selten Fälle, wo ich keine einigermaßen gute Lib für eine Aufgabe gefunden habe. Und war das mal nicht der Fall, hat man eben seine Lib geschrieben oder die beste der schlechten Libs gefixt.DerAlbi hat geschrieben:Das ist der Grund, warum OpenSource so kläglich scheitert. Es macht keinen Spaß es zu benutzen. Ohne Kommerzialisierungshintergrund fehlt der gesamte Schritt "was die kunden eigentlich wollen" in der Entwicklung. Die Leute checken das nicht: Benutzer wollen NICHT kompilieren und NICHT Fehler suchen und KEINE Einarbeitung. Ich will, dass es Funktioniert.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Die Entwickler sind Autoren ihrer Programme, nicht der Bibliotheken, die sie einbinden. Wenn ich eine Bibliothek erstmal "fixen" und dafür halbwegs verstehen muss, lasse ich den Scheiß und lade mir die nächste. Und am Ende lande ich dann bei boost, wo sowieso schon alles drin ist und man keine Pfade einstellen muss sondern einfach einen Header #includet und draufloskompiliert, und danach ist das Programm fünfundzwanzig Mal größer als vorher, aber es läuft. Wenn ich mir Schamgefühl und Schluckreflex abgewöhnt habe, liefere ich das aus. Wenn nicht, betrachte ich das als Proof of Concept, kopiere die nützlichen Stellen raus, befreie sie von dem nutzlosen Ballast, und liefere es *dann* aus. Aber cmake-basierter bau-selber-stell-selber-ein-check-selber-deine-fixes-ein-Müll verrottet so oder so.antisteo hat geschrieben:Bei Endnutzer-Produkten mag das sein (wobei da wiederum Distributoren wiederum das kommerzielle Rädchen im Getriebe sind), aber bei Entwickler-Bibliotheken sind die Benutzer gleichzeitig die Autoren.DerAlbi hat geschrieben:Die Leute checken das nicht: Benutzer wollen NICHT kompilieren und NICHT Fehler suchen und KEINE Einarbeitung. Ich will, dass es Funktioniert.
Und was die Geschäftsmodelle angeht: Das ist eine schöne Erklärung, warum bestimmten kommerzielle aber kostenlose Projekte Open-Source-Projekten die Kunden abziehen. Geschäftsmodelle sorgen aber NICHT dafür, dass Bibliothken anwenderfreundlicher werden, sondern dafür, dass Bibliotheken mehr Geld aus Anwendern rausquetschen indem sie sie mit exzentrischen Abhängigkeiten zu Tode knuddeln wenn man sie einmal eingebunden hat. Da sehe ich keinen Mehrwert für die Menschheit.
END_RANT
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Jammer-Thread
Naja, irgend wovon müssen die Leute, die wirklich an den Bibliotheken arbeiten, schließlich leben, oder? Zumindest in der Jetztzeit in der eigentlich noch gilt, wer kein Geld verdient, soll auch nicht essen, kann ich mir kaum größere Projekte ohne finanzielle Unterstützung vorstellen. Neben Vendor-Lockins gibt es bei Open Source ja auch noch den Ansatz, alles so schwer benutzbar zu machen, dass man sich mindestens irgendein Buch, einen Experten oder eine Schulung kaufen muss. Da sind mir neue Geschäftsmodelle lieber, die irgendwie ohne solche Tricks auskommen.Krishty hat geschrieben:Geschäftsmodelle sorgen aber NICHT dafür, dass Bibliothken anwenderfreundlicher werden, sondern dafür, dass Bibliotheken mehr Geld aus Anwendern rausquetschen indem sie sie mit exzentrischen Abhängigkeiten zu Tode knuddeln wenn man sie einmal eingebunden hat. Da sehe ich keinen Mehrwert für die Menschheit.
Re: Jammer-Thread
Also meiner Meinung nach gehört schlicht alles was bei C++ mit kompilieren zu tun hat auf den Müll geschmissen und entsorgt. Ich meine, bei Java (ich habe echt nicht viel damit gemacht, aber meiner Erfahrung nach) lädst du dir eine Bibliothek als *.jar, kopierst sie in einen Standard Ordner, schreibst im Code irgendein "use Mylib" und die Sache läuft. Achja und es kompiliert in 2 Sekunden. SOWAS bräuchte C++.Chromanoid hat geschrieben:Das ist bei Java aber anders. Da sind es mMn eher die fehlenden Geschäftsmodelle. Das ist bei C++&Co. natürlich auch ein Hauptgrund warum das so lästig ist. http://java.dzone.com/articles/open-sou ... -need-more fand ich ganz spannend.
Die Qualität von Open Source Bibliotheken im Java Bereich ist wirklich sehr überzeugend. Die Einfachheit Bibliotheken einzubinden ist genial. In der Hinsicht haben es Java Projekte viel einfacher zugänglich zu sein. Ich nehme an, das liegt an der ganzen Infrastruktur, die mir bei Java in der Hinsicht schlichtweg viel besser erscheint. Maven hat Welten bewegt.
Ich meine, alleine dass man so viele Targets hat. Debug/Release, 32/64bit, in allen Kombinationen. Und das ist das mindeste. Und dann liefert irgendein dämliches Projekt wieder Build-Files aus, bei denen alle 4 dll's exakt gleich heißen. Das man heute irgendetwas anderes als OS-Code überhaupt noch dynamisch linkt ist doch schon grober Unfug (Sowohl meiner Festplatte als auch meiner DSL Leitung ist es egal, ob die exe jetzt 10 oder 100MB hat, alleine schon weil die Assets eh 4GB groß sind. Aber unerklärliche Crashs, weil ne falsche DLL geladen wurde, die nerven tierisch). Wieso kann man nicht, keine Ahnung, irgend so eine Art zwischen Code generieren, den der Compiler dann ganz am Ende für deine Einstellung (Debug/Release, 32/64bit) zu ner .exe linkt? Wieso müssen Header inkludiert werden, so dass die Compilierzeit exponentiell steigt? Wieso muss ich eine Bibliothek inkludieren und linken, und wieso muss ich ständig für beides Pfade irgendwo einstellen?
Mit Sicherheit gibt es jetzt tausend kleine Detail-Probleme, aber es stecken doch wirklich helle Köpfe hinter C++, die müssen doch im Stande sein, eine vernünftige Lösung zu finden. Es kann doch absolut niemand mit der C++-Welt in der wir leben zufrieden sein. Wenn ich nur überlege, wie viele Stunden Arbeitszeit täglich verschwendet werden, weil wieder irgendein Mist nicht kompiliert, das ist doch kein Zustand.
C++ als Sprache finde ich geil. Man kann so viele so tolle und so elegante Dinge damit machen. Alleine die Möglichkeit, derartig viele Dinge garantieren zu können, und der Compiler schon viele Fehler finden kann, wenn man vernünftig programmiert hat, sind einfach genial. Aber sobald man mit dem Schreiben fertig ist und man seine Anwendung haben möchte, ist C++ eine absolute Qual und ich habe noch keine Sprache gesehen, die dieses Problem schlechter löst. Und das ist doch einfach nur traurig.
nope, in diesem Thread werde ich niemals aufhören zu meckern :D Nicht bis all meine Forderungen erfüllt werden, und bis dahin werde ich stündlich meine Unschuldige CPU in einen SEGFAULT laufen lassen.Krishty hat geschrieben:END_RANT
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
-
- Establishment
- Beiträge: 426
- Registriert: 23.01.2013, 15:55
Re: Jammer-Thread
Ingesamt kann ich da eigentlich fast zu stimmen. :!:
Aber auch zum Beispiel "sizeof(T*)" ist unterschiedlich.
Ich glaube übrigens, das statisches Linken häufig sogar die Größe insgesamt deutlich reduzieren könnte.
Durch Optimierungen, also zum Beispiel auch das Entfernen von ungenutzten Funktionen, wäre die große Exe meistens wahrscheinlich viel kleiner als die Summe aller Dlls. LGPL ist da häufig noch ein Problem.
So eine Art Zwischencode hast du bei LLVM/Clang. Debug/Release sollte da schon gehen, aber mit plattformübergreifenden Zwischencode wird es schwierig. Dafür gibt es eine einfache traurige Antwort: Präprozessorden der Compiler dann ganz am Ende für deine Einstellung (Debug/Release, 32/64bit) zu ner .exe linkt?
Aber auch zum Beispiel "sizeof(T*)" ist unterschiedlich.
Ich glaube übrigens, das statisches Linken häufig sogar die Größe insgesamt deutlich reduzieren könnte.
Durch Optimierungen, also zum Beispiel auch das Entfernen von ungenutzten Funktionen, wäre die große Exe meistens wahrscheinlich viel kleiner als die Summe aller Dlls. LGPL ist da häufig noch ein Problem.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Visual C++ mit Link-time Code Generation erzeugt ebenfalls eine Zwischenrepräsentation, die dann beim Linken zu Maschinenbefehlen konvertiert (und optimiert) wird. Das ist der Grund, warum die temporären Dateien mit LTCG häufig viele hundert Megabytes groß sind. Das ist dann aber natürlich Closed Source und nicht so dynamisch wie LLVM-Assembly.
Man schafft es auch leider nicht, alles zwischen 32- und 64-Bit zu abstrahieren. Das Exception Handling ist z.B. unter Windows komplett anders. Und es gibt in CPUs nunmal noch andere Arten von Exception Handling als das von C++.
Man schafft es auch leider nicht, alles zwischen 32- und 64-Bit zu abstrahieren. Das Exception Handling ist z.B. unter Windows komplett anders. Und es gibt in CPUs nunmal noch andere Arten von Exception Handling als das von C++.
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Jammer-Thread
Naja, selbst runterladen muss man das eigentlich auch nicht mehr. Nur um mal zu zeigen wie bequem das geht:Jonathan hat geschrieben:Ich meine, bei Java (ich habe echt nicht viel damit gemacht, aber meiner Erfahrung nach) lädst du dir eine Bibliothek als *.jar, kopierst sie in einen Standard Ordner, schreibst im Code irgendein "use Mylib" und die Sache läuft. Achja und es kompiliert in 2 Sekunden. SOWAS bräuchte C++.
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Jammer-Thread
Ich versteh ehrlich gesagt nicht, was alle am Buildprozess von C++ immer auszusetzen finden. Ja, er ist komplexer als das, was man in den sog. "modernen" Sprachen antrifft. Aber das ist doch gerade, was die Sprache C++ auch ausmacht. Mit der Komplexität kommt ein wesentlich mächtigeres Werkzeug. Die Flexibilität, die der "C++ Buildprozess" (der Standard gibt dazu btw. nichts vor) einem bietet, finde ich bei keiner anderen Sprache, zumindest keiner mit einem simpleren Buildprozess. "With great power comes great responsibility" und so...
-
- Establishment
- Beiträge: 426
- Registriert: 23.01.2013, 15:55
Re: Jammer-Thread
Das ist sehr einfach: Ich brauche in C++ Stunden eine Lib einzubinden. In C# geht es in 1er Minute.Ich versteh ehrlich gesagt nicht, was alle am Buildprozess von C++ immer auszusetzen finden.
Um mein C++ Projekt zu kompilieren brauche ich 3 Minuten, um mein C# Projekt zu kompilieren sind es 3 Sekunden.
Das Problem ist wahrscheinlich gerade auch, dass "der Standard" nichts dazu sagt. C++ selbst mag nicht für alles all zu viel dafür können, aber die Sprache ist nun mal der Leidtragende, bzw. der Programmierer, der in der Sprache entwickelt. Meiner Meinung nach fehlt einfach ein einheitliches Buildsystem für alle Compiler. Und Module.
Ich bin übrigens auch der Meinung, dass C++ zu komplex ist. Ich behaupte, es wäre möglich eine Sprache zu konstruieren, die die selbe oder höhere Mächtigkeit besitzt, allerdings weniger gesprächig oder unlogisch ist. Tatsächlich gibt es viele Ansätze in diese Richtung, leider meistens noch unreif oder wieder mit gravierenden Einschränkungen(zb. Garbage Collector) die aber nichts mit den Vereinfachungen zu tun haben, die ich mir wünschen würde.
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Jammer-Thread
Was verstehst Du hier unter Flexibilität? Komplexität hat nicht unbedingt was mit Mächtigkeit zu tun. Ein Buildprozess ist doch viel mehr als nur ein ausführbares/einbindbares Artefakt zu erzeugen: Reproduzierbarkeit, Dependency Management, Tests, Ressourcenverarbeitung, Distributionserzeugung, Releasevorgang und Versionskontrolle, Codeanalyse usw. Ich baue fast gar nichts mit C++-Toolchains, aber ich glaube, zumindest an der Stelle kann sich C++ eine Scheibe vom Java-Umfeld abschneiden.dot hat geschrieben:Ich versteh ehrlich gesagt nicht, was alle am Buildprozess von C++ immer auszusetzen finden. Ja, er ist komplexer als das, was man in den sog. "modernen" Sprachen antrifft. Aber das ist doch gerade, was die Sprache C++ auch ausmacht. Mit der Komplexität kommt ein wesentlich mächtigeres Werkzeug. Die Flexibilität, die der "C++ Buildprozess" (der Standard gibt dazu btw. nichts vor) einem bietet, finde ich bei keiner anderen Sprache, zumindest keiner mit einem simpleren Buildprozess. "With great power comes great responsibility" und so...
Re: Jammer-Thread
Es ist nicht die Sprache, es ist auch nicht das Build-System.
Es sind die Leute dahinter, die es absichtlich falsch anwenden, oder Unerfahrene, oder die, die es unbedingt besser wissen.
Kein Verständnis, weil:
1x für Visual Studio egal-wie-alt-oder-neu und 1x für das Mac-System.
1x für x64, 1x für Alteingesessene x86er
1x DLL, 1x Statisch und Mini-Bibliotheken auch gleich als include-cpp auf Definition
und leicht umzusetzen.
So funktionieren mMn muss-Geld-bringen oder gute Bibliotheken.
Da interessiert der Hauptmarkt und nicht das xy-Sonderproblem.
Es sind die Leute dahinter, die es absichtlich falsch anwenden, oder Unerfahrene, oder die, die es unbedingt besser wissen.
Kein Verständnis, weil:
1x für Visual Studio egal-wie-alt-oder-neu und 1x für das Mac-System.
1x für x64, 1x für Alteingesessene x86er
1x DLL, 1x Statisch und Mini-Bibliotheken auch gleich als include-cpp auf Definition
und leicht umzusetzen.
So funktionieren mMn muss-Geld-bringen oder gute Bibliotheken.
Da interessiert der Hauptmarkt und nicht das xy-Sonderproblem.
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Jammer-Thread
Sprachen und Build-Systeme werden für Menschen gemacht. Wenn Menschen an Software scheitern, dann liegt das zu einem großen Teil auch an der Software, weil sie schlichtweg ihr Ziel verfehlt.TDK hat geschrieben:Es ist nicht die Sprache, es ist auch nicht das Build-System. Es sind die Leute dahinter, die es absichtlich falsch anwenden, oder Unerfahrene, oder die, die es unbedingt besser wissen.
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Jammer-Thread
Ich benutze C++ auf Embedded-Geräten und hasse den berg von Optionen, die Komplexität des Builds da etc. .Spiele Programmierer hat geschrieben:Das ist sehr einfach: Ich brauche in C++ Stunden eine Lib einzubinden. In C# geht es in 1er Minute.Ich versteh ehrlich gesagt nicht, was alle am Buildprozess von C++ immer auszusetzen finden.
Um mein C++ Projekt zu kompilieren brauche ich 3 Minuten, um mein C# Projekt zu kompilieren sind es 3 Sekunden.
Das Problem ist wahrscheinlich gerade auch, dass "der Standard" nichts dazu sagt. C++ selbst mag nicht für alles all zu viel dafür können, aber die Sprache ist nun mal der Leidtragende, bzw. der Programmierer, der in der Sprache entwickelt. Meiner Meinung nach fehlt einfach ein einheitliches Buildsystem für alle Compiler. Und Module.
Ich bin übrigens auch der Meinung, dass C++ zu komplex ist. Ich behaupte, es wäre möglich eine Sprache zu konstruieren, die die selbe oder höhere Mächtigkeit besitzt, allerdings weniger gesprächig oder unlogisch ist. Tatsächlich gibt es viele Ansätze in diese Richtung, leider meistens noch unreif oder wieder mit gravierenden Einschränkungen(zb. Garbage Collector) die aber nichts mit den Vereinfachungen zu tun haben, die ich mir wünschen würde.
Allerdings spiel gerade auf dem Bereich C++ dort dann auch seine Stärken aus: Immerhin kann man mit dem komplexen Build Probleme umgehen, die ein kaputtes BSP ausgelöst hat.
Für normale Anwendungen wäre ein normales "Maven" für C++ aber toll :).
Gruß Kimmi
- Schrompf
- Moderator
- Beiträge: 5047
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Assimp - Boolsche Operationen für den IFC-Loader. Wir ähm... nähern uns dem Endergebnis.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Schrompf
- Moderator
- Beiträge: 5047
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Hab mir mal so ne Art Explosionsdarstellung gebastelt, indem ich einfach den Mesh vor der Clipping-Operation neben das Ergebnis kopiert habe. Das ergibt eine Kaskade von Zwischenergebnissen, bei denen man genau erkennen kann, ab wo der Wahnsinn einsetzt. Und siehe: das Problem entsteht an der Stelle, wo irgendwelche Punkte, Kanten oder Flächen ganz knapp auf den jeweiligen Schnittkanten oder Schnittebenen liegen. My personal descend into madness:
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Erinnert mich an meine CAD-Zeiten :) Viel Spaß, das wird die Hölle. Ich persönlich attackiere sowas nur noch mit verlustfreier Integermathematik auf eng begrenzten Räumen, aber das ist noch viel tieferer Abstieg in den Wahnsinn.
- Schrompf
- Moderator
- Beiträge: 5047
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Und *eigentlich* gäb's das auch schon fertig und von Leuten, die mehr Ahnung als ich haben. Nur darf ich das der Lizenz wegen nicht benutzen. Und die schon integrierte ClipperLib arbeitet zwar mit Integern und sehr stabil, aber arbeitet nur in 2D und scheitert demzufolge an Polygonen, die senkrecht auf dem Bounding Polygon stehen.
Alles Mist :-(
Alles Mist :-(
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Sternmull
- Establishment
- Beiträge: 264
- Registriert: 27.04.2007, 00:30
- Echter Name: Til
- Wohnort: Dresden
Re: Jammer-Thread
Vor rund 10 Jahren hab ich mich auch mal an CSG-Operationen versucht. Das hat im Grunde auch super funktioniert... bis eben auf die Stellen an denen die begrenzte Präzision der Gleitkommazahlen dazu geführt hat das es das eben nicht mehr tut :D Damals hab ich das halbherzig damit bekämpft das ich solche Situationen festgestellt hab und die Operanden dann minimalst zufällig verschoben/gedreht hab bis es erfolgreich durchlief. Letzten Endes hab ich das Projekt dann aber verworfen weil ich keinen praktikablen Weg zu einer vernünftigen Lösung gefunden hab.
Aber mit dem Problem stehst du nicht allein da. Die guten alten Quake- und Unreal-Leveleditoren hatten in vielen Situationen auch immer ihre Probleme wenn sie die boolschen Operationen über ihre BSP-Trees auszuführten. 3D-Max hat das auch Ewigkeiten nicht gelöst bekommen und hat am Ende eine externe Bibliothek eingekauft. Blender verwendet "carve", aber die steht unter der GPL und hat damit wohl das von dir erwähnte Lizenz-Problem.
Aber mit dem Problem stehst du nicht allein da. Die guten alten Quake- und Unreal-Leveleditoren hatten in vielen Situationen auch immer ihre Probleme wenn sie die boolschen Operationen über ihre BSP-Trees auszuführten. 3D-Max hat das auch Ewigkeiten nicht gelöst bekommen und hat am Ende eine externe Bibliothek eingekauft. Blender verwendet "carve", aber die steht unter der GPL und hat damit wohl das von dir erwähnte Lizenz-Problem.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Ich habe die gesamte Visual-C++-Runtime in meinem Projekt überflüssig gemacht. Bis auf pow(), das habe ich noch nicht selber implementiert. Und natürlich ist das der komplizierteste Brocken Mathematik, den man in der Standardbibliothek findet.
Un’ nu’? Eine Woche hinsetzen, eigenes pow() implementieren, und den Sieg feiern? Hätte ich früher sofort gemacht. Aber ich wollte mich eigentlich bessern und produktiver werden. Also mit anderen Sachen weitermachen und die CRT drinlassen, nur für die eine Referenz? Wäre das Kapitulation oder Gnade? :(
Un’ nu’? Eine Woche hinsetzen, eigenes pow() implementieren, und den Sieg feiern? Hätte ich früher sofort gemacht. Aber ich wollte mich eigentlich bessern und produktiver werden. Also mit anderen Sachen weitermachen und die CRT drinlassen, nur für die eine Referenz? Wäre das Kapitulation oder Gnade? :(
- Schrompf
- Moderator
- Beiträge: 5047
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Kann man das Problem nicht googeln? Im alten Quake2-Code nachschauen, wie die das implementiert haben?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Doch, es gibt eine fertige Implementierung auf Apple Open Source. Nur bin ich nicht unbedingt die Art Mensch, die das rüberkopiert und damit zufrieden ist (ganz ab von der Lizenz). Und das ist auch nicht gerade wenig Code, und kein einfacher, also viel Platz für Probleme.
Wie gigantisch komplex das Ding ist, zeigt die statische CRT: pow() ist in der 64-Bit-Version 5,7 KiB groß. MEHR ALS EINE GANZE MOTHERFUCKING SPEICHERKACHEL AN BEFEHLEN. Die Konstanten für die Polynome noch NICHT mitgezählt. Damit ist es die fünftgrößte Funktion in meiner ganzen Exe; nur ein paar Bytes hinter der Enumeration aller Joysticks und Gamepads! Ob ich mir sowas wirklich aufbürden soll?
Als ich mein eigenes cos() geschrieben habe, hatte Visual C++ schon ein völlig nonsensiges jmp __ImageBase eingefügt. Falls jemand nicht versteht, was das bedeutet: Ich auch nicht. Das springt einfach zum Anfang der EXE-Datei, interpretiert ihn als Maschinentext, und crasht damit ziemlich schnell. WTF. Das ist kein gutes Omen.
Wie gigantisch komplex das Ding ist, zeigt die statische CRT: pow() ist in der 64-Bit-Version 5,7 KiB groß. MEHR ALS EINE GANZE MOTHERFUCKING SPEICHERKACHEL AN BEFEHLEN. Die Konstanten für die Polynome noch NICHT mitgezählt. Damit ist es die fünftgrößte Funktion in meiner ganzen Exe; nur ein paar Bytes hinter der Enumeration aller Joysticks und Gamepads! Ob ich mir sowas wirklich aufbürden soll?
Als ich mein eigenes cos() geschrieben habe, hatte Visual C++ schon ein völlig nonsensiges jmp __ImageBase eingefügt. Falls jemand nicht versteht, was das bedeutet: Ich auch nicht. Das springt einfach zum Anfang der EXE-Datei, interpretiert ihn als Maschinentext, und crasht damit ziemlich schnell. WTF. Das ist kein gutes Omen.
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Jammer-Thread
Meine Lieblingsquelle für Nachrichten aus der MMO-Gaming-Szene ist eingestellt worden :( das weiß ich zwar schon länger, aber eben habe ich mal wieder aus Gewohnheit auf das Lesezeichen geklickt...
http://massively.joystiq.com
http://massively.joystiq.com
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Mein Programm verbraucht mit statisch eingebundener CRT 20–50 % mehr Speicher als mit CRT-DLL. Wtf, schon wieder. Dabei benutze ich komplett eigene Speicherverwaltung. Eine ganze Woche lang habe ich den Arbeitssatz optimiert, bis auf einzelne Allokationen, und dann sowas. Es ist doch wirklich zum kotzen.
Re: Jammer-Thread
Ich musste gerade auch die Visual-C++-Runtime doch wieder in eine DLL einbinden, weil diese anscheinend für v-tables benötigt werden. Irgendwie schade, zumal die DLL per Hook in jeden Prozess geladen wird.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
warning: unreferenced label 'https'
Denkt mal drüber nach m[
Denkt mal drüber nach m[
- xq
- Establishment
- Beiträge: 1589
- Registriert: 07.10.2012, 14:56
- Alter Benutzername: MasterQ32
- Echter Name: Felix Queißner
- Wohnort: Stuttgart & Region
- Kontaktdaten:
Re: Jammer-Thread
@^ Find ich schön :)
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…
Programmiert viel in Zig und nervt Leute damit.
Programmiert viel in Zig und nervt Leute damit.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Copy-Paste ist kaputt. Systemweit. Ich kann kopieren, aber nirgends mehr irgendwas einfügen. Drag'n'Drop mit STRG klappt noch. WTF WTF WTF
Ich darf jetzt aaaaalles schließen und speichern (inklusive angefangener Blog-Posts) und neustarten und es in 15 min nochmal versuchen. WIE KANN SOWAS KAPUTTGEHEN
Ich darf jetzt aaaaalles schließen und speichern (inklusive angefangener Blog-Posts) und neustarten und es in 15 min nochmal versuchen. WIE KANN SOWAS KAPUTTGEHEN