Terraria State of the Game - January 2023

Status
Not open for further replies.
While they do have reached a "limit" on liquids and paints, this has NOTHING to do with the engine. Consider, the engine doesn't have any inbuilt liquids or paints, it doesn't even have a concept of blocks or items inbuilt. All it does is provide a basic framework with an update and draw loop and graphics and i/o support.
The "limit" reached is due to the way Terraria stores blocks in a world, which i explained before in another post about paints, but here it is again: ReLogic has designated 5 bits of the storage to storing tile paint, which happen to be able to represent 2^5 = 32 different values and thus the game has 31 paints and a "no paint" value. Similarly, 2 bits were designated to store the liquid type of a block, which is able to store 2^2 = 4 values, one for each liquid that currently exists ("no liquid" is stored by setting the liquid amount to zero).
"Why not just use more bits for these?" you may ask, and the answer is that this would either explode the amount of memory used by the game (because there could be up to 8400*2400 = over 20 million tiles at once, so every byte matters), or degrade performance significantly due to complicated bit operations being necessary.

TLDR: "The engine" is mostly responsible for graphics capabilities such as shaders, and liquid types, paints, or trees, are developer-implemented features and not affected by graphics capabilities of the engine.

This also means that no, tModLoader doesn't have a better engine, they simply expand the block data storage. Sad to see people spread pure speculation as facts.
Wow, I did not know that, how you find that out?
 
Wow, I did not know that, how you find that out?
Just reverse engineering, however Cenx also once tweeted about this issue, mentioning a lack of bits, which is enough to conclude pretty much everything i have said without ever looking at the code.
 
Just reverse engineering, however Cenx also once tweeted about this issue, mentioning a lack of bits, which is enough to conclude pretty much everything i have said without ever looking at the code.
Huh ok, I was just amazed and wondering how you knew.
 
…and BITS are what is determined by the engine as to how many it has .
If you are thinking about 32/64 bit architectures, that unfortunately has nothing to do with it. The architecture pretty much only determines how big the accessible RAM address space is, which is why 32 bit applications cannot utilize more than 2^32 = ~4GiB of RAM, and how big the lowest level of storage units in the CPU (called registers) are. The registers are completely irrelevant however, because you can just use multiple of those to store bigger values, which is exactly what most programming languages (including the one used by Terraria) do to emulate 64 and larger numbers on 32 bit systems. If you don't believe me, you can read about the "long" integral type, which is always 64 bits big, in the C# language specification under section 8.3.6, or ask any other programmer with sufficient experience. You can also read about the Tile class in the tModLoader developer wiki: Tile Class Documentation.
 
If you are thinking about 32/64 bit architectures, that unfortunately has nothing to do with it. The architecture pretty much only determines how big the accessible RAM address space is, which is why 32 bit applications cannot utilize more than 2^32 = ~4GiB of RAM, and how big the lowest level of storage units in the CPU (called registers) are. The registers are completely irrelevant however, because you can just use multiple of those to store bigger values, which is exactly what most programming languages (including the one used by Terraria) do to emulate 64 and larger numbers on 32 bit systems. If you don't believe me, you can read about the "long" integral type, which is always 64 bits big, in the C# language specification under section 8.3.6, or ask any other programmer with sufficient experience. You can also read about the Tile class in the tModLoader developer wiki: Tile Class Documentation.
tmodloader is 64 bit and i think normal terraria is also 64 bit as of 1.4.4
 
@Kubiquity^3:
No, they could easily allocate more memory to Tile storage and store more paints and all, the only issue becomes memory usage, which increases drastically for every single byte added due to the large world size of 20 million tiles. They could also use some of the remaining scattered free bits, but that would go with a large performance penalty. Both options are bad, so the solution was to introduce a separate mechanic that resides in the remaining free bits without performance penalty.
None of this is related to the engine, architecture, or anything else, which is my entire point because people keep spreading literally false information.
@timedeathe:
Vanilla is still x86 🤷
 
@Kubiquity^3:
No, they could easily allocate more memory to Tile storage and store more paints and all, the only issue becomes memory usage, which increases drastically for every single byte added due to the large world size of 20 million tiles. They could also use some of the remaining scattered free bits, but that would go with a large performance penalty. Both options are bad, so the solution was to introduce a separate mechanic that resides in the remaining free bits without performance penalty.
None of this is related to the engine, architecture, or anything else, which is my entire point because people keep spreading literally false information.
terraria can support around 16 million more tiles as long as there not generating in the world naturally around 31k more npcs without the file issue. 32k more weapons
a few thousand more items a few new biomes around 14 and 136 new dyes as that runs out at 2^8 i did alot of testing by making a bot that randomized pixels at one point i believe in 2021 or 1.4.2
also pls dont randomly ping me.
 
Ughhh I didn’t ping you. But sure ok I’ll make sure to not do that since I already don’t. And to all the above…sure ok uh huh. I‘m wrong and you are right. Bits bytes etc aren’t about maxed out for certain things and has zero to do with engine or performance. Bows to almighty ego god lol.
 
Ughhh I didn’t ping you. But sure ok I’ll make sure to not do that since I already don’t. And to all the above…sure ok uh huh. I‘m wrong and you are right. Bits bytes etc aren’t about maxed out for certain things and has zero to do with engine or performance. Bows to almighty ego god lol.
i was talking to

punchready

 
Status
Not open for further replies.
Back
Top Bottom