Minecraft aus programmiertechnischer Sicht

Crysis nerd

Freizeitschrauber(in)
Ich wollt mal eure Meinung zu Minecraft hören. Nicht über das Gameplay, sondern als Programmierer gesehen.
Also ich kenne mich nicht mit Java aus, und ich möchte die Sprache auch nicht runtermachen, aber wie ich das sehe, verschwendet der gute Notch(hauptsächlicher Programmierer) extrem viel Leistung.
Einmal das Generieren des Terrains: Es kostet bestimmt ne Menge Leistung, aber auch hier denke ich, dass die selben Algorithmen in C++ schneller wären, bzw optimierte Algos möglich sind.
Rendern: Minecraft laggt auf manchen Notebooks und dass kan ja wohl nicht sein. Die Anzahl der Polys entsprechen vllt. denen einer Figur in einem heutigen 3D Spiel und die Summe aller Texturen ist wohl kleiner als eine Textur bei Crysis.

Außerdem glaube ich irgendwie, dass Notch irgendwie "schlecht" ist. Ich weiß, wer im Schlachthaus sitzt, sollte nicht mit Schweinen werfen, aber:
Er braucht für kleine Features extrem lange und baut so viele unverständliche Bugs ein. Er bzw sein ganzes Team.

Was meint ihr zu dem Spiel und zu meiner Meinung zu dem Spiel? :P

mfg
Crysis nerd
 
Ich finde es jedenfalls erstaunlich, was er da geschaffen hat (auch wenn mich das Spiel nicht interessiert :ugly:). Klar, Java ist vermutlich nicht die beste Wahl als Programmiersprache (wobei "beste" immer mit Vorsicht zu genießen ist), aber trotzdem. Ich meine mich auch zu erinnern, der hat vorher bereits an einem im Java geschriebenen MMORPG mitgearbeitet, vermutlich kommt die Wahl daher. Ich würde Java jetzt auch grundsätzlich nicht als ungeeignet einstufen. Den einzigen Teil, den ich bei Java wirklich als problematisch sehen würde, ist halt die Grafikausgabe. Da fehlt es wirklich an der schnellen nativen Unterstützung. Von der Grundperformance her ist Java in den letzten Jahren jedenfalls immer schneller geworden, der Abstand zu "nativen" Sprachen hat sich ergo auch weiter verkleinert. Je nach Benchmark liegt mal die eine, mal die andere vorne.
 
Naja, mich nervt es auch mehr oder weniger. Ich spiele auf dem Mainserver vom cube-network. Dort hängen im großen Kaufhaus ein paar Dutzend Fackeln, die ein statisches Licht abgeben. Ohne flackern oder ähnliches, einfach ein statisches Licht. Und naja .. egal ob mit meinem Desktop Rechner a 3GHz Quad + AMD 4890 Vapor-X 1024MB Raid 0 oder am neuen Notebook 2 x 2,93 GHz mit AMD 6550 1024MB + SSD .. die Framerate geht wenn ich dort drinstehe auf beiden Systemen unter die 20 FPS. Allgemein werden beide Systeme extrem laut und heiss bei dem Game. Auch wenn man meint dass es nicht rechenaufwändiger als ein SNES Super Mario ist (jetzt übertrieben ausgedrückt), braucht es doch unglaublich viel Performance, was auf Dauer schon nervt. Grade in Anbetracht dessen, dass das Spiel nahezu 0 Soundkulisse bietet auf die man sich konzentrieren kann (ausser diese Träumermusik für 30 sek alle 10 Minuten und die brechenden Blöcke), ist dass einzige was man wirklich wahrnimmt wie die Graka unglaublich übertrieben vor sich hinpustet ...
 
Also ich finde nur eines erstaunlich: Die Generierung von Gelände, die sicher weitreichende Überlegungen voraussetz und wofür der Algo sicher sehr komplex ist.. Trotzdem...
Wie gesagt, zum einen die schlechte performance und zum andere die scheinbar langsame und schlechte programmierung.

Habs gerade mal ausprobiert: Ja nur einen kern, aber das bringt uns ja nichts. Minecraft muss mit einem Kern klarkommen! Der Code muss optimiert und die Sprache eventuell gewechselt werden.
Irgendwie fail: "energie spar modus" bei minecraft limitiert die framerate scheinbar einfach auf 25 oder so^^
 
Also mich als "nicht-Programmierer" nervt es auch ein bisschen, dass das Spiel soviele Resourcen frisst. Das hätte man sicher besser machen können. Doch wenn man bedenkt, dass das Spiel nur von einer kleinen Gruppe programiert wurde, dann ist das zu vernachlässigen. Von der Programmierung kann es mit größeren Spielen nicht mithalten - wie auch, aber vom Spielprinzip her ist es echt Klasse.
 
Für die Grafikausgabe wird JavaGL (oder so) benutzt, ohne Grafikkarte/Treiber verschlechtert sich die Performance noch weiter. Ich würde behaupten, dass man einen Software-Renderer bauen könnte, der Minecraft rein auf der CPU flüssiger darstellt als es Java mit OpenGL schafft.

PS: Ich habe bisher unter Linux auf den freien radeon-Treiber gesetzt, für Minecraft muss es aber tatsächlich der offizielle von AMD sein.
 
dass die selben Algorithmen in C++ schneller wären, bzw optimierte Algos möglich sind.

Generell gebe ich dir recht: Java ist langsam, Resourcenfressend und sollte nicht für Spiele verwendet werden... Allerdings versuch mal, Minecraft auf C++ Basis zu entwickeln und dann für alle gewünschten Systeme zu veröffentlichen... Da haste kein Spaß dran, daher kann ich die Entscheidung dieses ehemaligen Hobby-Entwicklers schon verstehen.....
 
@bbcsb: War es denn von Anfang an sein Plan für alle System etwas zu entwickeln? Da bin ich mir nich sicher. Die Sache für Ipad etc kam ja jetzt auch erst vor kurzer Zeit. Und ihr kennt alle das Ibash Zitat: "Zu sagen Java wäre besser, weil systemunabhängig ist, wäre so als würde man sagen, Analsex ist besser, weil es Geschlechterunabhängig ist" ;)
Naja, meine Meinung. Ich würd das Spiel gern in C++ sehen.

@Leandros: Wie kann man sich bei Java decompilieren vorstellen? Bei C++ endet das ja mit Glück maximal in Assemblerbefehlen. Kriegt man bei Java den exacten Source wieder raus?
Wenn ja: willst du uns bzw mir mal schicken :P
Ich bin nich so die Bombe in Java, von daher kann ich wohl schlecht beurteilen, ob das gut programmiert ist (vom Stil her). Außerdem bin ich auch kein Optimierungsexperte, also kann ich auch den Aspekt schlecht beurteilen. Trotzdem glaub ich nich, dass dieses Spiel so viel Resourcen fressen müsste, wie es tut.
EDIT: Lass mal Projekt unter uns hier starten, Minecraft komplett in C++ umzusetzen :D

mfg
 
Es gibt schon einige Minecraft-Likes und -Klone, zusätzlich natürlich auch alternative Server. An Klonen wären da u.a. Manic Digger (C#) und Minetest-c55 (C++, Irrlicht-Engine).

Wär doch aber trotzdem cool, wenn man es selber gemacht hätte :D
Dann kann man selber entscheiden, was wie funktioniert etc.

(Außerdem könnte man da dann mal ne KI* einbauen und sich damit beschäftigen )

*Verweis auf nen anderen Thread ;)
 
Also ich fänds auch cool, es selber zu machen, aber es geht einfach nich. Selbst wenn wir hier 3 Leute zusammenkriegen.. glaub ich nich das es klappen würde. und ich denke hier hat nich wirklich jemand Lust dadrauf oder?
Aber Notch wollte für entwickler den quellcode veröffentlichen.. ka ob ers schon getan hat.

Bin hier gerade wieder am verzweifeln iwelche Mods zu installieren. Minecraft wird einfahc nur verdammt instabil und stürtz dauernd ab.
 
@bbcsb: War es denn von Anfang an sein Plan für alle System etwas zu entwickeln? Da bin ich mir nich sicher. Die Sache für Ipad etc kam ja jetzt auch erst vor kurzer Zeit. Und ihr kennt alle das Ibash Zitat: "Zu sagen Java wäre besser, weil systemunabhängig ist, wäre so als würde man sagen, Analsex ist besser, weil es Geschlechterunabhängig ist" ;)
Naja, meine Meinung. Ich würd das Spiel gern in C++ sehen.

Ich hoffe mal, obwohl man ihn das natürlich selbst Fragen müsste, ansonsten sehe ich ehrlich gesagt keinen Grund Java überhaupt zu verwenden... Besser ist es nämlich in keinem Fall, egal wo, egal wie :)
 
Ich wollte ja nicht sagen, dass ihr einfach die Klone verwenden sollt. Es wäre aber vielleicht eine Überlegung wert daran mitzuwirken. Zumindest Minetest-c55 ist definitiv FLOSS.
 
Ich wollte ja nicht sagen, dass ihr einfach die Klone verwenden sollt. Es wäre aber vielleicht eine Überlegung wert daran mitzuwirken. Zumindest Minetest-c55 ist definitiv FLOSS.
FLOSS? Das Freelibre open source bla, was man über google findet?
Ich hab die malausprobiert.. Naja find ich nich so dolle. Und frisst immer noch einiges an Leistung, bei langsameren Landschaften generieren...
Bin aber echt mal gespannt aufn Source, wenn er veröffentlich wird..
 
Interessantes Thema hier :)

Ich bin ehrlich gesagt jmd. der total gegen Java ist. (obwohl ich im Studium noch was für embedded Systems programmieren muss und dafür Java brauche :schief:)
Trotzdem, Java ist nunmal eine Interpretersprache und das ist letztendlich nunmal nicht so das wahre.

Notch wird Java genutzt haben, weil er es 1. kann und 2. sich bestimmt nie erträumen lassen hat, dass sein Projekt so riesig wird. Sowas plant man ja nicht einfach wenn man das als Hobby anfängt.
Auf einer C basierten Sprache zu setzen würde Minecraft sicher nicht schaden - vorallem da die Grafikausgabe mit Java mal nicht so pralle ist aber das hatte ja Bauer87 schon erwähnt.

Es wäre schon cool mal ein eigenes Spiel zu programmieren (wo ich im übrigen auch etwas dabei bin bzw. eher an der 3D Engine (C++ & OpenGL)) aber alleine ist das eine sehr zeitaufwendige Sache - zumal wenn man das nur ab und zu in der Freizeit macht.
Für manche Algorithmen muss man sich echt erstmal 2 Stunden mit Mathe beschäftigen und schreibt den Code dann in 10 Minuten :ugly:
 
Zurück