C, C# oder C++?



  • Artchi schrieb:

    Naja, mit OpenGL lässt sich Spielegrafik entwickeln. Das ich mit OpenGL Spiele entwickeln kann, bezweifel ich. DirectX bringt halt so nette Sachen wie Audio, Joystick-Abfragen usw. mit. Das hast du alles bei OGL nicht.

    OpenGL ist eben nur für die Grafik da. Für Audio/Joystick etc muss man eben andere Sachen nehmen (zB SDL oder gar DirectX). Immerhin schafft id-Software es ja auch OpenGL für die Spiele-Programmierung zu benutzen 🙄



  • rüdiger schrieb:

    Immerhin schafft id-Software es ja auch OpenGL für die Spiele-Programmierung zu benutzen 🙄

    Wollten die jetzt nicht auch DX unterstützen?



  • Artchi ich hab hier zwei "Äpfel" miteinander verglichen, wenn du hier mit ner Engine kommst, dann vergleichst du ja nichtmehr zwei gleiche Sachen.
    Dann müsste man in C# auch ne Engine her nehmen, damit es wieder passt.
    Aber mir ist schon klar worauf du hinaus willst.

    Nur für einfache Sachen reicht C# und managed DirectX allemal, da managed DirectX schon ne kleine Engine ist wenn man so will. Wer sich mit 3D Grafik auskennt, kann eigentlich fast direkt loslegen mit learning by doing. C# ist sehr intuitiv für jemand der C++ kennt und man etwas Java programmiert hat und managed DirectX ebenfalls für jemanden der mal mit DirectX ein wenig gespielt hat.



  • rüdiger schrieb:

    OpenGL ist eben nur für die Grafik da. Für Audio/Joystick etc muss man eben andere Sachen nehmen (zB SDL oder gar DirectX).

    Was ist mit OpenAL? Ist das nicht so populär, wenn es um Audio geht?



  • OpenGL + SDL zusammen ist doch wie DirectX nur sogar einfacher zu programmieren und plattformunabhängig dazu. Deswegen kann ich DirectX nicht empfehlen.

    Mit C# oder Java kann man ein Spiel programmieren dass so schnell läuft wie Doom 3 ????



  • da hier Leute immer wieder 3D-Engine im Mund nehmen. Ihr meinst doch nicht in allen ernstes mit Irrlich & Co könnt ihr so eins wie Doom 3 entwickeln???
    also die sind noch lange nicht konkurrenzfähig oder gibt es etwas was noch viel besser ist als irrlicht?



  • Naja, mit OpenGL lässt sich Spielegrafik entwickeln. Das ich mit OpenGL Spiele entwickeln kann, bezweifel ich. DirectX bringt halt so nette Sachen wie Audio, Joystick-Abfragen usw. mit. Das hast du alles bei OGL nicht.

    dann linke ich halt die sdl(oder was auch immer, gibt genug möglichkeiten) dazu.
    und wenn du es so willst kannst du mit directx auch keine spiele entwickeln - du brauchst ja immerhin mindestens noch eine sprache in der du dein vorhaben umsetzt.



  • xBlackKnightx schrieb:

    OpenGL + SDL zusammen ist doch wie DirectX nur sogar einfacher zu programmieren und plattformunabhängig dazu. Deswegen kann ich DirectX nicht empfehlen.

    Mit C# oder Java kann man ein Spiel programmieren dass so schnell läuft wie Doom 3 ????

    Komischer vergleich. Seit wann läuft Doom3 "schnell", was heist das überhaupt in diesem Zusammenhang?

    Was du meinst ist wohl, ob man die gleichen 3D-Effekte wie in Doom3 bei der Schnelligkeit von Doom3 schreiben kann. Da sowieso 98% aller rechenintensiven Dinge von der GPU verarbeitet wird, spielt es sowieso keine Rolle ob man C++, C, C#, Phyton, Ruby oder Java verwendet.

    Die Fragen sind doch die:
    - brauche ich Templates-Programmierung?
    - brauche ich eigene Speicherverwaltung?
    - brauche ich Operator-Überladung?
    - welche Bibliotheken will ich verwenden?
    - für welches OS will ich schreiben?
    - will ich OO programmieren?


  • Mod

    xBlackKnightx schrieb:

    da hier Leute immer wieder 3D-Engine im Mund nehmen. Ihr meinst doch nicht in allen ernstes mit Irrlich & Co könnt ihr so eins wie Doom 3 entwickeln???
    also die sind noch lange nicht konkurrenzfähig oder gibt es etwas was noch viel besser ist als irrlicht?

    was hindert dich daran die Doom3, Quake4, HL2, CryEngine, Nebula engine oder sonstige engine mit SDK zu nutzen?



  • die einigen SDK kosten ne menge Geld? hindert doch was?

    @DEvent:
    naja ich erinnere mich noch an Zeiten da hat microsoft directX-Beispiele auf Plattformen einmal auf C++ und einmal auf VB rausgebracht. Beide haben dieselben Funktionalitäten nur läuft auf VB die examples total langsam. Ist es jetzt so dass andere Sprachen wie du bereit welche genannt hast genau so schnell? man sagt immer neben assembler sei c++ das schnellste



  • xBlackKnightx schrieb:

    man sagt immer neben assembler sei c++ das schnellste

    Wer sagt das? C++ kann durchaus viel langsamer sein als z.B. Java. Nur weil C++ die Möglichkeit bietet schnelle Programme zu entwickeln is das nicht der Standard. 🙂



  • xBlackKnightx schrieb:

    die einigen SDK kosten ne menge Geld? hindert doch was?

    @DEvent:
    naja ich erinnere mich noch an Zeiten da hat microsoft directX-Beispiele auf Plattformen einmal auf C++ und einmal auf VB rausgebracht. Beide haben dieselben Funktionalitäten nur läuft auf VB die examples total langsam. Ist es jetzt so dass andere Sprachen wie du bereit welche genannt hast genau so schnell? man sagt immer neben assembler sei c++ das schnellste

    Wann war den das und gibts sie noch? Ausserdem hab ich von VB keinen Schimmer, vielleicht wird VB interpretiert?



  • David_pb schrieb:

    C++ kann durchaus viel langsamer sein als z.B. Java.

    Naja, man kann sicherlich Fälle konstruieren, in denen Javaprogramme schneller als äquivalente C++Programme sind. Aber das müsste man dann auch direkt zu diesem Zweck konstruieren. Man müsste sich entsprechende Schwächen von C++ und Stärken von Java heraussuchen, die man in diesem Programm gezielt ausnutzen kann. Der Normalfall ist das natürlich nicht. Normalerweise werden C++Programme einen leichten Geschwindigkeitsvorteil gegenüber Javaprogrammen haben. Da sollte man sich nichts vormachen.

    xBlackKnightx schrieb:

    Mit C# oder Java kann man ein Spiel programmieren dass so schnell läuft wie Doom 3 ????

    Ich kenne keine 3D-Spiele in Java, die wirklich mit den momentanen kommerziellen Spielen auf einer Ebene sind, was die Grafikpracht gepaart mit der entsprechenden Geschwindigkeit betrifft. Aber man kommt da langsam näher heran. Vermutlich würde man soetwas haben, wenn eine große Spielefirma sich bei so einem Titel für Java entscheiden würde. Ich glaube, das ist weniger eine Frage der Geschwindigkeit als vielmehr eine Frage der Infrastruktur um die Sprachen herum, die man zur Spieleentwicklung benötigt. Für die Spieleprogrammierung existieren im C++ Umfeld nunmal deutlich mehr Werkzeuge, Bibliotheken und ähnliches, was man hierzu gebrauchen kann. Und nicht zuletzt ist durch die Tatsache, dass C++ diesen Bereich dominiert, auch eine ganze Menge C++ Wissen bei Spieleprogrammierern vorhanden. Von entsprechendem Javawissen kann hingegen eher nicht ausgegangen werden.

    Einen Doom 3 Clone in Java habe ich zwar nicht anzubieten, aber probier mal Jake 2 aus: Das ist ein Quake 2 Clone in Java. "Tribal Trouble" (Strategiespiel) und "Wurm Online" (MMORPG) sind zwei weitere Beispiele für 3D-Spiele in Java - wobei die, wie schon gesagt, auch nicht auf der Höhe der Zeit sind, was die Grafik betrifft.



  • jo, die alten VBs wurden interpretiert. vb.net wird natürlich wie alle anderen .NET-Sprachen in die il übersetzt.


  • Mod

    xBlackKnightx schrieb:

    die einigen SDK kosten ne menge Geld? hindert doch was?

    die sdks gibt es gratis zum spiel dazu.

    das einzige was kostet ist, falls du den source der engine haben moechtest und/oder ein produkt unabhaengig vom spiel veroeffentlichen willst.

    was ja beim entwickeln von spielen erstmal nicht sehr wichtig ist, zudem gibt es auch komplett freie engines die gut sind, z.b. Q3.

    und sag nicht "die ist schon urisch alt" denn 1. als HL rauskam, war die benutzte Q1 engine auch extrem alt und 2. bevor man anforderungen stellt die die neuste engine beduerfen, sollte man erstmal mit den bisherigen klarkommen, gute spiele hab schliesslich mehr als nur graphik.



  • Bei 3D-Spielen hat java heute gut aufgeholt, da Java im Prinzip nicht mehr viel zu tun hat. (natürlich genauso bei C++) Heute wird die eigentliche 3D-Arbeit von der GPU erledigt, Java und C++ verwalten grundsätzlich die Grafik nur noch. Gut, ein Spiel hat man damit immer noch nicht. Zu einem Spiel gehört viel mehr, wo dann die CPU dann doch wieder ordentlich zu tun hat. Aber im Prinzip kann man mit Java 3D-Programmierung machen.

    Nachteil bei Java ist, das die OpenGL-Features extra gewrappet werden müssen, deshalb denke ich mal, hinken die erstmal immer hinterher. Hier müssten die Grafikkarten-Hersteller eigentlich JavaOGL anbieten, damit man mit Java die gleichen Effekte wie mit C++ und DX/OGL erreichen kann.

    Es ist also nicht nur das C++-Knowhow, welches die Spieleindustrie hat, sondern auch die Lowlevel-API ist besser versorgt.

    Was ich bisher an 3D-Demos unter Java gesehen habe, ist aber schon nicht schlecht. Somit sehe ich für einen Only-Java-Coder kein Hindernis, auch mal sein Hobbyspiel in Java zu programmieren. Jedenfalls besser, als wenn hier jemand mit C ankommt (oh, Gott lass Hirn vom Himmel regnen!).



  • Artchi schrieb:

    Bei 3D-Spielen hat java heute gut aufgeholt, da Java im Prinzip nicht mehr viel zu tun hat. (natürlich genauso bei C++) Heute wird die eigentliche 3D-Arbeit von der GPU erledigt, Java und C++ verwalten grundsätzlich die Grafik nur noch. Gut, ein Spiel hat man damit immer noch nicht. Zu einem Spiel gehört viel mehr, wo dann die CPU dann doch wieder ordentlich zu tun hat.

    Jetzt mal ne blöde Frage: GPU und CPU laufen doch beide mit Maschinencode, was hat die Sprache damit zu tun? Oder warum ist bei der CPU Java "langsamer" und bei der GPU nicht? Scheint mir irgendwie nicht logisch.. 😕
    Oder wird der Graphikcode direkt übersetzt und der Rest läuft in der VM?



  • Das einzige was du an Programmen für die GPU schreiben kannst sind die Shader und die werden bekanntlich ja in extra (Shader-)Sprachen geschrieben.



  • THX 1138 schrieb:

    Jetzt mal ne blöde Frage: GPU und CPU laufen doch beide mit Maschinencode, was hat die Sprache damit zu tun? Oder warum ist bei der CPU Java "langsamer" und bei der GPU nicht? Scheint mir irgendwie nicht logisch.. 😕
    Oder wird der Graphikcode direkt übersetzt und der Rest läuft in der VM?

    Java spricht nicht direkt die Grafikkarte an, sondern nutzt zum Beispiel OpenGL als Schicht zwischen Grafikkarte und Java. Insofern ist der einzige Performancenachteil, den man da hat, dass man zu OGL hin eine Schnittstelle zwischen Java und nativem Code braucht. Normalerweise ist das aber nicht der Flaschenhals im Programm. Zumindest nicht, wenn man etwas darauf achtet, das nicht zum Flaschenhals zu machen.



  • um spiele zu programmieren wirst du um C++ nicht herumkommen weil,
    - c : effizienter, aber bei größeren Projekten zu unübersichtlich
    - C# und Java einfach zu langsam sind


Anmelden zum Antworten