Mods introducing new content into the game.
Play it your way.
Hey. Glad to see that someone decided to make an up to date version of Creative Mod. The thing was a bit too hungry for UPS.
As a whole, IM's performance is an excellent motivation to switch from CM. However… There are some important tools from CM that I immediatly found missing in IM. Most notably:
The fact that they could input directly into an assembler or void its recipe's output in the same fashion was also extremely useful. (Though output for the matter Generator/Duplicator was sometimes way too slow, especially for fluids.)
The duplicator was actually only useful because its output was slightly faster than the generator though.
That one was incredibly useful. The Infinity Chests provided by IM are useful of course, but having the possibility of setting providers with every item in the game in a few seconds' time was incredibly useful - for instance when testing if a production line works alright. Or simply to have everything at hand so you don't have to configure an Infinity Chest for every new item you need for your bots.
Already missing in CM, I kind of hoped to find these options in IM: Bots speed bonus & cargo capacity.
Infinity Pipe is fine more than 90% of the time. But for some specific cases where fluid mixing would be an issue, having the option of an Infinity Pump would be handy.
Maybe also an option to configure the Pipe's capacity on the fly. I can't think of many situations where it would be useful, but I guess some people might want it?
Thinking back on CM's Matter Generator… Would it be feasible to have the Infinity Pipe output the same fluid as the connected pipeline when it's placed? The reason is that when you're placing down an infinity pipe along a normal pipeline, it's either to generate the same fluid or void it. And to void it, it's as simple as lowering the slider down to 0%, no matter which fluid is selected.
If I have to be perfectly honest here, and solely from a user point of view, I'm struggling to see those "additional features" compared to CM - instead, it feels more like a lite version of CM which is much more performance-friendly.
Anyway, those are my first impressions after switching to IM.
As for the compatibility issues, there are two I noticed. Nothing major, so far, only categorization-related ones:
The first is with Train Construction Site. If you happen to have used it, you know that it adds its own items tab, and said tab tries to move anything related to trains here. With Infinity Mode, that includes its Cargo and Fluid Wagons.
The second is of the same vein, but with Infinity Pipe and Infinity Chest (the non-logistic one). Don't know if it's a mod interaction or not, but they appear in the Logistics tab instead of IM's.
https://steamcommunity.com/sharedfiles/filedetails/?id=1829082816
https://steamcommunity.com/sharedfiles/filedetails/?id=1829083092
Here's my factorio-current.log if it is of any use to you: https://pastebin.com/fUVfYVN0
And that will be all for the moment. Have a nice evening.
Hey, thanks for all of your feedback! Similar to the magic wands having capabilities I didn't know about, I was completely unaware of those capabilities of the matter source/voids. I thought they were only for belts! I'll think about how I could implement the functionality they had, but it'll probably require adding another item, since infinity loaders are specifically designed for belts.
As for Creative Chests, I failed to find a good solution for a chest containing every item in the game. Either I'm going to have to add a whole new row of chests, or add a mod GUI button when a chest is open to fill it with every item.
I can add an infinity pump, that will probably only take five minutes. I'll also add pipe snapping logic, as that sounds like a great idea!
Finally, the compatibility issues. Those mods are probably doing recipe re-organization in data-updates or data-final-fixes, so if I wanted to fix those I would have to go over every item twice when loading, once to create them, and once to put them where they should be. I'll work on it.
Thanks again for all of the feedback! It is much appreciated.
I actually discussed that a bit with EnigmaticAussie after posting that thread and he told me that "matter sources are now infinity loaders" so I ended up thinking it was a design decision on your part and hesitated about editing my message. Glad I didn't.
I doubt that anyone would mind more items - if they are in their own tab, they won't bother anyone and are still easy to locate.
Since you didn't know that Matter Source/Void worked with inventories, I'll develop a bit on what makes it useful.
Source:
- If connected to an assembler without a filter, it will provide anything needed for the recipe, including fluids. (The filter settings are ignored as long as there is no filter item specified.)
- If a filter is set, it will input only what you set and vice versa if you blacklist instead.
- Can insert to inventories, belts, players and vehicles
Void:
- If connected to an assembler without a filter, it will void all the outputs directly in the assembler, excluding fluids.
- If connected to an assembler with a filter, it will work like the source, but void instead of providing.
- Can void from belts, inventories, players and vehicles
If there are things to improve upon CM for these, that would be:
- Adding the possibility to set an input rate for the Source and (much less important, CM's void is instant) one for the void. CM's source inputs quite slowly which is an issue for recipes that require a few solids and hundreds of fluids. It doesn't force input though, so if anything reaches the max, it will stop inputting it until there's room.
- Matter Void can't void fluids for some reason so you have to use a void pipe/infinity pipe set to 0 for that. It would be great if it could just void it directly from the assembler. Didn't seem to be possible back then since there isn't even a fluids category in Matter Void's filters so I assume that it might still be so.
Something to consider though: would the Infinity Loader still be relevant then?
Creative Chests:
Wouldn't that second solution be quite harsh on UPS? That would be a lot of items even for vanilla. With some modpacks (looking at you Angel's) that ramps up very quickly. Now, I have no clue about how much chest size impact performance (I'm using quite a lot of warehouses with 200+ slots and it never caused much of an issue, UPS-wise) so I'm just putting the idea out there.
Thanks for the pump. That will be useful once in a while. And more than anything, thanks for that pipe snapping logic. Didn't think it was even possible. Copy-pasting for every single segment was getting old.
Anyway, I feel like that mod will quickly replace CM completely.
(By the way, I realize that you didn't mention the bots speed/cargo so I'm bringing it up again just in case you missed it in my - quite dense - feedback. Otherwise, feel free to just ignore it.)
I am usually of the opinion that "less is more" if it's not too annoying to have to take an extra step or two. I don't want to redesign the infinity loaders, because they're the most complex entity I've ever made (each one is a combinator, up to ten invisible superfast inserters, and an infinity chest). So I went and added an infinity inserter, which doesn't require electricity and moves super fast. Here is a comparison of before and after:
It's not perfect, but when I find a way to add everything-chests, you will just need to plop down an inserter and chest and it'll be good. You'll still have to use infinity pipes for fluids, sadly.
Creative Mode's matter source/void used a boatload of expensive scripting to manipulate things, and I don't think it would be possible to recreate what it did while keeping performance at acceptable levels.
Bilka also went ahead and added the ability to copy a recipe from an assembling machine to an infinity chest in vanilla. It will either come in today's patch or the next one. That should tide people over until I can add everything-chests.
Regarding the everything-chests, it should be possible to count the total number of item prototypes during data-final-fixes, set the slot count of an infinity chest to that value, and then have a script loop through game.item_prototypes to set each filter when one of the chests is placed.
An infinity pipe with the volume/size of a storage tank would be quite useful for testing pipe systems and providing large quantities of fluid for recipes.
Yeah, that was my plan. The max number of inventory slots and infinity filters is 2^16, so I can just set the infinity filters, and let vanilla C++ handle everything for me! My plan right now is to add them as hidden "tesseract chests" and have a toggle come up when you open an infinity chest to turn it into a tesseract chest. Does that sound like too much of a pain? The other option is to add six more items to the Infinity Tools recipe menu.
Can't disagree with you on that one. Bloating is a pain - but something useful is not. And with the ability to paste to an Infinity Chest and these inserters, that's as good a workaround for the Matter Source/Void as it gets. (Though it will take 2 tiles instead of one, but if it means saving on performance, that's not even something to consider.) Once you find a way to make these everything-chests, that will be even better. Anyway, as far as I'm concerned, even without that, it will certainly tide me over since that means a 1:1 alternative to what CM does.
If you manage to add these everything-chests, couldn't you just kind of smash one together with a super-fast (filter?) inserter and replicate the behavior of a matter source without the whole expensive scripting?
Speaking of Infinity Pipes, will the snapping logic work directly with assemblers' input or will it be necessary to add a regular pipe in between?
And since we're on the topic, another idea related to pipes - fluids voiding. Do you have a (performance-friendly which doesn't interfere with the other snapping logic) way to automatically set an infinity pipe to 0 when it's directly connected to an assembler output? (I mean, why else would you connect an Infinity Pipe in such a way?)
Edit: the tesseract option sounds interesting. Even more so if it were possible to copy that toggle from an infinity chest to another.
Seems like a button available during chest placement would allow for additional options. Opening extremely large inventories tends to lag the game, so placing the button outside of the inventory would help. My computer is pretty beefy and the FPS drops from 60 to 30 with a 2^14 slot inventory. Considering that the performance of a logistic system is influenced by the quantity of items available, items with low stack sizes, and mods adding potentially hundreds of items, a true logistic everything-chest would likely tank performance without really working as intended.
If there is a property to read which inserters can pull from a chest, perhaps the button could be a "smart filters" checkbox that looks for any inserters attached to assemblers and then copies the filters of the ingredients. That way it's less likely to have to switch to a full everything-chest.
Adding a similar option to infinity inserters during placement to add filters to existing chests would also be useful.
Yeah, I just set the infinity chests to have a 2^16 - 1
inventory size, and it lags the game horrendously. I might just add the chests as separate items and make them un-openable. The lag is probably why Creative Chests had "pages" that you would need to choose from.
I'll see what I can do. I think it might be possible to be able to switch the chest type by shift+scrolling when holding the item.
Actually, and thinking back on it… If it's possible to copy-paste from an assembler directly to an infinity chest, that would pretty much take just as many time/actions as placing a chest and toggling the tesseract option. And chances are that the first option would be lighter on performances since less items are involved.
That, plus this "smart filters" option would make everything-chests barely relevant for anything but logistics applications which, in turn, would probably be an excellent performances/functionalities compromise.
But how do you see it working?
I personally imagine it as a global option (so it saves an action, otherwise you could just set it manually each time with a copy-paste) that triggers once when you place an infinity chest/inserter (or a combo of both).
Something in the same vein as this mod: https://mods.factorio.com/mod/AutomaticLogisticChest
It automatically sets requests when a requester/buffer chest + inserter combo is placed right for an assembler. Sounds similar enough.
Considering that the main purpose seems to be filling/voiding assemblers, what if it were implemented as some sort of planner-type item?
Selecting assemblers with it could place a hidden chest/inserter on the assembler itself with the appropriate filters. Alternate selection modes could control whether it fills, voids, or restores normal behavior.
Just released an update, let me know if using the inserters fits your matter source/void needs!
This update doesn't have the tesseract chests or infinity pipe snapping, that'll be in the next update.
Can't say much about the Matter Source/Void thing without the option to copy from assembler, but as far as inserting needs are concerned, it sure does the job! However, I think these inserters need to be filterable - otherwise, you can't selectively void items with them.
Edit: now that copy to Infinity Chest is available, I must say that it does the job perfectly. I ended up making an inserter + chest blueprint though which pretty much replicates the ease of use of a Matter Source, while not suffering from its low input… so a better result than CM overall.
(On a side note, I started a new map to try it out because of some crashes shenanigans when switching from CM without disabling all cheats. And there was that new popup to activate Infinity Mode. When selecting "yes", IM activates with all options enabled. And that tends to become an issue with the "research all". For instance, I was using Warptorio so when I activated IM, it automatically researched everything including techs that can't be properly un-researched (the Warptorio's platform upgrades for instance.) That would be a good idea to at the very least disable that one option, since everything else can be disabled/enabled without issue… probably.)
Tesseract chests are in!
I decided just to keep them as separate items, because I realized that having one for every logistics variant is useless - since you can't interact with them anyway, you can't set logistics filters on them. So there are three types: standard, passive provider, and storage.
I played with the idea of making a tesseract requester that would request every item in the game, but realized that that would be absolutely useless as it would completely shut down any logistic network you placed it in...
Just a note: The tesseract chests' inventory size is dynamically calculated during loading, and will always contain every item from every mod that is installed. The bigger the inventory, the worse the performance is. I made a setup with 20 tesseract chests with infinity inserters taking from them at max speed, and the game's performance tanked to 20 UPS. I would highly recommend setting your own filters on regular infinity chests if you can.
Yeah, doing some more tests, the performance of these things is absolutely horrid... they take absolutely no UPS when still, but whenever you take an item from one it has a noticeable performance impact. I'm going to see if the Factorio devs would be able to optimize infinity chests to try to combat this, but if not, I'll be half-tempted to scrap them because the performance is just that bad.
Assuming that we're only using them for logistic purposes (since we can copy-paste from an assembler now), would a "pages" system similar to CM be realistic? Basically, a tileable vanilla infinity chest which would automatically set its filters according to connected infinity chests, if it's even possible. This way, you would only have to run a script when they are first placed, so it's lightweight once they're set, and you could leave everything else to vanilla behavior.
Sorry, I didn't explain well enough. The tesseract chests do exactly that - I use script to set the filters when you build one, and let the game handle everything else. The problem is that the actual game struggles to update 273 infinity filters in a chest in a timely manner.
Rseding is working on optimizing infinity chests at the moment, we'll see how it looks when he's done.
Rseding did some optimization black magic, so tesseract chests might stay in after all. We'll have to see how the performance looks when the next patch is released!
Wow, that's… quite the improvement. Can't wait to see how it goes.
On a side note, that's great - not only are you improving your mod, even vanilla is getting better thanks to your efforts.