SoftPixel Engine (neu: SVN Repository & CMake files)



  • Ich schreibe im Moment für ein eigenes Projekt einen Converter welcher eine Source .BSP Map in mein eigenes relativ einfaches Model Format umwandelt. In diesem Model Format werden einfach alle Triangles mit Vertex- und Normaldaten gespeichert, was das Rendern nacher relativ einfach macht. Die reine Map-Geometrie funktioniert schon ganz gut, arbeite Momentan an den Displacements (Displacements sind die Meshes für nicht-planare Böden/Felsen etc.). Ein Teil der Displacements wird richtig dargestellt, einige jedoch noch nicht. Ich weis auch schon woran das liegt habe aber im Moment keine Zeit das zu fixen.

    Wenn du interressiert am Sourcecode bist kann ich dir den gerne mal schicken.

    Achja und zum Projekt: echt nicht schlecht 🙂

    /Edit: Displacements fixed. Sind echt umständlich abgelegt im BSP Format...



  • Klar bin ich an dem Source Code interessiert. Das BSP Format ist schon interessant, aber ich habe im Moment keine Zeit den Loader komplett selbst zu schreiben.
    Daher würde ich da gerne mal rein gucken.
    Kannst's mir ja an meine private EMail schick:
    lukas.hermanns@freenet.de
    Gruß,
    Lukas



  • Hast eine Mail 😉



  • Hier ist eine Tessellation Demo auf YouTube:
    http://www.youtube.com/watch?v=BeAqJu9UapQ



  • Eben gerade habe ich die SoftPixel Engine 2.1 hochgeladen.
    Wer sich u.a. das Tessellation Tutorial mit dem dazu gehörigen Source-Code anschauen möchte: happy downloading 😃



  • Heute habe ich einen Chatroom für die SoftPixel Engine über afterworkchat.de eingerichtet:
    SoftPixelChat



  • Hier mal ein Screenshot von meiner Entwicklung der Engine auf iOS:

    http://www.hlc-games.de/projects/softpixelengine/SPE%20on%20iOS%201%20%28low%20detail%29.JPG



  • Sieht gut aus 👍
    weiter so 😉



  • Wow gefällt mir echt gut 👍 👍

    Besonders gut find ich, was ich bis jetzt bei jedem anderen freeware engine vermisst habe, die shader library!!!So was gehört in jeden guten engine.
    Saubere shader , mit sehr guter qualität.Als echt 😃

    Ihr müsst einfach weiter machen 😃



  • Hm ok , ich vermisse was.
    Bounding boxes/collision detection/collision response animator.
    (ka oder ich finds nicht x'D)
    Vielleicht könnt ihr das noch einbauen , obwohl das nicht nötig ist, da bei den meisten Physik engines (Newton,PhysicX) bboxes dabei sind... nur ein vorschlag.

    Und auch ein engine format für 3D szenen , mit eigenem engine editor, was aber zeit hat.Eig ist das ja schon indirekt mit dem shaping tut gegeben aber ...



  • 7xCore schrieb:

    Hm ok , ich vermisse was.
    Bounding boxes/collision detection/collision response animator.
    (ka oder ich finds nicht x'D)
    Vielleicht könnt ihr das noch einbauen , obwohl das nicht nötig ist, da bei den meisten Physik engines (Newton,PhysicX) bboxes dabei sind... nur ein vorschlag.

    Und auch ein engine format für 3D szenen , mit eigenem engine editor, was aber zeit hat.Eig ist das ja schon indirekt mit dem shaping tut gegeben aber ...

    [quote]
    Collision Detection hat er bereits eingebaut. Was meinst du mit "Engine format für 3D szenen"? Du meinst ein Modelformat? Wofür, gibts doch alles wie Sand am Meer... Und was meinst du mit engine editor?



  • Ein eigenes model format hast du ja schon erkannt , und dazu einen editor um diese zu erstellen.



  • Hier sind alle Features aufgeführt: http://softpixelengine.sourceforge.net/features.html 😉

    - Da steht auch was von CollisionDetection (seit v.3.0 ist sogar NewtonGameDynamics integriert).
    - Auch mehrere Mesh formate können geladen werden (3DS, B3D, MS3D, X, MD2, OBJ und das Hauseigene Format SPM).
    - An einem LevelEditor arbeite ich zur Zeit (http://www.hlc-games.de/forum/viewtopic.php?f=31&t=308&sid=ce374cb22cefc56a411d5bcbb4ef4c5a).
    - Einen MeshEditor zu entwickeln habe ich aufgegeben und statt dessen endlich mal angefangen mit Blender zu arbeiten ^^
    - Ein eigenes Szenen-Format gibt es auch (im eigenen Script Format: http://softpixelengine.sourceforge.net/docu/classsp_1_1tool_1_1_script_loader.html)

    Zum Thema ShaderLibrary: nicht das ihr das falsch versteht: mit "ShaderLibrary" ist lediglich eine 'Sammlung' an Shadern gemeint. Diese können aus dem gleichnamigen Tutorial frei genutzt werden (ebenfalls zlib/libpng Lizenz). Genau wie in einer "C++ Library": es handelt sich um eine 'Sammlung' von Funktionen.
    Nicht dass ihr meint, es handelt sich um einen Shader-Generator o.ä.

    Gruß,
    Lukas



  • Sehr beeindruckend 👍

    Kannst Du Literatur zum Aufbau einer Engine empfehlen?



  • Danke erstmal für die ganzen links 😉

    Das mit der shader lib war schon klar , damit wollte ich nur sagen , das so was geniales bei irrlicht oder ogre3D fehlt und deswegen das hier besonders gut ist :p



  • Sorry, aber das einzige Wort, das mir zu deiner Engine einfällt, ist "Scheiße". Ich habe mir den Sourcecode angesehen und war erschüttert. Du magst mich nun vielleicht nicht ernst nehmen, weil ich nicht gerade den besten Ruf hier habe, aber folgende Kritikpunkte möchte ich dir mal nennen. Das war alles, was ich mir angesehen habe. Und es ist alles Mist. Ich kann mir nicht vorstellen, dass der Rest der Engine besser ist.

    .) Du hast da offenbar 2 Stringklassen. Eine als Wrapper für std::string, eine mit eigener Speicherverwaltung. Keine davon ist besser als std::string oder in auch nur irgendeiner Form nützlich. Deine Stringklassen unterstützen keine Locales, sind noch schlechter designt als die Standard-Stringklassen und Ausgabeoperatoren fehlen auch.

    .) Dein Logger ist absolut Java-like. In C++ wäre ein Logger in Form von Templates in Kombination mit std::ostream präsent. Du zwingst den Benutzer der Klasse, nach stringc, deine unbrauchbare Stringklasse, umzuwandeln. Er ist übrigens eine Klasse mit ausschlißelich statischen Membern, das sollte dir zu denken geben.

    .) Memory Manager:
    - Hat der überhaupt einen Zweck?
    - deleteMemory/Buffer: Eine Prüfung auf 0 ist nicht erforderlich, ein Null-setzen nicht immer benötigt. Dann wären wir ja wieder nur bei delete. Welchen Zweck hat das Ding doch gleich?
    - createMemory/Buffer: new gibt niemals 0 zurück. Wenn kein Speicher mehr da ist, wirft new einen std::bad_alloc.
    - removeElement: Noch nie was von <algorithm> gehört?
    - deleteList: Der nächste Mist. Dafür gibts Smartpointer und Dinge wie boost::ptr_vector.

    .) Filesystem && Konsorten:
    Auch hier: Was soll das sein? Himmel, der C++-Standard stellt dir Filestreams zur Verfügung, und wenn du RAM-Files haben willst, dann bau dir eben deinen eigenen streambuf dafür. Und warum zwingst du den Benutzer auch hier, Strings zu schreiben?

    .) Deine Farbenklassen.
    - Was kommt denn raus, wenn man 2 Farben multipliziert? Eine Quadratfarbe? Darf man 2D Figuren nur mit Quadratfarben, Linien nur mit "normalen" Farben anmalen? Und bei 3 Farben eine Kubikfarbe, etc.?
    - Warum zur Hölle definierst du einen leeren Destruktor, der tut doch gar nichts.

    Und überall durch und durch C-Casts.

    Das sind übrigens noch keine Engine-spezifischen Dinge. Das sind alles allgemeine Klassen, die ich mir angesehen habe.

    Mich wundert, dass dich noch niemand in diesem Thread darauf hingewiesen hat.

    Bitte nicht falsch verstehen: Ich habe Respekt davor, wie lange du schon an diesem Mammut Projekt arbeitest. Aber tu den Benutzern deiner Eingine einen Gefallen, und lern C++ 😉

    Grüße,
    PI



  • 314159265358979 schrieb:

    .) Deine Farbenklassen.
    - Was kommt denn raus, wenn man 2 Farben multipliziert? Eine Quadratfarbe?

    Fail.

    Warum kommt mir nur gerade ein Dieter Nuhr Spruch ins Gedächtnis...



  • Aber tu den Benutzern deiner Eingine einen Gefallen, und lern C++

    Das kann ich nicht unterstützen 👎
    Um so einen engine aufzubauen , ist ein sehr weites C++ know-how nötig , egal wie schlecht oder gut er deiner meinung nach ist.



  • Lustig, hier http://www.c-plusplus.net/forum/291436-180 jammert der gleiche Troll, dass er nix auf die Reihe kriegt und übergibt Strings by Value. Kann man also getrost ignorieren. 🙂



  • Hehe ja. 314159265358979 fällt ganz klar in die Kategorie "aggressiver, unzufriedener Bash-Troll" 😃


Anmelden zum Antworten