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
    Unity brauch sich sicherlich nicht hinter der Unreal Engine 3 verstecken, aber dennoch ist die UE3 das augereiftere, hochqualitativere Produkt. Dafür fällt der Einstieg mit Unity leichter und der UE3 wird oft nachgesagt, dass sie diesen eigenwilligen Look hat, der nicht jedem gefällt.

    @Kyuu & Threadersteller:
    Wenn es Spieleprogrammierung auf hohem Level sein soll, kommt man irgendwann nicht mehr um C/C++ herum. Man sollte aber auch nicht den Anfängerfehler machen und sich gleich die erstbeste 3D-Engine schnappen und drauf hoffen, dass irgendwas geiles bei rumkommt. Grundzüge der Programmierung lernt man am besten mit Sprachen mit einfacher Syntax, wie Pascal oder Java. Damit lässt sich auch schon Mächtiges erschaffen. Man sollte aber immer klein anfangen.

    Minispiele á la Tetris, Snake lassen dich spielend Programmieren lernen.

    Geändert von Papa Justify (22.08.2010 um 12:31 Uhr)

  2. #2
    Im Normalfall ist ein Spiel in mehrere Ebenen aufgeteilt. Als Grundsatz existiert die Engine, die im Prinzip, wie der Name schon sagt, der "Motor" eines Spieles ist. Bei einer engine handelt es sich um eine Programmsammlung, die bestimmte Dinge wie etwa grafische Darstellungen, Netzwerk, Sound oder Physik übernimmt. Zu der Engine kommt dann ein Toolset aus einem oder mehreren Editoren, mit denen Inhalte für die Engine, also das eigentliche Spiel erstellt werden. Engine und Entwicklungsumgebung sind der Teil eines Spieles, bei deren Entwicklung wirklich programmiert wird. Genau diese beiden Dinge existieren beim RPG-Maker schon, nämlich die RPG_RT.exe als Engine und der RPG-Maker als Toolset, mit dem sich Inhalte dafür erstellen lassen.

    Wenn du dir vorstellst, dass du mithilfe einer Programmiersprache ein ganzes Spiel erstellen kannst, liegst du falsch. Du erstellst damit lediglich das Fundament, auf dem dein Spiel aufbaut. Es kommen aber immer noch weitere Dinge hinzu wie Grafiken erstellen, Sounds erstellen, Animieren usw.

    Dies gilt aber nur für ausgefeilte, wirklich komplexe Spiele. Kleine Dinger wie Snake lassen sich auch ohne großartige Aufteilung in diverse Ebenen programmieren. Bei komplexeren Projekten ist so etwas aber unerlässlich, wenn man keinen gigantischen Aufwand haben will.

    Sich dem Aufbau eines Spiels bewusst zu werden ist aber auf jeden Fall der beste Einstieg und wesentlich sinnvoller als sich gleich zu Anfang in irgendeine Engine reinzufuxen.

    Geändert von Satyras (30.08.2010 um 20:53 Uhr)

  3. #3
    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.

  4. #4
    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.

  5. #5
    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.

  6. #6
    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?

  7. #7
    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)

  8. #8
    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.

  9. #9
    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.

  10. #10
    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.

  11. #11
    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.

  12. #12
    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

  13. #13
    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.

  14. #14
    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)

  15. #15
    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.
    +1

    Am besten die Kombination von C++, SDL (und OpenGL) innerhalb von Eclipse mit CDT-Plugin.

    btw. Ich muss mal schauen, wie ich SourceCode unter Windows kompiliert kriege mit MinGW. Unter Ubuntu Linux ist das kein Problem.

  16. #16
    Zitat Zitat von niR-kun Beitrag anzeigen
    btw. Ich muss mal schauen, wie ich SourceCode unter Windows kompiliert kriege mit MinGW. Unter Ubuntu Linux ist das kein Problem. :D
    Ich hab zwar Code::Blocks als bevorzugte IDE, da es flott läuft und plattformunabhängig ist, aber um SDL in MingGW laufen zu kriegen musste ich erstmal folgende Linker Flags reinschmeißen:
    Zitat Zitat
    -lmingw32
    -lSDLmain
    -lSDL
    -lSDL_image
    Wobei -lSDL_image offensichtlich optional ist, nur BMPs zu verwenden würde ich aber niemandem raten. Auch wichtig ist es auf den richtigen #include zu achten. Bei den SDL Libs, die ich unter Windows habe ist es beispielsweise SDL_Image.h während es unter Ubuntu SDL_image.h ist.



    Zitat Zitat
    Du bist witzig.
    Bau einen Rechner oder zumindest nen Prozessor+Grafikprozessor in deinen Toaster und es wird laufen.

Berechtigungen

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