Comment by ben_w

1 day ago

> Users don't care what language or libraries you use. Users care only about functionality, right? But guess what? These two things are not independent. If you want to make something that starts instantly you can't use electron or java. You can't use bloated libraries. Because users do notice. All else equal users will absolutely choose the zippiest products.

Semi-dependent.

Default Java libraries being a piles upon piles of abstractions… those were, and for all I know still are, a performance hit.

But that didn't stop Mojang, amongst others. It can be written "fast", if you ignore all the stuff the standard library is set up for, if you think in low-level C-like manipulation of int arrays (not Integer the class, int the primitive type) rather than AbstractFactoryBean etc. — and keep going from there, with that attitude, because there's no "silver bullet" to software quality, no "one weird trick is all you need", software in (almost!) any language fast if you focus on doing that and refuse to accept solutions that are merely "ok" when we had DOOM running in real time with software rendering in the 90s on things less powerful than the microcontroller in your USB-C power supply[0] or HDMI dongle[1].

[0] http://www.righto.com/2015/11/macbook-charger-teardown-surpr...

[1] https://www.tomshardware.com/video-games/doom-runs-on-an-app...

Of course, these days you can't run applets in a browser plugin (except via a JavaScript abstraction layer :P), but a similar thing is true with the JavaScript language, though here the trick is to ignore all the de-facto "standard" JS libraries like jQuery or React and limit yourself to the basics, hence the joke-not-joke: https://vanilla-js.com

> But that didn't stop Mojang, amongst others

Stop them from... Making one of the most notoriously slow and bloated video game ever? Like, just look at the amount of results for "Minecraft" "slow"

  • > Like, just look at the amount of results for "Minecraft" "slow"

    My niece was playing it just fine on a decade-old Mac mini. I've played it a bit on a Raspberry Pi.

    The sales figures suggest my nice's experience is fairly typical, and things such as you quote are more like the typical noise that accompanies all things done in public — people complaining about performance is something which every video game gets. Sometimes the performance even becomes the butt of a comic strips' joke.

    If Java automatically causing low performance, neither my niece's old desktop nor my Pi would have been able to run it.

    If you get me ranting on the topic: Why does BG3 take longer to load a saved game file than my 1997 Performa 5200 took to cold boot? Likewise Civ VI, on large maps?

    • > I've played it a bit on a Raspberry Pi.

      I actually tried it in a pi literally a few days agod (came across an older pi which had it preinstalled) and it's pretty much unplayable

      > Why does BG3 take longer to load a saved game file than my 1997 Performa 5200 took to cold boot? Likewise Civ V, on large maps?

      I believe there should be the possibility for legal customer complaints when this happen just like I can file a complaint if I buy a microwave and it takes 2 minutes to start

      1 reply →

  • > one of the most notoriously slow and bloated video game ever?

    I like how you conveniently focus on that aspect and not how that didn't prevent it from being one of the biggest video game hit of all time.

    Those two can be true at the same time. And that's one thing that a lot of technical people don't get. Slow is generally bad. But you cannot take it out of context. Slow can mean different things to different people, and slow can be circumvented by strategies that do not involve "making the code run faster".

  • The fact that it was later bought by Microsoft (and rewritten in C++ so it can run on consoles[1]) is not relevant to the argument that you can, in fact, write a successful and performant game in Java, if you know how.

    [1] My source is just comments in HN.

    • I’m sure the C++ version is more performant, but that doesn’t strictly mean it was ported for performance. Is there even a JVM on those consoles? I suspect the answer is no and it was easier to remake in C++ than to port OpenJdk to the Xbox 360.

  • Are we talking modded? Cause Vanilla minecraft runs on a potato, especially if the device is connecting to a server (aka doesn't have to do the server-side updates itself).

  • Runs fine on an essentially single threaded 7350k with a 1050ti I built 8-9 years ago.

    The server runs on a single thread on a NUC, too.

Microsoft rewrote Minecraft in C++, so maybe not the best example?