i love that in block game i'm agonizing about giving a stick a few more triangles when meanwhile minecraft is over here like "we're going to render dropped items using a 16x16 grid of tiny cubes :)"

i dunno if this has changed but last i checked every item slot in minecraft's GUI was also rendering one of these 3D items except that they're rotated so they look like 2D images and as far as i know there's no caching going on

meanwhile block game just caches 2d images to use as an icon for every item in the game at startup because uhh, hello?? why wouldn't you do that???

before i started block game there were lots of things in minecraft that made me go "that's weird why wouldn't they do it this better way? i guess the microsoft funded multi billion dollar studio must have a good reason for it"

and now that i've been making block game i am starting to strongly suspect they do not, in fact, have a good reason for it

and you can make the argument that gpus are real powerful now, so what's the point in saving a few triangles?

meanwhile my 2012 laptop that ran minecraft great 10 years ago can basically no longer run it at playable framerates

this is why i wanna make block game run on old computers. because people are poor, squirtle

(also lower power draw hardware is a thing for desktops now and that hardware ain't all that powerful)

and i'm not just saying "other people are poor"

i used that 2012 laptop for over a year, through 2021, because my desktop fried itself and i didn't have enough money to replace it

i've been poor. and poor people deserve to enjoy games too

speaking of which, block game with a render distance of 6 chunks looking at the ground with the inventory open seems to render at like 240fps on my workstation right now so i feel like i'm doing ok on that front
actually come to think of it when his new laptop died @Njord also had to use that 2012 laptop for a year, until kitsune tails came out in august 2024
@eniko @Njord i will say that the time i used to play minecraft eons ago was when i had the worse spec pc and would have love for the game to run better without needing to install mods to optimize the game, it probably why they don't bother, they use the Bethesda tactic of relying on the community to fix basic stuff. The main reason i could see if that manager don't care about the "little" stuff like that because the only noticeable thing when they want to show how good they are at managing are the big visual stuff like adding new thing, fixing technical debt is never done
@eniko I told a friend about block game specifically because you've been using a potato computer, 'cause their computing situation isn't super whizbang right now either.
@eniko Just saying, for years I have been using desktops which were "hand me downs" or bought cheaply used ones. The one I have now is my second I've bought a brand new. The first one I've used for 12 years, and I've been forced to replace it, because games I was playing started being compiled with the instruction set my CPU did not support. The one I've now is 8 years old now, and I hope to use it for another 4 at least.

@eniko I bought my first ever new pc in 2011 precisely because it was actually worth doing that for the first time in my life

Okay sure, I had more money then than ever (a dizzying 3 grand for a few weeks), but also, prior to that it just wouldn't have been worth it for something that would become outmoded in a few years (and non-corporate games were way thinner on the ground)

I used that computer until 2021

For a while I ran my column on a four year old, refurbished £150 laptop

@sinvega yeah that's the other thing like

you can buy a laptop now for 300 euros without a windows install with ok RAM and storage and a cpu/gpu that will do anything you need except play high end games

and like, that's the only pc a lot of people have now so why wouldn't i wanna make my game run on that?

@eniko there's really just been no discernible improvement in GRAFFIX for like 15 years. "It lets you brute force through horrible optimisation" is not the convincing argument it is sometimes presented as
@eniko @sinvega my desktop is a $300 mini PC, it struggled with Deathloop and Invincible (and they looked like crap). My laptop (and partner’s too) are at least a few years old and have chassis and/or screen damage.
I really miss the old days, when getting a cheap computer a decade after a game came out would play it blazing fast. I vividly recall playing System Shock 2 (in software rendering) on a netbook and it was fine.
@eniko @sinvega actually, this just reminds me that I should be mad that current low-end machines are so slow with a current mainstream OS on them. My kid’s Celeron should fly. Computers from a quarter century ago were fast, and this thing is literally no worse in hardware terms, but it crawls.
@eniko Poor is default.
@yora certainly in the circles i travel
@eniko Bless! The lack of optimisation is so frustrating. I had a laptop for travel that played games just fine. I pulled it out a few years later and the exact same games that ran fine a couple years prior were struggling to get 10fps.
@eniko i'm typing this on a 4-core 2017 laptop so i absolutely appreciate this consideration! it's been shocking how the system requirements of Minecraft have ballooned since launch
@eniko remembering that line about wanting to play smaller games with worse graphics and being totally serious about it, or however that line went
@eniko Looking at my recently played games, none of them are even in 3D.
@eniko "hardware is fast" is a surprisingly common take that i think gets used incorrectly as an excuse to be lazy about performance

@eniko

Feeling all superior here with my shiny new 2016 laptop that's only missing an F12 key

@gbargoud hey folks look, we've got a big shot over here!

@eniko

It's not even about money. It's about "it works perfectly fine why would I get a new one?"

@gbargoud i agree

@eniko

Anyway thanks for making a game that I know will work on it because I do miss minecraft but the last times I played it my laptop screamed at me and then Mojang/Microsoft did that account migration thing that I didn't bother with and I'm definitely not buying it again

@eniko my point is always that wasting energy is never a good thing - even if everyone could afford to
@eniko low heat generation from the hardware is underrated too, but its something I always appreciate.
@Leviamicky yeah. i live in a hot place so i have to pay to mitigate that heat
@eniko I would think in 2025 "just throw more powerful hardware/higher power use at it" should be an obviously bad approach, but then some people will still not understand that.
@eniko our old graphics card broke right before the crypto hype drove prices to record highs and made two generation old cards be more expensive than they were at release. for a while we used really shitty old integrated graphics and when eventually our motherboard broke too we decided to just get a newer AMD APU rather than buy a new graphics card. the last few generations of these are quite powerful compared to what we had in the past, but they still definitely benefit from compute resources not being used wastefully.
@elexia yeah i have an integrated AMD gpu on my current hardware too. because electricity is expensive and heat requires AC since i live somewhere hot and is also expensive
@eniko that's commendable!!

@eniko It might sound dumb to way this, but thank you so much for understanding this... Especially nowadays with off-the-shelf engines it seems like no one cares about optimization anymore. After all, what gamer doesn't have at least an RTX2060?

As someone who's grown up on budget, outdated PCs (and whose most powerful GPU currently is from 10 years ago) it always makes me really happy to see devs taking optimization seriously.

Looking forward to Block Game :)

@eniko I approve of this.
@eniko were you looking at bedrock or java ...?
@YinYinFalcon if im talking about minecraft its always java

@eniko @YinYinFalcon most of bedrock is just java code copypasted, translated as is as to c++, with all the same issues. that was at the beginning though, and since everything diverged

fun fact, old bedrock server versions had debug info, so for a fair few we basically have the entire source c++ code, which is how we know it was done this way

@eniko in that case I'd place it all at mojangs feet, still

unless my impression that all microsoft really does is copy everything to the bedrock remake (often producing logical mistakes/silly design differences) and staying hands off on java production is no longer true

@eniko “notch is a dumbass” as a design aesthetic
@eniko The answer for "why wouldn't they do it this better way?" is simple. There was no business need to do that.

@eniko I think this is a common thing! Developing software at scale necessitates streamlining, and the best way to streamline is to commodify the software process: remove custom code, cleverness, optimisation tricks, etc. and just rely more on brute force / volume when it's even slightly cost effective to do so.

Most for-profit software is unimaginably bad in ways you can only begin to imagine that just wouldn't fly if developed by individuals or in community settings.

@jsbarretto yeah. im pretty sure they just did this so that they have one render path where everything is a 3d model, whether its a 2d item or a block rendered in the inventory. all standardized, no exceptions, no complications in the content pipeline, much easier to avoid bugs when adding new stuff

and that's why my old laptop can't run minecraft anymore

@eniko Would not be surprised at all! I don't want to make too many assumptions about Minecraft's team in particular, but in a modern gamedev house, almost nobody has the sort of 'birds-eye' view and authority to make a decision like "hey, lets spin up an alternative render pipeline to make this one thing slightly faster" because doing so necessitates communication with so many people, and communication is highly expensive.
@eniko You know how an O(K^N) algorithm is fine if N is really small but murders your entire game if it jumps even a little bit? Well, communication between humans has similar algorithmic complexity. It's why small teams of clever people that care about their work will always be the ones to break the ice and do something innovative, clever, or outside established workflows.

@jsbarretto yeah

on the other hand, in block game i've decided that every item is a 3d model, and ergo on startup i just render them once and then cache them as an icon

and i just use the icon to render the item. so it's not like this is *actually* noticably more complex for anyone involved (leaving aside that obviously it's just me atm)

@eniko We do something very similar, although in our case we end up using software rendering to generate the icon: no need to dispatch a thousand tiny GPU events (surprisingly, this overhead does end up mattering soon after startup when nothing is in cache so every frame you're needing to do a tonne of extra irregular work).
@jsbarretto that's very interesting. what do you use for software rendering?

@eniko So... as luck would have it, I ended up writing a software rendering library a few years ago as a weekend learning project. I was already familiar with the API (because I'd built it, ofc), and it was 10x simpler to integrate than actually telling the GPU to do something, so I just threw it in: https://github.com/zesterer/euc

Before that we only had extremely simple top-down icon images, but now we have nice isometric renderings of tools, armour, food, etc. that look much nicer.

GitHub - zesterer/euc: A software rendering crate that lets you write shaders with Rust

A software rendering crate that lets you write shaders with Rust - zesterer/euc

GitHub
@eniko Laziness is a superpower
@eniko Out of interest, how many items do you plan to have in block game? Might change whether your strategy is 'pre-render' or 'cache on the fly'
@jsbarretto dunno, to be honest. probably a lot. we'll see how things shake out, i can always switch later
@eniko I look forward to seeing the updates!
@eniko @jsbarretto even minecraft is < 2k items, which isn't so bad to blast through and render into a big texture. especially if you do it asynchronously with the rest of loading. i think it only starts to get real tricky if you have combinatorial variations.

@jsbarretto @eniko “Don’t fix what isn’t broken” is a pervasive cancer in the tech world, because it doesn’t generate immediately visible value for customers. Unfortunately, while the foundation isn’t “broken”, it’s being slowly devoured by carpenter ants, and management refuses to handle or even acknowledge the issue.

(Not that I’m bitter about it or anything 😅)

@eniko @jsbarretto Even with optimization mods, my laptop of bout the same vintage can barely manage a dozen-ish fps for Minecraft, and I was sure this didn’t used to be the case, so I’m glad it’s not just me! I thought I might just be misremembering!
@jsbarretto @eniko sometimes it's like that, but sometimes it's more that you have a "cleverness budget", and if you spend your cleverness budget on something which doesn't improve outcomes, then it's kinda a waste. brute force is often *faster* than clever, due to realities of hardware and compilers. (which isn't to say that's the case here, my gut feeling is that on anything moderately new it's not going to make much of a difference, but idk how well old gma hw deals with dynamic viewports)
@dotstdy @eniko For sure! Modern GPUs are hella fast at dispatching small triangles and I'm sure there are vanishingly few workloads where the difference is even noticeable. You're entirely right that you've got to pick your battles. Not trying to besmirch the Minecraft team for this or anything: there're plenty of places in @veloren where we've shrugged our shoulders & have said 'good enough'. Just trying to provide an explanation for why this sort of thing happens even in teams of clever folk.
@jsbarretto @eniko Yeha, I think in minecraft's case they're also pretty constrained by mods in the java edition, and that nobody wants to use bedrock for various reasons. Somebody seems to have had the grand plan that they'd migrate over to bedrock and everything would be happy times, and then obviously enough that didn't work.
@dotstdy @eniko Once you've got that much technical, social, and community debt (mods), a migration is never going to work out well. Migrating just one of my open source libs to a rewrite with only a few hundred users at the time was a years-long task...