What is Item System 2.0, in its basic sense?
TL;DRItem 2.0 is a component-based entity system with parallel batch updates and a binary data format, letting designers build items without coders, plus simpler, rebalanced power, heat and signal systems.
So item 2.0 has kind of been thrown around as the savior of everything. It's going to fix everything. "Oh, we can't do that. We'll do an item 2.0." But what exactly is item 2.0? So item 2.0, whenever someone just says item 2.0, it's not literally item 2.0. It's just the technology that brings item 2.0 available and coming up and living. So what that will mean is, in our existing old stuff that we've been releasing for a while, we have these very centric gameplay logic blocks in the code and they do their thing and they work pretty well. But when you start wanting to use bits and pieces of that for other systems, it all falls apart because that one big logic block is all interconnected and you can't just grab something. If you grab something and you stick it in here, this thing might topple or this thing might not be set up right. You end up copying and pasting. It's just a mess. So one of the very first things you have to do for item 2.0 is we have this thing called a component system. And instead of having that big block of logic to define a cup or a ship, we now strip away those bits of logic and we implement them in their own component. So you have a component for physics, you have a component for animation, a component for certain gameplay logic like a shield or even a power plant. And now you have all these different components. You can start adding them to these, we call them entities, and you just basically define something new. And you don't need a coder to go and make a new chair. A designer like Kirk can just go into this tool we have, DataForge, plop all this stuff down, you have a new chair. Plop all this stuff down, now you have a new ship. So it's like trying to build these more complex systems that allow designers to make these bigger systems. And at the same time, when we had it in those single logical blocks, we had another thing with order. So the way that things updated was very deterministic. And we started adding all these things. We had to do one at a time on the main thread. And if you're doing like 100 of these things, it's not a problem. But when you have a big, gigantic universe where it might take a few minutes to hours to get to another planet, there's loads of items and you might have anywhere between 10,000 or more. Now they have to go one at a time and you end up slowing down the game because you have so many things you have to update. So one of the things in the item 2.0 or entity component infrastructure is this thing called batch updates. So now all those individual components that we've made before can now run parallel at the same time in the frame. So instead of doing one at a time, we could do a bunch in a row, then do another bunch, then another bunch. So our update went from something like this to something like this, but long ways now. So the more CPU cores you got, the faster the game is going to run. Basically taking full charge of multi-core, everything. So you have the components, you have the updates, then you have the DataForge, which is the thing that design will use, where it's our own internal data structure. So before, when we defined ships, items or anything like that, it was all XML driven, and the problem with that is anytime we load in a ship or something we have to open up a file. It's huge. So all these XMLs, you have to load it in, read it, and that is slow. So instead, we have this thing with DataForge where we have everything offline and we export it in one binary blob and we load that and we can chunk everything that we need and take only the bits that we need fast. Then there's a billion other systems that come into play, and the interaction system. The item 2.0 system itself uses all that technology and does a little bit more, where now you have this thing that designates who could control what. Then you have the item logics that talk to that, that talk to who could dictate what control and who should get what and who can observe. That's the item infrastructure. Well, everything underneath that is the entity level substructure, which the item 2.0 uses. There's a lot. I could talk for hours.
I think Mark did a great job of describing the underlying systems and how the engine will improve and will get performance increases from that. While we're doing this conversion, however, and this does involve that we do convert all of our existing items and systems to this item 2.0 infrastructure, we're also improving those items and their functionality. So we're improving the ways that you interact with ships to get into them, and while you're in the cockpit, how you interact with the cockpit, and how things like power plants and coolers and shield generators and quantum drives and weapons and thrusters will work, which allows design to balance them better. There's a little bit of Wild West systems when we were trying to balance things like power consumption, heat generation, EM and IR, and how those systems were utilized in the old 1.0 system. We've greatly simplified the way that we generate and manage those signals and how the player can figure out, okay, well, this is the amount of power I will need for all of these items that we have on our ship. I will be underpowered, so how do I improve that? Well, I can get a better power plant or manage my power more efficiently or pick maybe weapons that don't consume as much, so that I can make better gameplay choices for the ship loadout, and it'll allow you to affect gameplay directly by being able to control the parameters of those items.