Hello, after a lot of planning and preparation, the party on Saturday went very well. We really enjoyed spending time with some of our fans, and it has definitely sharpened our motivation to do right by our community and make the game as great as possible. With this festivity behind us, we started this week with some renewed focus.
0.15 Stabilization push
These last few days we have made a larger push to handle all the 0.15.x bugs reports on the forum, our current estimate is that we will have a stable release within a few weeks. As the player base has grown so has the number of bugs found - things which we haven't touched for quite some time end up being broken in interesting or weird ways. Most of the time the fixes are simple, but they can have unforeseen consequences that show up quickly with the number of daily active players. We do our best to test that we don't break anything with a bug fix - and write tests when it makes sense.
However sometimes this isn't enough, and we happen to get something like this recent bug introduced in 0.15.22 and fixed in 0.15.23: As of 0.15.22 modded GUI elements are marked per-element with which mod created them so when the mod is no longer active they can be automatically removed. The logic was simple: store a mapping of the mod name to the elements it owns. On load if the mod isn't active or doesn't exist, all the elements that it owned are removed. It was tested through save/load and through mod removal, and the system worked great. Except it didn't. Almost as soon as 0.15.22 was released, someone reported a problem with losing modded GUI elements through save/load.
It turned out that due to how we store mod names in the game ("mod-" + mod-name), some logic wasn't working correctly. If the mod added between 4 and the length of the mods name + 4 GUI elements, it would break and falsely detect the mod as removed when loaded. If the mod added less than 4 or more than the mods name + 4 GUI elements it worked just fine. We just happened to test a mod that only added 1 GUI element so all the testing worked perfectly.
Wireshark dissector for Factorio - quick and dirty (Technical)
A couple of weeks ago I joined a Factorio MMO event from KatherineOfSky. In the event, all players were invited to join the server. But as we were reaching about 60 players, people were starting to get dropped and they were unable to connect back. It looked exactly like a network bandwidth problem so my first thought was "well, get a better server before hosting an MMO event". But I started looking at the traffic on my computer and there was some unusually high bandwidth being used, especially during connection. Later I was shown that with about 60 online players and no one downloading the map, the server was uploading game traffic at up to 90 MB/s (yes megabytes).
So I started Wireshark, my favorite and I believe the best tool for inspecting network packets. I captured the game traffic and started to look around. I could see that there was a very large amount of packets but since everything was binary data, interpreting the packets was not easy. It took me 10 minutes just to decode a few fields of one packet. It was hard to know what was being sent that is so big. So since I like Wireshark so much, I decided to extend it so it can interpret Factorio packets.
Factorio's network packets are extremely complex. We have 175 InputAction types(e.g. StartWalking, CursorTransfer, EditTrainSchedule, ChangeArithmeticCombinatorParameters), 22 SynchronizerActions (e.g. MapReadyForDownload, ChangeLatency), 17 Network Message types(e.g ConnectionRequest, ServerToClientHeartbeat, MapTransferBlock) all of these each with possibly tens of fields, plus many more intermediate data types that hold all of these together. Add some more logic such as custom packet fragmentation, It was clear that I could not simply write a packet interpreter from scratch, for example using Wireshark's Lua api. I would have to reuse Factorio's code as much as possible in order to save time. Part of the team, including me, thought that it might not even be worth spending time on making this tool, especially since in the meantime we found out what was causing the large bandwidth problems. That meant that I would either have to stop or make the tool as quickly as possible.I choose to try and make the tool as fast as possible. In order to make a C/C++ plug-in for wireshark, I had to install and setup the entire wireshark build environment. Meanwhile Factorio is built using FASTBuild. We had to somehow bring these together. The solutions we were thinking of were:
Build everything in wireshark's build environment. This meant adding only the relevant networking classes from Factorio into Wireshark's project. Some would say this would be the 'proper' way to do it. Unfortunately everything in Factorio is tightly coupled. Some networking classes access entities, or prototypes or graphics or GUI. This means I would have to go through hundreds of classes and manually remove any code and includes that are not related to networking. Not to mention I would then have to make then build correctly in a different build environment. While this would be the 'proper' solution it would take a very long time and it would be hard to maintain.
Build Wireshark in Factorio's build environment. Wireshark's build is very complex. It has 424 CMakeLists/Makefile files totaling 5086 lines. There would be no way I would make that build correctly in our environment using FASTBuild.
Build Wireshark with a small interface in it's own environment and have it link to Factorio's library which is built in FASTBuild. This meant that that the Wireshark plugin would include almost the entire Factorio code including gui, graphics, sound, lua, etc. It's not what some people would call proper, but it would work. One day of tweaking compiler flags I never knew existed and I managed to get them to link correctly. From here it's just a matter of creating instances of a few classes to get the networking part of Factorio running and calling some methods from the Factorio code in order to build a tree of the data. In the end I put everything in one DLL. The DLL is a massive 20MB, but it works and it's actually easy to maintain.
I would say that the lesson to take from this is that what looks like a quick and dirty hack might in the end be a much better solution. I ended up with an easy to maintain plugin that gets the job done and I did it in a little over 2 weeks. Here is a screenshot of how inspecting a packet looks like.
So now when you want to report a bug related to networking or inability to connect, adding a Wireshark (.pcapng) capture might help us debug the problem.Regarding the bandwidth problems, they were caused by the blueprint library when players with very very large blueprint libraries were in game. This has since been fixed by Oxyd, and he is working on improving the synchronization bandwidth further.
Mini-tutorial review
I am looking to go over the newly added tutorials of 0.15, and to try see what was done well, and which areas need some improvement. I would like to ask for some community feedback on this topic. At the moment we have the 5 train tutorials, but more will be in the works soon. I don't want to start work on new tutorials until myself and the others in the team are satisfied that we have the process and mechanics of the tutorials working perfectly.
So if you have any comments or feedback on the mini-tutorials, factorio or just something you'd like to say, we welcome you to fill us in over on our forum
Hello, after a lot of planning and preparation, the party on Saturday went very well. We really enjoyed spending time with some of our fans, and it has definitely sharpened our motivation to do right by our community and make the game as great as possible. With this festivity behind us, we started this week with some renewed focus.
0.15 Stabilization push
These last few days we have made a larger push to handle all the 0.15.x bugs reports on the forum, our current estimate is that we will have a stable release within a few weeks. As the player base has grown so has the number of bugs found - things which we haven't touched for quite some time end up being broken in interesting or weird ways. Most of the time the fixes are simple, but they can have unforeseen consequences that show up quickly with the number of daily active players. We do our best to test that we don't break anything with a bug fix - and write tests when it makes sense.
However sometimes this isn't enough, and we happen to get something like this recent bug introduced in 0.15.22 and fixed in 0.15.23: As of 0.15.22 modded GUI elements are marked per-element with which mod created them so when the mod is no longer active they can be automatically removed. The logic was simple: store a mapping of the mod name to the elements it owns. On load if the mod isn't active or doesn't exist, all the elements that it owned are removed. It was tested through save/load and through mod removal, and the system worked great. Except it didn't. Almost as soon as 0.15.22 was released, someone reported a problem with losing modded GUI elements through save/load.
It turned out that due to how we store mod names in the game ("mod-" + mod-name), some logic wasn't working correctly. If the mod added between 4 and the length of the mods name + 4 GUI elements, it would break and falsely detect the mod as removed when loaded. If the mod added less than 4 or more than the mods name + 4 GUI elements it worked just fine. We just happened to test a mod that only added 1 GUI element so all the testing worked perfectly.
Wireshark dissector for Factorio - quick and dirty (Technical)
A couple of weeks ago I joined a Factorio MMO event from KatherineOfSky. In the event, all players were invited to join the server. But as we were reaching about 60 players, people were starting to get dropped and they were unable to connect back. It looked exactly like a network bandwidth problem so my first thought was "well, get a better server before hosting an MMO event". But I started looking at the traffic on my computer and there was some unusually high bandwidth being used, especially during connection. Later I was shown that with about 60 online players and no one downloading the map, the server was uploading game traffic at up to 90 MB/s (yes megabytes).
So I started Wireshark, my favorite and I believe the best tool for inspecting network packets. I captured the game traffic and started to look around. I could see that there was a very large amount of packets but since everything was binary data, interpreting the packets was not easy. It took me 10 minutes just to decode a few fields of one packet. It was hard to know what was being sent that is so big. So since I like Wireshark so much, I decided to extend it so it can interpret Factorio packets.
Factorio's network packets are extremely complex. We have 175 InputAction types(e.g. StartWalking, CursorTransfer, EditTrainSchedule, ChangeArithmeticCombinatorParameters), 22 SynchronizerActions (e.g. MapReadyForDownload, ChangeLatency), 17 Network Message types(e.g ConnectionRequest, ServerToClientHeartbeat, MapTransferBlock) all of these each with possibly tens of fields, plus many more intermediate data types that hold all of these together. Add some more logic such as custom packet fragmentation, It was clear that I could not simply write a packet interpreter from scratch, for example using Wireshark's Lua api. I would have to reuse Factorio's code as much as possible in order to save time. Part of the team, including me, thought that it might not even be worth spending time on making this tool, especially since in the meantime we found out what was causing the large bandwidth problems. That meant that I would either have to stop or make the tool as quickly as possible.I choose to try and make the tool as fast as possible. In order to make a C/C++ plug-in for wireshark, I had to install and setup the entire wireshark build environment. Meanwhile Factorio is built using FASTBuild. We had to somehow bring these together. The solutions we were thinking of were:
Build everything in wireshark's build environment. This meant adding only the relevant networking classes from Factorio into Wireshark's project. Some would say this would be the 'proper' way to do it. Unfortunately everything in Factorio is tightly coupled. Some networking classes access entities, or prototypes or graphics or GUI. This means I would have to go through hundreds of classes and manually remove any code and includes that are not related to networking. Not to mention I would then have to make then build correctly in a different build environment. While this would be the 'proper' solution it would take a very long time and it would be hard to maintain.
Build Wireshark in Factorio's build environment. Wireshark's build is very complex. It has 424 CMakeLists/Makefile files totaling 5086 lines. There would be no way I would make that build correctly in our environment using FASTBuild.
Build Wireshark with a small interface in it's own environment and have it link to Factorio's library which is built in FASTBuild. This meant that that the Wireshark plugin would include almost the entire Factorio code including gui, graphics, sound, lua, etc. It's not what some people would call proper, but it would work. One day of tweaking compiler flags I never knew existed and I managed to get them to link correctly. From here it's just a matter of creating instances of a few classes to get the networking part of Factorio running and calling some methods from the Factorio code in order to build a tree of the data. In the end I put everything in one DLL. The DLL is a massive 20MB, but it works and it's actually easy to maintain.
I would say that the lesson to take from this is that what looks like a quick and dirty hack might in the end be a much better solution. I ended up with an easy to maintain plugin that gets the job done and I did it in a little over 2 weeks. Here is a screenshot of how inspecting a packet looks like.
So now when you want to report a bug related to networking or inability to connect, adding a Wireshark (.pcapng) capture might help us debug the problem.Regarding the bandwidth problems, they were caused by the blueprint library when players with very very large blueprint libraries were in game. This has since been fixed by Oxyd, and he is working on improving the synchronization bandwidth further.
Mini-tutorial review
I am looking to go over the newly added tutorials of 0.15, and to try see what was done well, and which areas need some improvement. I would like to ask for some community feedback on this topic. At the moment we have the 5 train tutorials, but more will be in the works soon. I don't want to start work on new tutorials until myself and the others in the team are satisfied that we have the process and mechanics of the tutorials working perfectly.
So if you have any comments or feedback on the mini-tutorials, factorio or just something you'd like to say, we welcome you to fill us in over on our forum
Blueprints in the blueprint library are sorted using case-insensitive natural compare. E.g. the sorting order now is "1", "2", "10", instead of the previous "1", "10", "2".
Inserters will no longer drop what they are holding when disabled by the circuit network. more
The deconstruction planner filter now treats any entity filter as also matching entity ghosts of that type.
Multiplayer creation GUI now remembers game name. more
Balance
Explosive Mine now only does damage to enemy units and structures.
Sound
Added missing vehicle collision sounds (pipes, solar panels, etc...)
Reduced volume of ore mining and tree chopping.
Bugfixes
Toggling fullscreen via options or Alt-Enter now keeps window on the same monitor. more
Fixed that in long recharging queues some robots would never get a chance to recharge. more
Fixed that it wasn't possible to click and drag blueprints into an empty blueprint book. more
Fixed that deconstruction/blueprinting selection would be canceled if the selection ended on one of the always-visible GUIs. more
Fixed the productivity bar in the furnace GUI wouldn't show in some instances. more
Fixed exiting a multiplayer game hosted through the in-game multiplayer option. more
Fixed that tile ghosts would always get selected over real entities. more
Fixed that the heat-connection icon was not visible on entities other than boiler and reactor. (related to modding)
Fixed that furnace with heat source couldn't be rotated before placing it.
Fixed the gui of furnace using heat as energy source.
Fix that clearing items in Transport belt maddness didn't give the items back. more
Fixed that rails marked for deconstruction wouldn't allow canceling deconstruction while a train was on them. more
Fixed that biters would change orientation rapidly when they were near a player whom they couldn't attack. more
Fixed that Rocket Silo would continue crafting for 1 tick after completing a rocket. more
Fixed that lot of other keys that can be used to write characters in the edit box (or console) were not blocked from affecting the game if they are assigned to do a game action. Having text box active now means that all of the keys are blocked from affecting the game.
Fixed (hopefully), that the stretching of bounding boxes of walls to touch their neighbours was not taking into account when marking things in the way for the blueprint. more
Fixed that the description pane would change width depending on the content. It should now never change width. more
Fixed that the shooting-target would render as valid to shoot with rockets when it actually wasn't. more
Fixed that programmable speakers would get wrong instruments after importing pre-0.15.19 blueprint string. more
Fixed that maximized Factorio window had thin border around it. more
Fixed that vanilla and modded version of achievements could be mixed up. more
Fixed that inserters would try to insert items into other non-burner inserters. more
Fixed that fast-transferring modules into the rocket silo would put them into the module slots and the rocket at the same time. more
Fixed that the "rocket launched without satellite" message couldn't be dismissed in some cases. more
Fixed the mining drill GUI wouldn't show mining progress when it had a large number of modded module slots. more
Fixed fast-replacing an assembling machine with overloaded ingredients would spill the items. more
Fixed many ingredients or products in recipes would break the assembling machine GUI. more
Fixed wrong values when using /config set allowed-commands with invalid values would crash the game. more
Modding
Fixed that giving rolling stock entities invalid collision masks would crash the game. more
Mod title and description can now be localised.
Fixed a crash when mods use reset technologies during the technology researched event. more
Fixed that modded GUI elements wouldn't get removed in some cases when the mod was removed. more
Fixed source_effects applying effects to the source by the target instead of to the source by the source. more
Scripting
Fixed setting robot.energy for logistic/construction robots wouldn't account for the robot battery upgrade. more
Fixed that setting LuaBurner::currently_burning didn't accept LuaItemPrototype as the docs said. more
Blueprints in the blueprint library are sorted using case-insensitive natural compare. E.g. the sorting order now is "1", "2", "10", instead of the previous "1", "10", "2".
Inserters will no longer drop what they are holding when disabled by the circuit network. more
The deconstruction planner filter now treats any entity filter as also matching entity ghosts of that type.
Multiplayer creation GUI now remembers game name. more
Balance
Explosive Mine now only does damage to enemy units and structures.
Sound
Added missing vehicle collision sounds (pipes, solar panels, etc...)
Reduced volume of ore mining and tree chopping.
Bugfixes
Toggling fullscreen via options or Alt-Enter now keeps window on the same monitor. more
Fixed that in long recharging queues some robots would never get a chance to recharge. more
Fixed that it wasn't possible to click and drag blueprints into an empty blueprint book. more
Fixed that deconstruction/blueprinting selection would be canceled if the selection ended on one of the always-visible GUIs. more
Fixed the productivity bar in the furnace GUI wouldn't show in some instances. more
Fixed exiting a multiplayer game hosted through the in-game multiplayer option. more
Fixed that tile ghosts would always get selected over real entities. more
Fixed that the heat-connection icon was not visible on entities other than boiler and reactor. (related to modding)
Fixed that furnace with heat source couldn't be rotated before placing it.
Fixed the gui of furnace using heat as energy source.
Fix that clearing items in Transport belt maddness didn't give the items back. more
Fixed that rails marked for deconstruction wouldn't allow canceling deconstruction while a train was on them. more
Fixed that biters would change orientation rapidly when they were near a player whom they couldn't attack. more
Fixed that Rocket Silo would continue crafting for 1 tick after completing a rocket. more
Fixed that lot of other keys that can be used to write characters in the edit box (or console) were not blocked from affecting the game if they are assigned to do a game action. Having text box active now means that all of the keys are blocked from affecting the game.
Fixed (hopefully), that the stretching of bounding boxes of walls to touch their neighbours was not taking into account when marking things in the way for the blueprint. more
Fixed that the description pane would change width depending on the content. It should now never change width. more
Fixed that the shooting-target would render as valid to shoot with rockets when it actually wasn't. more
Fixed that programmable speakers would get wrong instruments after importing pre-0.15.19 blueprint string. more
Fixed that maximized Factorio window had thin border around it. more
Fixed that vanilla and modded version of achievements could be mixed up. more
Fixed that inserters would try to insert items into other non-burner inserters. more
Fixed that fast-transferring modules into the rocket silo would put them into the module slots and the rocket at the same time. more
Fixed that the "rocket launched without satellite" message couldn't be dismissed in some cases. more
Fixed the mining drill GUI wouldn't show mining progress when it had a large number of modded module slots. more
Fixed fast-replacing an assembling machine with overloaded ingredients would spill the items. more
Fixed many ingredients or products in recipes would break the assembling machine GUI. more
Fixed wrong values when using /config set allowed-commands with invalid values would crash the game. more
Modding
Fixed that giving rolling stock entities invalid collision masks would crash the game. more
Mod title and description can now be localised.
Fixed a crash when mods use reset technologies during the technology researched event. more
Fixed that modded GUI elements wouldn't get removed in some cases when the mod was removed. more
Fixed source_effects applying effects to the source by the target instead of to the source by the source. more
Scripting
Fixed setting robot.energy for logistic/construction robots wouldn't account for the robot battery upgrade. more
Fixed that setting LuaBurner::currently_burning didn't accept LuaItemPrototype as the docs said. more
Since a couple of weeks ago I was working for the 1M Party. Made some little graphic design jobs which finally became not that little and much more than "some little". I have to admit that I had quite some fun doing them, cause these small things are giving me the chance to experiment and play with the graphical identity of Factorio, like the happy logo variation, the small jumping gear, some layouts, the 1 color version of the Factorio logo and so on.
Luckily I finished the jobs with time enough as to come back to the game gfx. But to be honest, Jitka is the person who's really taking care of every single detail for the party, and preparing and organizing everything. She became a master with the stamp and other stuff that I can't reveal just to not spoil surprises.
HR electric poles
Most of the time when converting normal-res graphics (NR) to high-res (HR), I like to take the chance to re-think the design of the entity. Normally after testing it in the game for so long, it is easy to find better solutions for old problems. But the main reason for re-designing an entity, is that it doesn't support the double resolution - because it was designed and optimized for NR - and sometimes it is because the style is primitive and doesn't fit with the actual standards of the game. Both reasons are true for the case of the electric poles.
Now that I see them again, after working for so long with the HR versions, I don't find them that bad, but it is true that there are problems, especially with the medium one. I will talk about it later. Let's start with the big pole, the 'easy' one.
The model v.1 doesn't support HR, and I always thought that it could be much nicer. This new v2.a model, is in fact a real one that exists not too far from my home. It's just perfect - in real life - but for Factorio it has some problems. The base is too thin, it needs to cover 4 tiles, and it has 6 connections instead of the 3 that Factorio requires. I asked for having 6 connections and little variations in the position and rotation of the poles, to make it more natural in the game. But the amount of work and potential problems that this would cause makes it just not viable. A really nice point of this model is how it rotates. It's very clear in its geometry, clean and transparent at the time of overlapping with other tiles.
After the first attempt, the proposed solution is more conservative. Getting back to the classic v.1. v2.b is just trying not to freak out too much, and moves forward within the comfort zone. Just the same as the v.1, but better for HR and the modern Factorio style. The problem of this model is the rotations, specifically the horizontal view, so I believe a 3rd version will come out after mixing the best parts of the other two.
The main problem with medium and small poles, is that they are normally located in the middle of your factory, so if you have a tight setup they can be very intrusive. They need to be transparent. On the other hand, they have to be visible enough in order to feel comfortable at the time of playing. That's why medium pole v.1 is a diagonal. It is just an experiment that tries to show the tiles behind as best as possible. But to be honest I find a bit annoying the absurdity of having a diagonal pole that requires another support on the base just to be stable. What kind of engineer does a pole like that? The good part of the v.1 is that it is very unique, and you can recognize this pole as from Factorio anytime you see it. With this new model v.2a, I'm trying to simplify the shape as much as possible in order to be more light and transparent. The problem is that the horizontal rotation is not spectacular, and this sense of uniqueness is quite diluted.
So comes the medium pole v.2b, which is trying to keep the lightness of 2a, even increases it, and it tries also to recover this lost uniqueness from v.1. Rotations are not super spectacular either, but for the horizontal rotations which are the most difficult ones, this model works pretty well. I believe that a medium pole v.2c will come by taking the very best of the other models.
With this first version of the small electric pole, I had already a long and difficult process for building it. In my opinion there's not really any serious issue with it apart from the HR incompatibility. So basically v.2a is just a cleaned and stylized version of the v.1. Anyway it needs to be tested to see if it really works.
So that was a short and brief trip to the re-design for HR in Factorio. I just wanted to continue a little bit the last FFF, in order to show more deeply the process of creating an entity. Many times we speak about technical stuff, meaning code and complicated tools, but we sometimes forget to talk about conceptualization and design, which is full of techniques and twists. As you can see, everything in here is a work in progress, so we will probably speak about the final HR electric network in action soon. I hope you find it interesting.
As a bonus, I'd like to introduce you to the new version of the warning signals. I had to clean up the style a lot in order to make it very visible in any situation. Still work in progress so expect changes, but step by step Factorio looks better.
Any feedback from you is always interesting. See you in the forums.
Since a couple of weeks ago I was working for the 1M Party. Made some little graphic design jobs which finally became not that little and much more than "some little". I have to admit that I had quite some fun doing them, cause these small things are giving me the chance to experiment and play with the graphical identity of Factorio, like the happy logo variation, the small jumping gear, some layouts, the 1 color version of the Factorio logo and so on.
Luckily I finished the jobs with time enough as to come back to the game gfx. But to be honest, Jitka is the person who's really taking care of every single detail for the party, and preparing and organizing everything. She became a master with the stamp and other stuff that I can't reveal just to not spoil surprises.
HR electric poles
Most of the time when converting normal-res graphics (NR) to high-res (HR), I like to take the chance to re-think the design of the entity. Normally after testing it in the game for so long, it is easy to find better solutions for old problems. But the main reason for re-designing an entity, is that it doesn't support the double resolution - because it was designed and optimized for NR - and sometimes it is because the style is primitive and doesn't fit with the actual standards of the game. Both reasons are true for the case of the electric poles.
Now that I see them again, after working for so long with the HR versions, I don't find them that bad, but it is true that there are problems, especially with the medium one. I will talk about it later. Let's start with the big pole, the 'easy' one.
The model v.1 doesn't support HR, and I always thought that it could be much nicer. This new v2.a model, is in fact a real one that exists not too far from my home. It's just perfect - in real life - but for Factorio it has some problems. The base is too thin, it needs to cover 4 tiles, and it has 6 connections instead of the 3 that Factorio requires. I asked for having 6 connections and little variations in the position and rotation of the poles, to make it more natural in the game. But the amount of work and potential problems that this would cause makes it just not viable. A really nice point of this model is how it rotates. It's very clear in its geometry, clean and transparent at the time of overlapping with other tiles.
After the first attempt, the proposed solution is more conservative. Getting back to the classic v.1. v2.b is just trying not to freak out too much, and moves forward within the comfort zone. Just the same as the v.1, but better for HR and the modern Factorio style. The problem of this model is the rotations, specifically the horizontal view, so I believe a 3rd version will come out after mixing the best parts of the other two.
The main problem with medium and small poles, is that they are normally located in the middle of your factory, so if you have a tight setup they can be very intrusive. They need to be transparent. On the other hand, they have to be visible enough in order to feel comfortable at the time of playing. That's why medium pole v.1 is a diagonal. It is just an experiment that tries to show the tiles behind as best as possible. But to be honest I find a bit annoying the absurdity of having a diagonal pole that requires another support on the base just to be stable. What kind of engineer does a pole like that? The good part of the v.1 is that it is very unique, and you can recognize this pole as from Factorio anytime you see it. With this new model v.2a, I'm trying to simplify the shape as much as possible in order to be more light and transparent. The problem is that the horizontal rotation is not spectacular, and this sense of uniqueness is quite diluted.
So comes the medium pole v.2b, which is trying to keep the lightness of 2a, even increases it, and it tries also to recover this lost uniqueness from v.1. Rotations are not super spectacular either, but for the horizontal rotations which are the most difficult ones, this model works pretty well. I believe that a medium pole v.2c will come by taking the very best of the other models.
With this first version of the small electric pole, I had already a long and difficult process for building it. In my opinion there's not really any serious issue with it apart from the HR incompatibility. So basically v.2a is just a cleaned and stylized version of the v.1. Anyway it needs to be tested to see if it really works.
So that was a short and brief trip to the re-design for HR in Factorio. I just wanted to continue a little bit the last FFF, in order to show more deeply the process of creating an entity. Many times we speak about technical stuff, meaning code and complicated tools, but we sometimes forget to talk about conceptualization and design, which is full of techniques and twists. As you can see, everything in here is a work in progress, so we will probably speak about the final HR electric network in action soon. I hope you find it interesting.
As a bonus, I'd like to introduce you to the new version of the warning signals. I had to clean up the style a lot in order to make it very visible in any situation. Still work in progress so expect changes, but step by step Factorio looks better.
Any feedback from you is always interesting. See you in the forums.