GameCharmer wrote:Ahh, fair enough. It might be worth-while to release what you've got so far as a stand-alone mod. I'm currently using it and absolutely love it.
I've knocked together 2 additional tiers, ramping up from 32 to 64 and 128, increasing power requirements along the way. I'm using a ton of mods that add more base defenses, including supreme warfare, so I'm constantly flooded with the tiny alien artifacts. This has been a major help.
Natural Evolution has been the mod that absolutely floodfills my map with enemies (plus the fact I play with enemy settings absolutely maxed out from the start) and I keep having issues with the Artifact Collector just stopping working in my long lasting games. I was considering tiers as well but I want a new graphic first, at the very least I wanted the functionality to replace the hoard of artifact collectors I used to have that stopped working on my latest world, so that was its purpose, plus it forced me to expand my logistics coverage and significantly increase my built constructor bots.
The building I am working on right now is a short range teleporter, my SO is getting a bit irritated at my huge pipe labyrinths so I am trying to come up with a good design. I do not want a GUI, it must be dead simple to use, and I want it directional, but accumulators cannot be directional it seems, so I am debating on two styles right now, either a single 'plate' that you walk on and it teleports you a short distance based on the direction you walked on to it from, or perhaps to a receiving teleporter in that direction, or I can do an accumulator based power supply for a directional teleporter that you place next to it that would either teleport a short distance in the direction it is facing or to a receiving teleporter in that direction. I am not quite happy with either style (walking direction or the facing direction of the entity) and I would prefer a linked teleporter system rather than just a flat direction, but for that I would prefer a connected graphic similar to how underground belts 'link', but for players, and using power. Thus I am fighting with engine limitations right now, and it seems that I would not get out of using an on_tick handler for this, which does truly bug the ever living tar out of me (I want to be able to either register a location callback for walking into or be able to register a callback for listening to colliding events between a player and specific entities, either would remove the need for a ticking handler easy).
Factorio's LUA API is just not a component based design much as that would simplify things as well, instead we have these hardcoded types like "accumulator" and "belt" instead of composable pieces we could put on a custom type like "power" or "collision_callback" and so forth. I would love to be able to specify my own new entity type by doing something like:
Code: Select all
{
name = "teleporter-linked-mk1",
icon = "blah",
max_health = 150,
etc...,
accumulator = {whatever_settings=...}
}
Where basically you would have a set of variables that are required for all entites, like name, and anything else, like collision_box, would actually be a component assigned to the entity. Internally the component 'collision_box' would actually be in the physics handling system and the assigned entity is just a UUID of some form. This pattern allows for extremely efficient handling in the engine while allowing for any style of mixing of components that you would want. A component is just a data container, and the systems operate over 0-to-N components and all entities associated with them, such as the rendering system would be iterating over an efficient quadtree structure of position components and whatever component defines the images for the entity. The engine having a defined type for every different functionality is extremely limiting and is no doubt internally to the engine leading to a class-splosion where you have a handler per type iterating over the entire bulk list of all of those objects as necessary for those types, efficient for sure, but extremely restrictive.
Would continue ranting about the lua API, but have to go....