Thema geschlossen
Seite 1 von 18 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 176
  1. #1
    Team BroFist
    Registriert seit
    16.04.2012
    Beiträge
    8

    Minecraft in C++ = hardwaresparender?

    Hallo miteinander,

    die SuchFunktion habe ich benutzt und nichts gefunden. Entschuldigt bitte, wenn ich etwas übersehen habe. Gut, da dies nun geklärt wäre, hier zu meinem eigentlichen Anliegen:

    Ich hatte vor ein paar Tagen irgendwo in den weiten des Internets gelesen, das Notch Minecraft wohl hätte besser in C/C++ programmieren sollen. Da es dann nicht so hardwarehungrig wäre (Java bräuchte wohl viel Rechenleistung für 3D, da es wohl besser geeignet ist für 2D stand da ebenfalls) und demzufolge auch auf (weit?) mehr Rechner laufen würde.
    Mich würde nun interessieren, ob dem auch tatsächlich so ist oder diese Behauptung nur aufgrund von Unwissenheit abgegeben wurde. Findet sich hier jemand mit entsprechendem Verständnis, welcher das untermauern oder widerlegen kann?

    Ich bedanke mich im Vorraus herzlichst und freue mich auf hoffentlich folgende Erkenntnisse.

    Und nein, mir geht es nicht darum hier eine grundlegende Diskussion starten zu wollen, ich möchte lediglich wissen ob diese Behauptung stimmt oder nicht!

    Wünsch euch was...

  2. #2
    Würde mich ehrlich gesagt auch mal interessieren. Weiß da jemand Bescheid?

    »Surrounding me is a picture of a world gone wrong.«
    While She Sleeps - Dead Behind The Eyes


  3. #3
    Also das ist zwar nicht so mein spezial Gebiet aber ich sags Trotzdem mal (Bitte Berichtigt mich wenn ich falsch bin )

    So C ist eig sparender.

    Aber ob Java nur für 2D Games gut ist ist mir fraglich...

  4. #4
    Natürlich wäre es ressourcenschonender bzw. Hardwareschonender.
    Java ist soweit ich gelesen habe mehr für Programm als für Spiele geeignet. Java ist eher für die Browsergames gedacht.
    Hab ich mal gelesen. Ich kann nichts bestätigen, würde aber auch wenn auf C/C++ umsteigen.
    PAWN wäre natürlich noch besser, aber PAWN ist nicht geeignet für soetwas. Bei PAWN würde ich nämlich noch teilweise mithalten können.

  5. #5
    Team Jung-Stuten
    Registriert seit
    10.10.2011
    Beiträge
    453
    Minecraft
    rtitan
    Zitat Zitat von VincentVegas Beitrag anzeigen
    Java bräuchte wohl viel Rechenleistung für 3D

    Könnte mir mal jemand da ein Beispiel nennen? MC braucht selbst maximal 256MB.

  6. #6
    Team Hund Avatar von frankweslar
    Registriert seit
    09.04.2011
    Beiträge
    1.552
    Minecraft
    frankweslar
    Sogar auf meinem Gammelrechner von 2006 (hab nur mal Grafikkarte erneuert) läuft Minecraft...

  7. #7
    Zitat Zitat von rtitan Beitrag anzeigen
    Könnte mir mal jemand da ein Beispiel nennen? MC braucht selbst maximal 256MB.
    was meinst du damit?? also ich hatte mal einen .minecraft ordner der 700mb gross war.
    wenn du den launcher meinst den man von minecraft.net runterlaedt, der is glaub ich 237kb gross also weit weniger.
    wenn du die RAM meinst, muss ich sagen, dass man selber festlegen kann, wie viel von java geschluckt wird!

  8. #8
    Bei Java wird natürlich mehr Leistung benötigt, da das Programm erst beim Ausführen auf dem PC von der JRE (Java Runtime Environment) in den Maschinen-Code übersetzt wird.
    Der Vorteil ist hier aber ganz klar, dass genau der gleiche Code auf unterschiedlichen Betriebssystemen, wie Windows, Linux oder Mac ohne Probleme Läuft.
    Bei C++ müsste das Spiel für jedes Betriebssystem einzeln Kompiliert werden.

  9. #9
    Team Hund
    Registriert seit
    29.04.2011
    Beiträge
    3.189
    Kompletter Schwachsinn.

    Zuerst einmal ist die Frage ob Minecraft in C++ performanter als in Java wäre, schonmal grundsätzlich nicht zu beantworten. Das liegt ganz einfach daran, dass die Performance immernoch weit mehr daran liegt, wie gut das Programm selbst ist und weit weniger an der Sprache ansich.

    Was man sagen kann, wenn man davon ausgeht, dass das Spiel in beiden Sprachen einigermaßen gleichgut implementiert ist:
    Java bringt einen gewissen Overhead beim Speicherverbraucht mit. Das liegt ganz einfach daran, dass die Java-Virtual-Machine selbst auch Speicher benötigt. Das heisst aber nicht, dass Java prozuentual gesehen mehr Speicher braucht, sondern eher einen (mehr oder weniger) fixen Offset.
    Beispiel: Ein Javaprogramm braucht 50MB mehr Speicher als ein vergleichbares C-Programm, egal ob das Programm selbst 5MB oder 500MB braucht.
    Rechenoperationen selbst, wie z.B. 3+5 (also was auf der CPU läuft) werden in Java und C++ nativ ausgeführt, ein Performanceunterschied ist dabei nichtmal messbar.
    Ausserdem abstrahiert Java die Hardware. Das kostet natürlich Performance, heisst aber nicht, dass Java da schlechter wäre als C. DirectX oder OpenGL ansich ist schon ein Abstraktion der Hardware und kostet damit Performance. Zudem kommt die 3D-Engine, die abstrahiert nochmals. Minecraft nutzt da lwjgl. Neuere Shooter nutzen die Cry-Engine, Unreal, oder irgendeine ID-Tech Engine.
    Warum abstrahiert man? Weil man sonst für jede Hardware extra programmieren müsste. Ohne DirectX/OpenGL würde das Spiel nur auf der Grafikkarte laufen, für die es entwickelt wurde, bestenfalls für die ganze Grafikkartengeneration. Ein Programm das direkt auf NVidia-Grafikkarten programmiert wäre, würde niemals mit einer AMD-Grafikkarte laufen.
    Java treibt das ganze noch einen Schritt weiter und entkoppelt sogar noch das Betriebssystem. Minecraft läuft auf Windows, Mac und Linux... mit dem selben Binary. Wäre Minecraft in C++ entwickelt, müssten extra Versionen für jede Platform angeboten werden. Wahrscheinlich müssten diese sogar noch entsprechende Anpassungen im Sourcecode haben. Damit wär es schon fraglich, ob es für Mac und Linux überhaupt passende Versionen geben würde.

    Zudem kommt, dass man in C++ viel leichter Fehler machen kann, als in Java, vorallem was Speicher betrifft. Da entstehen ganz schnell Lecks, die dann Speicher fressen, aber nichts nützen. Damit kehrt sich bei "schlechter" Programmierung der vermeintliche Speichervorteil von C++ sogar sehr schnell ins Gegenteil.

    Und zu Guter letzt: Minecraft wurde in C++ sogar schon nachprogrammiert. Das ganze nennt sich "minetest" und benutzt eine OpenSource 3D-Engine. Ich habs vor ca. einem halben Jahr mal ausprobiert und zumindest damals war die Performance unterirdisch.

    Fazit: Die Frage ansich ist sowieso nicht zu beantworten, abgesehen davon ist Java nicht wirklich langsamer als C++ (maximal im einstelligen Prozentbereich, und das auch nur bei gewissen Aktionen), und es hängt soviel von der Programmierung selbst ab, dass aus Performancegründen die Sprache selbst sowieso kaum mehr ins Gewicht fällt.


    Zitat Zitat von yxxy Beitrag anzeigen
    wenn du die RAM meinst, muss ich sagen, dass man selber festlegen kann, wie viel von java geschluckt wird!
    Das ist der Speicher, den Java nutzen DARF, nicht das, was Minecraft wirklich benötigt und auch belegt!!
    Wenn du "Minecraft" 2GB RAM fest zuweist, obwohl es nur 460MB braucht, bist du selbst schuld und solltest dich nachher nicht beschweren, dass Minecraft, bzw besser die Java-VM tatsächlich 2GB Speicher belegt.

    Zitat Zitat von das Keks Beitrag anzeigen
    Bei Java wird natürlich mehr Leistung benötigt, da das Programm erst beim Ausführen auf dem PC von der JRE (Java Runtime Environment) in den Maschinen-Code übersetzt wird.
    Das passiert spätestens, wenn der Code zum ersten mal ausgeführt wird, keinesfalls aber bei jeder Ausführung, danach liegt der fertig übersetzte Maschinencode ja schon vor.
    Das betrifft also höchstens die Ladezeit beim ersten ausführen, hat aber keinen Einfluss auf die Ausführungsgeschwindigkeit.
    Geändert von Buuuh (21.04.2012 um 20:36 Uhr)

  10. #10
    Team BroFist
    Registriert seit
    16.04.2012
    Beiträge
    8
    Herrlich. Ich muss mich bei Euch allen bedanken. Nun kann ich die ganze sache besser verstehen und genau darum ging es mir ja.



    Zitat Zitat von Buuuh Beitrag anzeigen
    Java treibt das ganze noch einen Schritt weiter und entkoppelt sogar noch das Betriebssystem. Minecraft läuft auf Windows, Mac und Linux... mit dem selben Binary.
    Verstehe ich das richtig, das somit jedes Gerät, welches Java "versteht" (ist das so richtig ausgedrückt und gibt es welche, die es nicht "verstehen"?) und hardwaremäßig in der Lage wäre, MC auch darauf laufen würde?

    Ein kleines Beispiel: Auf der PS3 konnte man ja bis zur Firmware-Version 3.21 (laut Wikipedia, ich weiß es bei meiner garnicht mehr muss ich gestehen...) Linux installieren. Hätte ich somit MC auf der PS3 spielen können?

    Unter dem Aspekt ist es doch eigentlich sogar löblich, das MC auf Java entwickelt wurde, weil somit doch -zumindest theoretisch- gewährleistet ist, das MC auch auf zukünftigen Betreibssystemen laufen würde, welche Java unterstützen (wenn ich das so richtig verstanden habe).

    ´ne feine Sache



    Zitat Zitat von Buuuh Beitrag anzeigen
    und es hängt soviel von der Programmierung selbst ab, dass aus Performancegründen die Sprache selbst sowieso kaum mehr ins Gewicht fällt.
    ...wieso hatte ich das nicht bedacht, wo es doch so logisch wie selbstverständlich ist. Danke für die Erinnerung


    Nochmals vielen Dank an alle für die Erkenntnisse.

Thema geschlossen