5 ms·
This probably does not qualify as "popular game", but talking about Java games I'd like to mention Terasology (https://github.com/MovingBlocks/Terasology https:
by gntheprogrammer 9y ago
This probably does not qualify as "popular game", but talking about Java games I'd like to mention Terasology (https://github.com/MovingBlocks/Terasology https://github.com/MovingBlocks/Terasology). It's an open source voxel game (Minecraft-like) and the LWJGL-based graphics engine looks very impressive to me (some screenshots here: http://terasology.org/gallery.html http://terasology.org/gallery.html).
- aaron-lebo 9y agoIt also performs horribly on a modern Windows PC with a 1070 (wanting to make sure I'm not slandering the game, just double checked with reduced settings, still barely runs). That performance (along with Mincraft's) convinced me personally the JVM isn't a place you want to build a game like that.
- ecshafer 9y agoJava, not the jvm may be the issue here. Look at the X10 language for example, which focuses more on array, parallel and numerical performance, but is on the jvm. The issue with Java for voxels is that Java does not have fortran arrays. It because nested objects, so that will give a lot of performance hits for a game built entirely on ndimensional arrays.
- benjaminjackman 9y agoThat's pretty true for stuff like that you want to use sideways arrays typically, where you decompose the fields in your object to each be in their own array (and sometimes recursively if the fields are themselves objects). With that and avoiding allocation (aka cache invalidation / garbage generation) at all costs you can get things fast.
- usrusr 9y agoThe java ecosystem offers annotation driven bytecode mangling/generation tools for all kinds of stuff, is there something for "sideways arrays"? The compiler plugin model used by immutables.org (generate a bunch of implementations for the fields implied by an interface) could hopefully make that relatively painless to work with.
- pjmlp 9y agoIt has more to do with the quality of the programmers than with Java. Actually Java and the JVM are the heroes here, because the guys that took over after Notch, just wrote shitty code allocating several hundred MB per second on the game loop. Also the majority of Mincraft plugins are written by kids, whose understanding about how to write game code is nonexistent.
- eropple 9y agoYup. You can write very, very tight code without too much work using Java (I mean, look at financial companies). The programmers working on Minecraft, including Notch, were grinders, and it shows. That's not a criticism of the product; they shipped. But they never really dug out of that hole.
- flukus 9y agoYou don't think it has anything to do with the abstraction and indirection levels that java operates at? Where are these well coded java games that look like something from this decade?
- pjmlp 9y agoGood Java programmers are better payed to write High Performance Trading systems, than working on games with their low salaries and crazy schedules. Yes, there are some performance issues regarding lack of value types, but not every single game is going to be the next Crysis. Yet it appears by some in the game community that if language X cannot be used for doing Crysis than it is not worth it, let alone that most likely they will never finish their game. Unity's runtime is a fossilized version of Mono, with much more performance issues than OpenJDK, yet indies flock to them. Only because they are deeply committed "to all or nothing", in what concerns advancing the status of doing game development in .NET. Since they created their own AOT compiler (IL2CPP) they have even started to port sub-components from C++ to C#.
- jimmcslim 9y agoUnity 2017.1 includes an updated version of Mono supporting .NET 4.6. Still experimental at the moment, but coming out of the deep freeze that it has been in for a while.
- maeln 9y agoThe main reason for those game very poor performance is mainly that they rolled out their own 3d engine. Having programmed several 3d engine, I can say it's really simple to program a 3d engine but it's really hard and time consuming to program one that has reasonnable performance. Minecraft was especially bad because it used very old version of OpenGL (the 1.5 - 2.0 OpenGL with fixed pipeline) which is really not adapted to modern GPU.