Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nimelrian

Alter Hase

  • »Nimelrian« ist der Autor dieses Themas

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

1

21.10.2014, 13:07

[Game-Entwicklung in Java]Der Entwickler von Optifine (Minecraft Mod zur Verbesserung der Performance) verzweifelt beim Anblick des neuen Codes in Minecraft

Link zum Post (leider kein https...)

Ein paar Money-Quotes:

Zitat

Maybe the biggest and the ugliest problem is the memory allocation. Currently the game allocates (and throws away immediately) 50 MB/sec when standing still and up to 200 MB/sec when moving. That is just crazy.

Zitat

[...]
5. Why is 1.8 allocating so much memory?
This is the best part - over 90% of the memory allocation is not needed at all. Most of the memory is probably allocated to make the life of the developers easier.
- There are huge amounts of objects which are allocated and discarded milliseconds later.
- All internal methods which used parameters (x, y, z) are now converted to one parameter (BlockPos) which is immutable. So if you need to check another position around the current one you have to allocate a new BlockPos or invent some object cache which will probaby be slower. This alone is a huge memory waste.
[...]

Zitat

The general trend is that the developers do not care that much about memory allocation and use "best industry practices" without understanding the consequences. The standard reasoning being "immutables are good", "allocating new memory is faster than caching", "the garbage collector is so good these days" and so on.

Stimmen von Minecraft Devs auf Reddit:
TheMogMiner

Zitat

Games can be either fast or extensible, pick one. I'll let you knife-fight it out with the ones demanding a plugin API.
mojang_tommo, als Antwort auf den oberen Post

Zitat

Well, there has been a big movement lately about zero-cost abstractions (see Rust or C++11) that aim to have the cake and eat it too, but in Java yep you can either have slow code or ugly code, mainly because someone in 1994 decided that the stack wasn't worth using and that ignoring that memory exists was a good idea.
Also, "zero cost" abstractions usually imply increased developer effort anyway.
(Hervorhebung von mir)

tl;dr: Es ist keine gute Idee, eine Klasse immutable zu machen, wenn diese häufig in sich nur wenig unterscheidenden Objekten neu instanziert wird. Allgemein ist es nicht wirklich performancefördernd, im Gameloop Speicher immer wieder zu reservieren und dann im selben Cycle wieder wegzuwerfen. Erst recht nicht in Java.

Zusätzliche interessante Links:

Diskussion auf /r/minecraft und /r/programming. Auf /r/minecraft besonders interessant, die kurze Diskussion zwischen Modder und Mojang-Dev, inklusive Code
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

21.10.2014, 13:23

Ein Pluspunkt für C# *duck und wegrenn*

Eigentlich sind immutable Objekte schon eine feine Sache und auch einzelne Koordinaten zusammenfassen ebenfalls. Aber das in Java öfter darauf verzichten wird aus den genannten Gründen ist meiner Meinung nach bekannt.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

21.10.2014, 13:45

Genau aus diesem Grund bekommt man unter Android sogar Warnungen, wenn man innerhalb von performance-kritischen Methoden (z.B. onDraw) neue Objekte allokiert statt dies einmal zu tun und deren Werte für den aktuellen Draw-Lauf anzupassen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

4

21.10.2014, 13:58

Spannend. Ich hab schon immer gesagt Minecraft ist nicht gut programmiert. Schön das mal schwarz auf weiß zu sehen. Umso interessanter ist die Tatsache, dass Microsoft die ganze Sache für 2,5 Milliarden gekauft hat. Mir ist zwar absolut klar, dass es dabei um die Marke Mojang bzw. Minecraft geht und nicht um die Software selbst, jedoch ist es als Entwickler schon ein ganz schöner Tritt in die Eier, dass solche Software sich für so viel Geld verkaufen lässt.
Liebe Grüße,
René

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

21.10.2014, 14:03

Viel teure Software ist furchtbar schlecht geschrieben. Der Wert der Software (nicht die [Produktions-]Kosten!) bestimmt sind lediglich durch die Nachfrage durch die User. Nichts anderes.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

6

21.10.2014, 14:27

Ich werfe die Frage mal einfach in den Raum:

Minecraft hat ja jetzt tatsächlich einen riesen Haufen Geld bekommen, von dem ich mir sicher bin, dass einiges davon lediglich als ungebrauchtes Kapital rumliegt.
Ist es für eine solche Firma die Investition Wert, die komplette Codebasis über den Haufen zu werfen und das Ganze von Neuem zu beginnen?

Ich beschäftige mich schon länger nicht mehr mit Minecraft aber ich hab das Gefühl, dass die größte Verbesserung, die aussteht, eine technische ist.

Aber wäre sowas überhaupt, auf irgendeine Art und Weise, praktikabel?
WIP Website: kevinheese.de

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

21.10.2014, 14:30

Ist es für eine solche Firma die Investition Wert, die komplette Codebasis über den Haufen zu werfen und das Ganze von Neuem zu beginnen?
Eher nicht. Mit Minecraft 2.0 macht es vielleicht Sinn, wobei ich nicht sehe, wie ein Nachfolger dazu aussehen könnte, Clones gibt es ja eh schon hunderte.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

8

21.10.2014, 14:49

Das Problem am neu Anfangen, egal ob direkt eine Sprache mit besserer Speicherverwaltung verwendet werden würde, ist, dass dann Modifikationen, seien sie Client- oder Serverseitig, nicht mehr zu gebrauchen wären. Ich hoffe man kann sich an dieser Stelle denken, was die Folgen wären. ;)

Mal abgesehen davon, dass es doch läuft, warum sollte man also etwas daran ändern? ;D
Mal abgesehen davon: es läuft doch, warum also etwas daran ändern? ;D
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sacaldur« (21.10.2014, 15:33)


KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

9

21.10.2014, 14:52

Naja, es ist ja nicht das erste Mal, dass solche News aufkommen. Beschwerden über den Java Code gab es ja schon häufig!
WIP Website: kevinheese.de

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

10

21.10.2014, 15:21

Naja, es ist ja nicht das erste Mal, dass solche News aufkommen. Beschwerden über den Java Code gab es ja schon häufig!

Und? Dennoch gibt es bisher entsprechende Mods und es würde für jeden Mod-Entwickler einen großen Aufwand bedeuten, seine Modifikation an den neuen Source-Code anzupassen. Mal ganz abgesehen davon, was wäre, wenn auf eine andere Sprache gesetzt werden würde.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige