Open-Source-Bibliotheken in der Indie-Szene



  • Einspruch schrieb:

    Versuch mal dem Gamer ohne SDL einen Spezial > 10 Tasten Joystick als Eingabegerät unter Linux anzubieten.

    Wie viele aktuelle Spiele laufen unter Linux und unterstützen dort "> 10 Tasten Joysticks"?

    Einspruch schrieb:

    Wenn du das alles selber machst, dann mußt du unter Linux die Posix Threads und unter Windows eben die Windoes Threads direkt verwenden.

    Und? Das ist doch trivial und ich seh grad nicht, welchen Mehrwert mir SDL_Thread im Vergleich zu den rohen APIs liefern könnte. Man bedenke auch, dass Threading mittlerweile sowieso direkt in Standard C++ supported wird...

    Einspruch schrieb:

    Das bläht alles den Code auf und ist Arbeit, die man sich eigentlich sparen kann.

    Also lieber das ganze Projekt mit unverhältnissmäßigen Abhängigkeiten würzen...

    Einspruch schrieb:

    Es geht also nicht nur um die < 100 Zeilen um ein Fenster aufzumachen,
    sondern auch um den ganzen Rest.

    Du meinst die < 100 Zeilen für

    Einspruch schrieb:

    Threading
    Timer

    Einspruch schrieb:

    Input Devices

    Dafür gibt es sicherlich auch unter Linux irgendwelche APIs und man muss nicht gleich auf eine riesige Library springen, von der man dann 1% benutzt...

    Einspruch schrieb:

    Grafik

    Wenn du mit den sehr begrenzten Möglichkeiten der SDL zufrieden bist...

    Einspruch schrieb:

    Sound

    OpenAL, fmod, ...

    Einspruch schrieb:

    In der SDL sind so Sachen wie TFT Support und Bildformate laden aus der SDL in eigene Bibliotheken ausgelagert (libsdl_ttf und so zeugs)

    Und du kannst die Fonts und Bildformate damit auch verwenden ohne die SDL zu verwenden?

    So Libraries wie SFML und SDL sind nett für Anfänger und Hobbyisten. Der Vorteil liegt aber weniger darin, dass sie einem so unglaublich viel Arbeit abnehmen, sondern eher darin, dass sie es einem ermöglichen, auch ohne tiefgehendes Wissen etwas ansehliches auf die Beine zu stellen. Und erreicht wird das, indem alles hinter einem entsprechend abstrakten Interface versteckt wird. Aber sobald die gebotene Abstraktion nicht exakt deinen Anforderungen entspricht, ist so eine Library mit einem Schlag unbrauchbar. Oder anders ausgedrückt: SDL und SFML sind super für das, wofür sie gedacht sind. Und das ist nunmal wohl, Spieleprogrammierung für Anfänger und Laien zugänglich zu machen. Jemand, der kein Anfänger oder Laie ist, wird sich dagegen dort nicht wohl fühlen...



  • cooky451 schrieb:

    Was heißt hier optimiert? Wüsste nicht was man beim Fenster erstellen sonderlich optimieren sollte.

    Dann ist ja gut, dass ich noch genügend andere Beispiele genannt habe 😉

    cooky451 schrieb:

    Aber ansonsten vertrete ich eher die Ansicht, dass man sehr sparsam mit externen Abhängigkeiten umgehen sollte.

    Diese Aussage basiert wieder auf einer falschen Annahme -- "wenn ich keine High-Level-Bibliothek nehme, habe ich keine Abhängigkeiten". Das stimmt eben nicht! Du kommst um Abhängigkeiten nicht herum, wenn du etwas mehr als die trivialen Dinge benötigst. Im Gegenteil hast du dann viel mehr Abhängigkeiten, weil du all die Low-Level-Bibliotheken wie libjpeg, libpng, libsndfile, Freetype, OpenAL, WinSock, etc. einzeln einbinden musst.

    cooky451 schrieb:

    So viele Features hat SFML dann auch nicht, als dass ich da groß experimentieren könnte.

    Ich habe ja schon gesagt, dass es nicht nur um SFML geht. Du kannst dir also echt nicht vorstellen, dass man durch eine High-Level-Bibliothek (Open-Source oder nicht) schneller ans Ziel kommt? Selbst wenn einzelne Dinge nicht ideal sind, bekommt man so sehr schnell eine Vorstellung der Machbarkeit und möglicher Implementierungsprobleme. Wenn man dann sieht, dass man einen komplett anderen Weg einschlagen muss, verliert man viel weniger Zeit als bei selbstgeschriebenem Code.

    cooky451 schrieb:

    [JPEG] Noch nie benutzt, keine Ahnung wie komplex das ist.

    Schau mal hier. Viele der genannten Funktionalitäten sind ähnlich komplex, nicht ohne Grund gibt es jeweils spezialisierte Bibliotheken.



  • Nexus schrieb:

    cooky451 schrieb:

    Aber ansonsten vertrete ich eher die Ansicht, dass man sehr sparsam mit externen Abhängigkeiten umgehen sollte.

    Diese Aussage basiert wieder auf einer falschen Annahme -- "wenn ich keine High-Level-Bibliothek nehme, habe ich keine Abhängigkeiten". Das stimmt eben nicht! Du kommst um Abhängigkeiten nicht herum, wenn du etwas mehr als die trivialen Dinge benötigst. Im Gegenteil hast du dann viel mehr Abhängigkeiten, weil du all die Low-Level-Bibliotheken wie libjpeg, libpng, libsndfile, Freetype, OpenAL, WinSock, etc. einzeln einbinden musst.

    Viele kleine Abhängigkeiten haben imo mehrere Vorteile. Insbesondere bekomm ich genau das, was ich brauch und nicht mehr, ich kann einzelne Komponenten nach Lust und Laune separat austauschen und updaten, niemand zwingt mir eine bestimmte High-Level-Abstraktion auf, ...

    Abgesehen davon, hast du diese Abhängigkeiten so oder so, oder was glaubst du, macht deine High-Level-Bibliothek unter der Haube? 😉

    cooky451 schrieb:

    So viele Features hat SFML dann auch nicht, als dass ich da groß experimentieren könnte.

    Ich habe ja schon gesagt, dass es nicht nur um SFML geht. Du kannst dir also echt nicht vorstellen, dass man durch eine High-Level-Bibliothek (Open-Source oder nicht) schneller ans Ziel kommt? Selbst wenn einzelne Dinge nicht ideal sind, bekommt man so sehr schnell eine Vorstellung der Machbarkeit und möglicher Implementierungsprobleme. Wenn man dann sieht, dass man einen komplett anderen Weg einschlagen muss, verliert man viel weniger Zeit als bei selbstgeschriebenem Code.[/quote]
    Schnell ans Ziel ist aber nicht das einzige, was zählt. Insbesondere in einem professionellen Umfeld, ist z.B. Qualität wohl auch nicht ganz unwichtig...



  • dot schrieb:

    Viele kleine Abhängigkeiten haben imo mehrere Vorteile.

    Da bin ich völlig mit dir einverstanden. Ich wollte nur sagen, dass man um gewisse Abhängigkeiten nicht herumkommt, auch wenn man vieles selbst schreibt 🙂

    dot schrieb:

    Abgesehen davon, hast du diese Abhängigkeiten so oder so, oder was glaubst du, macht deine High-Level-Bibliothek unter der Haube? 😉

    Ja, man hat sie noch und muss evtl. deren DLL mitliefern. Je nachdem sind sie aber auch gut wegabstrahiert, sodass man sie nicht alle einzeln linken muss und weniger Konfigurationsaufwand (gerade im Bezug auf Portabilität) hat.

    dot schrieb:

    Schnell ans Ziel ist aber nicht das einzige, was zählt. Insbesondere in einem professionellen Umfeld, ist z.B. Qualität wohl auch nicht ganz unwichtig...

    Das ist klar, ich bezog mich aufs Prototyping. Wenn man bereits viel Erfahrung hat und der einzuschlagende Weg schon im Voraus weitgehend bekannt ist, hat das natürlich weniger Relevanz.


  • Mod

    Einspruch schrieb:

    rapso schrieb:

    1. die wenigsten erstellen fuer 3 verschiedene betriebssysteme, und das ist vielleicht maximal 1% vom code der api spezifisch ist. das argument hat noch keinen grossen developer bei opengl vs directx ueberredet, erst recht nicht bei 'irgendwelchen online sources'.
    2. viele dieser wrapper sind minimal, ob du jetzt ein fenster ueber SDL oder direkt android erstellst, ist recht banal.

    Das wird ständig behauptet, aber es stimmt nicht!

    Klar, für das Fenster mag das gelten, aber wer hat schon Bock sich auch noch um die 100 verschiedenen Eingabegeräte zu kümmern?

    ich unterstuetze neben touchscreen, das sony xperia play pad, archos pad,hama creedroid und Ouya pad. ist das alles bei SDL dabei?

    ich arbeite auch an meinem kleinen Oculus support, fuer wann ist das bei SDL geplant?

    Versuch mal dem Gamer ohne SDL einen Spezial > 10 Tasten Joystick als Eingabegerät unter Linux anzubieten.Klar kannst du den Treiber auf Kernelebene direkt ansteuern, aber plattformneutral ist das nicht mehr und den Aufwand mußt du erstmal betreiben. Diesen nimmt die SDL für dich ab.

    klingt ja gravierend, welches spiel hast du nochmal gemacht das joystick support hatte und auf mehreren platformen vertrieben wurde?
    theoretisch hast du recht, praktisch: einspruch abgelehnt.

    Gleiches gilt für Threading und für Timingsachen, auch hier hilft die SDL ungemein. Wenn du das alles selber machst, dann mußt du unter Linux die Posix Threads und unter Windows eben die Windoes Threads direkt verwenden.
    Das bläht alles den Code auf und ist Arbeit, die man sich eigentlich sparen kann.

    1. kannst du eine der posix libs unter windows nutzen
    2. ist das threading bei mir in 3 kleinen klassen was platformspezifisch ist. task/job system etc. was cross platform ist hat sicherlich schon 10mal soviel code als thread erstellen, priority setzen, mutex, semaphore erstellen, locken.
    3. wuerde ich da lieber boost nehmen als SDL, sieht irgendwie sauberer aus.

    Es geht also nicht nur um die < 100 Zeilen um ein Fenster aufzumachen,
    sondern auch um den ganzen Rest.

    der ganze rest ist sicherlich <1% vom spiel und den schreibt man eh sauber gewrapped, da wohl niemand direkt auf einer externen api arbeiten wuerde.

    Um das alles:
    Threading
    Input Devices
    Timer
    Grafik
    Sound

    plattformunabhägngi unter einen Hut zu bringen, müßtest du die Arbeit der SDL doppelt machen, wenn du das alles selber implementieren möchtest.

    ich kenne ehrlichgesagt niemanden der raw drauf arbeitet, man schreibt sich also eh einen wrapper. den vorteil den man dann hat ist, dass auf neuen platformen fuer die es SDL nicht gibt, man eben nur seinen kleinen wrapper fuer diese platform portiert z.b. hatte ich so ein spiel in einer woche von iOS auf psp portiert. was machst du in dem fall? selbst die SDL auf neue platformen portieren? warten bis es die SDL dafuer gibt?

    Diese Arbeit kann man sich sparen und sich um den eigentlichen Gamingcode kümmern.

    diese arbeit hat man eh immer weil man seinen wrapper schreibt, ob man die platform api wrappt oder einen wrapper, die arbeit ist da, falls man es sauber und portabel haben will.

    Wenn für dich die Welt der Spiele natürlich bei DirectX endet, dann ist deine Meinung klar.
    Hier bietet DirectX ja schon alles was du brauchst, aber das ist eben nicht plattformunabhängig.

    meine platformen sind:
    -pc (linux,osx,windows)
    -tablet/phones (iOS,Android,Bada,Blackberry,WP8)
    -konsolen (DS,PSP,PSVita,PS3,X360)
    (-ehemalige platformen waren noch gba,gamecube,ps2)

    davon hat die SDL folgende unterstuetzt als ich die platformen verwenden wollte
    -pc
    kein android&NDS (ist erst seit nem jahr drinnen glaube ich), kein iOS, PSP, WP8, GBA, GC, PS2, PSV, X360, PS3
    einfach nur OpenGL (ES und EGL) und dazu OpengSL ES und du hast schon mehr abgedeckt fuer video/audio als SDL bei den relevanten platformen kann (nichts persoenliches gegen die dreamcast, GP32, Solaris, BeOS, usw. zielgruppe )

    wenn du dir indie spiele anschaust die erfolgreich sind, siehst du meistens dass der schwerpunkt auf etwas liegt, was so noch nie da war.

    Plants vs. Zombies 😃

    Auf so ne Idee muss man erstmal kommen.
    Das ist wie:

    Kühlschrank gegen Wassereimer

    es kommt oft nicht auf die idee an, sondern auf die realisierung. aber stimmt schon, das setting ist schon gut/spassig 🙂



  • von rapso zensiert



  • zensiert von rapso


  • Mod

    tut mir leid jungs, aber rechtliche sachen darf ich hier echt nicht behandeln, hab der fairheit halber auch meinen text zensiert. sorry. ihr koennt mich gerne deswegen anmotzen ;), aber forumsvorgaben aufgrund von gesetzen 😕



  • rapso schrieb:

    tut mir leid jungs, aber rechtliche sachen darf ich hier echt nicht behandeln, hab der fairheit halber auch meinen text zensiert. sorry. ihr koennt mich gerne deswegen anmotzen ;), aber forumsvorgaben aufgrund von gesetzen 😕

    Du weißt aber schon, dass man anonymisierte Fallbetrachtungen immer durchdiskutieren darf, das erlauben auch Gesetzte.

    Wenn du also schreibst:
    Der Chef von Herr A sagt Herr A, dass er in seiner Freizeit nicht programmieren darf und wenn er es doch macht, dann gehört der Code der Firma von Chef.

    Dann darf ich sagen:
    *
    Ich bin der Meinung das dies rechtlich nicht zulässig ist, weil....
    *

    Juristisch ist das keine Rechtsberatung, deswegen ist es gesetzlich erlaubt.

    Eine Rechtsberatung wäre wenn ich z.B. schreiben würde:

    Hey Leute, ich habe hier ein Problem mit meinem Nachbar, weil....
    was soll ich tun?

    und du dann schreibst
    *
    Stell ihm ne Unterlassungsklage und mache dies und jenes.
    *

    Das dürftest du dann nicht, weil der Fall konkret ist, in diesem Fall könntest du lediglich auf einen Anwalt verweisen.

    Also, es ist immer nicht alles so heiß gekocht, wie der juristische Laie immer glaubt.

    Rechtsfälle dürfen, wenn sie anonymsiert sind, durchaus durchgesprochen werden.
    Siehe auch, wie das andere Foren lösen (unter dem Link "was ist erlaubt" dürfte das wesentliche stehen):
    http://www.recht.de/phpbb/viewtopic.php?f=13&t=111060

    Viel schlimmer, ein echtes Problem in eurem C++ Forum sind da eher eure nennung von Produktnamen und Personen. Sowie die Anwesenheit von Links auf diverse Seiten, inkl. Youtube.

    In dem Rechtsforum ist folgendes nie erlaubt:
    - Links auf Youtube und sonstige dubiose Quellen.
    - Nennung von Produktnamen und Hersteller, diese müssen alle anonymisiert werden. Anstatt Microsoft kann man also schreiben, Softwarefirma aus Redmond.
    - Angabne von realemn Namen. Das mit eurem Jürge Wolf, der hier öfters vorkommt, inkl. dem Aufruf seine Bücher nicht zu kaufen ist schon hart an der Grenze des erlaubten.

    Also, wenn ihr echte Rechtsproblemen aus dem Weg gehen wollt, dann solltet ihr erstmal an den obigen Fällen ansetzen.

    Das was hier geschrieben wurde war okay und es gab keinen Bedarf das zu zensieren.



  • rapso schrieb:

    tut mir leid jungs, aber rechtliche sachen darf ich hier echt nicht behandeln, hab der fairheit halber auch meinen text zensiert. sorry. ihr koennt mich gerne deswegen anmotzen ;), aber forumsvorgaben aufgrund von gesetzen 😕

    Ist vollkommen in Ordnung. Auch wenn Einspruch meint dass dies unbedenklich ist, so würde ich als Forenbetreiber auch lieber auf Nummer sicher gehen.



  • Nexus schrieb:

    Ich habe ja schon gesagt, dass es nicht nur um SFML geht. Du kannst dir also echt nicht vorstellen, dass man durch eine High-Level-Bibliothek (Open-Source oder nicht) schneller ans Ziel kommt? Selbst wenn einzelne Dinge nicht ideal sind, bekommt man so sehr schnell eine Vorstellung der Machbarkeit und möglicher Implementierungsprobleme. Wenn man dann sieht, dass man einen komplett anderen Weg einschlagen muss, verliert man viel weniger Zeit als bei selbstgeschriebenem Code.

    Klar kann ich mir das vorstellen, aber eine solche Bibliothek ist mir für Spielekram nicht bekannt.


Anmelden zum Antworten