Ergebnis 1 bis 20 von 33

Thema: Programmiersprache für games

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von Aperetif Beitrag anzeigen
    @Kyuu & Threadersteller:
    Wenn es Spieleprogrammierung auf hohem Level sein soll, kommt man irgendwann nicht mehr um C/C++ herum.
    Wie bitte?

    Zitat Zitat von elvissteinjr Beitrag anzeigen
    C++. Es lohnt sich.

    2D:
    C++&SDL
    3D
    C++&SDL+OpenGL

    Wenn du alles selbst schreibst hast du keine Kosten und bist vor allem bei gutem Code auch plattformunabhängig. Im Idealfall läuft dein Spiel dann auch auf deinem Toaster.
    Du bist witzig.

  2. #2
    Rein theoretisch lässt sich ein Spiel in jeder Sprache schreiben, wobei natürlich anzumerken ist, dass der syntaktische Aufbau mancher Sprachen besser geeignet ist als der anderer, um damit ein Spiel zu entwickeln. Letztendlich kommt es aber nicht nur auf die Sprache an sich an, sondern genauso auf den Maschinencodeübersetzer. Hier unterscheidet man zwischen Compilern und Interpretern, es gibt auch Hyrbiden aus den beiden, aber dazu später mehr.

    So ein Übersetzer übersetztr nun also das Programm in für den Computer ausführbare Maschinensprache und die Art wie sie dies tun ist ausschlaggebend für die Unterscheidung. Ein Compiler übersetzt den Code ein einziges mal als ganzes in Maschinensprache. Dies dauert meistens eine längere Zeit, je nach Umfang des Programmes, dafür ist der Maschinencode, der am Ende herauskommt sehr schnell. Ein Interpreter hingegen übersetzt den Code während dem Ausführen des Programmes, was zwar dafür sorgt, dass das Programm sofort läuft, aber ebenso Performanceeinbußen mit sich bringt.

    Nun gitb es auch Hybriden aus diesen beiden, etwa die Standard-Java-Laufzeitumgebung von Sun oder das .net-Framework, die euren Code ersteinmal durch einen Compiler jagen, der den Code aber nicht direkt zu Maschinencode macht, sondern zu einer Art Zwischencode, der dann wiederum von einem Interpreter übersetzt wird.

    Für ein größeres Spieleprojekt ist eine Sprache, für die ein guter Compiler vorliegt silcherlich die beste Wahl.

  3. #3
    Zitat Zitat von Kyuu Beitrag anzeigen
    Wie bitte?
    Wenn man irgendwann mal professionell arbeiten will, wird man aufgrund von Industriestandards und Mächtigkeit der Sprache und der Vielfalt an Bibliotheken nicht um C/C++ herumkommen, capisci?

  4. #4
    Zitat Zitat von Aperetif Beitrag anzeigen
    Wenn man irgendwann mal professionell arbeiten will, wird man aufgrund von Industriestandards und Mächtigkeit der Sprache und der Vielfalt an Bibliotheken nicht um C/C++ herumkommen, capisci?
    Erweitere deinen Horizont, wir befinden uns nicht mehr in den 80-ern. Professionelle Spiele (wenn du schon derart stark pauschalisierst) nutzen weit mehr als C/C++ und ich rede nicht mal von Indies.

    Das heute ausschlaggebende für C/C++ ist zwar tatsächlich das breitgefächerte Angebot an qualitativen Compilern, Entwicklungswerkzeugen und Bibliotheken, aber das muss nicht bedeuten, dass es außerhalb nichts gibt, das mindestens als Gleichwertig betrachtet werden kann. Im letzten Jahrzehnt wurden viele neue Sprachen entwickelt, die performancetechnisch mindestens mit C/C++ gleichziehen, weit weniger komplexe Implementierung haben und mächtiger sind. Sie sind damit für zukünftige und teilweise bereits für heutige (professionelle) Spieleentwickler attraktiv und gewinnen immer mehr an Attraktivität mit jeder neuen unterstützten Plattform, jeder neuen damit geschriebenen Bibliothek und jedem neuen Projekt, das es verwendet. Mindestens für C++ sieht die Zukunft schlecht aus, auch wenn es nie ganz von der Bildfläche verschwinden wird. Die Sprache ist veraltet, zu komplex, schwer zu warten, führt zu fehleranfälligem Code und steht bei vielen (besonders im akademischen Bereich und damit bei denen, die ihre Zukunft in den Händen halten werden) in einem schlechten Licht.

    Ach so, ein Industriestandard ist C++ schon länger nicht mehr. C#, Java und andere haben sich längst durchgesetzt.


    Zitat Zitat von elvissteinjr Beitrag anzeigen
    Bau einen Rechner oder zumindest nen Prozessor+Grafikprozessor in deinen Toaster und es wird laufen.
    Das war nichtmal das Witzige.

    Geändert von Kyuu (23.08.2010 um 22:17 Uhr)

  5. #5
    Zitat Zitat von Kyuu Beitrag anzeigen
    Erweitere deinen Horizont...
    Verstehe meine Aussage! Ich behaupte nicht, dass man nur mit C Spiele programmieren kann. Ich weiß selbst, dass es noch ganz viele andere Fische im Meer gibt. Und ich weiß, dass es genug einfachere Alternativen zu C/C++ gibt. Trotzdem ist gerade in der Spieleentwicklung immernoch das Nonplusultra und muss zurzeit höchstens mit Java konkurrieren, dass ich zumindest in Sachen Spieleprogrammierung noch hinten dran sehe (und durch die Geschichte mit Oracle, aber da muss man erstmal schauen).

    Letztendlich kann man mit jeder Programmiersprache fast alles realisieren mit mehr oder weniger Aufwand.
    Ich bleibe aber bei meiner (scheinbar beschränkten) Meinung, dass man heutzutage C/C++ und Java können muss, als professioneller Programmierer.

  6. #6
    Zitat Zitat von Kyuu Beitrag anzeigen
    Ach so, ein Industriestandard ist C++ schon länger nicht mehr. C#, Java und andere haben sich längst durchgesetzt.
    Mal sehen...

    C# läuft nur im .net Framework, also nur unter Windows und leider nur sehr schlecht mit Mono. Dadurch dass beim .net Framework nur Bytecode, aber kein Maschienencode erzeugt wird, sind die Programme prinzipiell Plattformunabhängig, sind es in der Praxis aber nicht wegen oben genanntem.

    Java läuft in der Java Virtual Machine, welche den Bytecode wie bei .net während der Laufzeit kompiliert. Die Programme sind plattformunabhängig, solange eine JVM auf dem Gerät vorhanden ist.

    Nur haben beide eines gemeinsam: Durch die Laufzeitkompilierung sind die Sprachen ein gutes Stück langsamer als jede kompilierte Sprache.
    Wie kann C++ kein Industriestandard mehr sein, in einer Industrie wo jedes FPS zählt? Sicher kann man gute Spiele mit den erwähnten Sprachen programmieren, aber die Spieleindustrie muss so viel wie möglich an Leistung rausquetschen können. Da ist eine laufzeitkompilierte Sprache fehl am Platz.


    Zitat Zitat
    Das war nichtmal das Witzige.
    Witzig ist das nur weil es dann wirklich laufen würde.

  7. #7
    Zitat Zitat von elvissteinjr Beitrag anzeigen
    Java läuft in der Java Virtual Machine, welche den Bytecode wie bei .net während der Laufzeit kompiliert. Die Programme sind plattformunabhängig, solange eine JVM auf dem Gerät vorhanden ist.

    Nur haben beide eines gemeinsam: Durch die Laufzeitkompilierung sind die Sprachen ein gutes Stück langsamer als jede kompilierte Sprache.
    Naja, durch den JIT-Compiler kompiliert Java seinen Programmcode zum Teil auch in Maschinencode. Und das unter Umständen sogar effizienter als C/C++, da zur Laufzeit mehr Informationen zur Verfügung stehen.
    Mittlerweile ist C++ vielleicht 25%-50% schneller als Java - wenn es effizient programmiert ist. Das ist aber kein nennenswerter Geschwindigkeitsunterschied. Entscheidender ist, wie effizient man seinen Code gestaltet.

    Ich halte von Java und C# auch mehr als von C++, aber das ist nur meine persönliche Meinung. Auf jeden Fall sollte man sich mit mehreren Sprachen beschäftigen und sich nicht von vornherein auf eine Sprache festlegen.

  8. #8
    Zitat Zitat von -KD- Beitrag anzeigen
    Ich halte von Java und C# auch mehr als von C++, aber das ist nur meine persönliche Meinung. Auf jeden Fall sollte man sich mit mehreren Sprachen beschäftigen und sich nicht von vornherein auf eine Sprache festlegen.
    Das ist sowieso das Beste. Java muss sein, genaso wie C und im Endeffekt kann man dann auch schon fast C# , da es im Grunde eine Mischung aus beidem ist.

  9. #9
    Eine ganz gute Möglichkeit, sich in das Skripten hineinzusteigern, wären Spiele wie "Clonk" oder "The Battle for Wesnoth". Sie besitzen eine einfache Skriptsprache und viele Skriptbeispiele, aus dessen Teilen man das gewünschte Produkt erzielen kann. Und irgendwann kann man sich an fortgeschrittenere Möglichkeiten und Skriptsprachen hineinwagen und diese sogar einbinden.
    Diese Methode zeigt zumindest bei mir eine positive Wirkung

  10. #10
    Bin ich der einzige, der die Performancefrage im Hobbybereich für höchst belanglos hält?

    Was programmiert man so hobbymässig? Unreal Engine 4 Kernel, optimiert darauf auch bei 4-Kern Prozessoren keinen unnötigen Takt zu benötigen?

    Die Sprache ist doch völlig schnuppe im Grunde und vor allem sollte man keine Sprache die man nicht so mag statt ner Sprache die man sehr mag verwenden nur weil angeblich irgendwo die Performance minimal besser ist.

    Die eigentliche Spielperformance ( 5fps oder 60 fps~ das ist doch der Performanceunterschied, an den man da denkt oder? ) hängt eher von der verwendeten Grafikausgabe ab. Die 0815 Grafikausgabe von Java ist für 8Bit okey, 24Bit PNGs mit Alphamap animiert über den Screen schieben kann man dagegen völlig vergessen. Nimmt man statt dessen eine OpenGL-Grafikausgabe, ja sowas gibts für Java, läuft das alles superflüssig.

  11. #11
    Zitat Zitat von elvissteinjr Beitrag anzeigen
    Mal sehen...

    C# läuft nur im .net Framework, also nur unter Windows und leider nur sehr schlecht mit Mono. Dadurch dass beim .net Framework nur Bytecode, aber kein Maschienencode erzeugt wird, sind die Programme prinzipiell Plattformunabhängig, sind es in der Praxis aber nicht wegen oben genanntem.

    Java läuft in der Java Virtual Machine, welche den Bytecode wie bei .net während der Laufzeit kompiliert. Die Programme sind plattformunabhängig, solange eine JVM auf dem Gerät vorhanden ist.

    Nur haben beide eines gemeinsam: Durch die Laufzeitkompilierung sind die Sprachen ein gutes Stück langsamer als jede kompilierte Sprache.
    Wie kann C++ kein Industriestandard mehr sein, in einer Industrie wo jedes FPS zählt? Sicher kann man gute Spiele mit den erwähnten Sprachen programmieren, aber die Spieleindustrie muss so viel wie möglich an Leistung rausquetschen können. Da ist eine laufzeitkompilierte Sprache fehl am Platz.
    Du hast nicht viel Ahnung von Codeoptimierung. Eigentlich hast du so gut wie keine Ahnung von dem, was du hier ansprichst, denn das ist einfach nur zusammengereimt und oberflächlich.

    Es wird dich übrigens überraschen, aber es ist relativ schwer in C++ performanten Code zu schreiben und benötigt tiefgehendes Wissen über die Sprache.

    Zitat Zitat von Aperetif Beitrag anzeigen
    Das ist sowieso das Beste. Java muss sein, genaso wie C und im Endeffekt kann man dann auch schon fast C# , da es im Grunde eine Mischung aus beidem ist.
    Ich würde eigentlich sagen, D muss sein, damit die Leute endlich aufhören C++ für das nonplusultra zu halten und all die Schwächen und Designfehler, genauso wie man's besser machen kann, vor die Augen gesetzt bekommen.

    Geändert von Kyuu (26.08.2010 um 00:45 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •