Jun 27, 2016
Factorio - Klonan
Here is a summary of the New features of 0.13

  • Major features
    • Improved Multiplayer game UX (see https://www.factorio.com/blog/post/fff-139 and https://www.factorio.com/blog/post/fff-116). Server games are published to the server and clients can browse existing games. Automatic discovery for the LAN games.
    • Mod Portal integration. Factorio can list and install mods from the mod portal. more
    • Achievements and Steam Achievements integration. (https://www.factorio.com/blog/post/fff-125) Modded games won't have the achievements recorded on steam.
    • Rail planner tool simplifies the rail building. (https://www.factorio.com/blog/post/fff-113)
    • Added fire. Fire will spread between trees and cause forest fires, causing a large amount of pollution to be released.
    • Power switch. It can be used to control the energy flow. Power switch can be connected to the circuit network. (https://www.factorio.com/blog/post/fff-115)
    • Added the Stack inserter - an expensive upgrade over fast inserters that can move several more items at a time.
    • Flamethrower turret. Fueled with fluid, shoots a stream of burning oil towards oncoming enemies.
    • Bonus gui (accessible from sidebar gui) showing bonuses the force has researched.
    • Train station window contains a list of all trains (each can be opened) that have that station on their schedule.
    • Single train gui now has an additional panel which shows the minimap/camera view of the given train.
    • Search field to the filter selection and recipes selection windows.
    • Trains gui. It displays all the trains as small minimaps with schedules, which can be searched.
    • Extension of the train wait conditions. (https://www.factorio.com/blog/post/fff-114)
    • New locomotive, cargo wagon and train stop graphics. Locomotives can be colored. The trains are a consistent size in horizontal and vertical orientations.
    • New technology tree gui. (https://www.factorio.com/blog/post/fff-128)

  • Minor Features
    • Blueprints can be now edited.
    • Added the Blueprint Book item - an item to manage blueprints. The book can be renamed and only holds blueprints.
    • Map generator algorithm changed, further resource field now have greater richness.
    • Added landfill, it can be used to replace water areas with grass.
    • Added yellow/black striped concrete tile that is rotatable.
    • Small sidebar gui containing buttons for main menu, production statistics, etc.
    • Armors have inventory size bonuses (10 for modular armor, 20 for power armor, 30 for power armor mk2).
    • Underground pipes and belts are placed at max connecting distance apart when built by dragging.
    • --scenario2map: Creates a save from a custom scenario, without initialising the graphics.
    • The lamp can change it's color based on circuit network signals.
    • Roboport is connectable to the circuit network. It sends the logistic network contents or the robot statistics of the network.
    • Accumulator is connectable to the circuit network. It sends it's charge level as a percentage.
    • Transport Belt is connectable to the circuit network. It can be turned on or off and it can send it's contents to the circuit network.
    • Rail Signal is connectable to the circuit network. It will send the signal's state and can block trains from passing.
    • Gate can be controlled through the circuit network by connecting to the wall next to it. It can be opened manually or send a signal if the player is nearby.
    • Requester chest's requested items can be set automatically from the circuit network.
    • Inserters can now send the item held in hand to the circuit network. Filter inserters can have their filters set automatically from the circuit network.
    • Most entities that can be turned on or off by the circuit network can also be turned on or off by directly using a logistic condition.
    • Circuit network and logistic network conditions can now be accessed by icons in the top-right corner of the entity's GUI, for all connectable entities.
    • Connected Red/Green wires are highlighted when hovering over a combinator or entity connected to the circuit network.
    • Wire disconnecting is incorporated in the latency hiding.
    • Crafting machine item/fluid total craft counts are recorded per force.
    • Intro sound in the loading screen.
    • Improvements to the statistics GUI (electric network/production info). Added the ability to filter out things. Added the ability to view "all" information recorded. Made the GUI scrollable.
    • Added /ban /kick /bans /admins and /admin commands.
    • Added /color command, so changing color doesn't require access to lua commands.
    • When running as a server, Factorio now accepts console commands on standard input.
    • When running as a server, Factorio can be told to listen for RCON connections. To use this, specify both the --rcon-port and --rcon-password parameters on the command line. The network protocol is specified here: https://developer.valvesoftware.com/wiki/Source_RCON_Protocol
    • New parameter to start the headless server: --start-server-load-latest. Instead of accepting a save name, it will automatically load the latest save in the saves folder.
    • The "disallow-commands" flag has been changed to "allow-commands" and accepts "true", "false", and "admins-only" for values.
    • It is stored and shown which player built each of the machines.
    • Added cluster grenades and grenade upgrades.
    • Added flamethrower and flamethrower turret damage upgrades.
    • When creating a new map using the --create command-line option, --map-gen-settings can be used to specify the map generation settings.
    • Log file reopening on SIGUSR1 and a commandline option to disable log rotation.
    • The default font looks better (improved hinting for the thinnest weight).
    • Labels and values in descriptions have different colors.
    • Item health bars are rendered green, yellow, red based off the % health remaining like entities.
    • Modules support in blueprints.
    • Equipment can be put in open equipment grids using standard inventory shortcuts (shift + click, ctrl + click).

  • Ease of use
    • Turret displays its range when you hover over it.
    • Rail signal/train stop placement indicator. (https://www.factorio.com/blog/post/fff-134)
    • Indicator of train vehicle positions in a station when building next to track where would the train stop.
    • It is possible to change the module in the slot to different one without having to clear it first.
    • It is possible to upgrade modules to more powerful variant in machine by fast entity transfer.
    • Clear cursor first cancels the current action (rail building, wire dragging, blueprint/deconstruction), and only removes the item from the cursor when pressed again.
    • Saving a game changes selected name and directory for next saves. more
    • Clicking different filtered slot in quickbar will try to clear the currently selected quickbar item if possible.
    • Cleaning item in cursor that is taken from quickbar slot will try to refill the slot from the inventory if possible.
    • Clicking on the warning icon will open the location on the map.
    • Pressing E/Escape will close the map mode.
    • It is possible to move the map by clicking and dragging.
    • Hovering mouse over inventory logistic request slots makes matching items in inventory be highlighted.
    • Fixed the zoom to cursor feature introduced in 0.8 that was non functional since 0.10.
    • Improved the rail selection logic in junctions.
    • Stone Rock can now be mined and deconstructed by robots. It gives some stone as resource.
    • Combinators input and output arrows in alt mode. Additional alt mode information can be turned on in the options menu.
    • The constant combinator has an on/off switch.
    • Several non-stackable items can be swapped directly with counterparts (power armor, deconstruction planner, selection tools).
    • Inventory filter slots can be copy-pasted from empty slots onto empty slots using the stack transfer/split controls (shift + left click, shift + right click by default).

  • Balancing
    • The productivity module pollution addition was lowered (30%->5%, 40%->7.5%, 50%->10%), as the pollution generated by the machine is already increased by the additional energy production and time, it doesn't need to be so high as the modules are quite expensive already.
    • Repair packs have double durability (100->200) and stack size (50->100).
    • Changed stack size of raw wood (50->100) so it doesn't fill the inventory so quickly.
    • Roboport have decreased transmition power consumption (200kw->50kw) while the robots (and their recharging) has increased power consumption (200kW per recharge slot to 1Mw per slot) Basically, covering area by roboports is cheaper, but using robots for transport is more expensive. To keep the personal roboport usefulness, energies used in personal roboport have been all multiplied by 10.
    • Inserters are able to squeeze things "slightly" better to belts. more resources.
    • Increased size of several green science and few blue science technologies.
    • Increased inventory size of cargo wagon. (30->40)
    • Oil yield drains to 10% two times slower.
    • Big and behemoth enemies spawn 50% slower.
    • Armor resistances are applied before the energy shield is used.
    • Increased the ghost time to live when something is destroyed from 5 + 5 minutes to 30 + 30 minutes.
    • Halved the mining time of rails, rail signals and walls.
    • Changed the way evolution factor approaches the maximum (1). The addition of evolution factor was changed from addition * (1 - evolution) to addition * (1 - evolution)^2 This means that the progress gets more slower towards the high values.
    • Balanced train acceleration and top speed, additional wagons no longer slow trains so strongly.
    • Changed the amount of items requested when copy-pasting assembling machines to requester chests for several recipes.
    • Express underground belts require lubricant to match the express belts and express splitters.
    • Increased battery equipment power storage, input, and output by a factor of 20.

  • Changes
    • Reduced number of connections drawn between roboports in blueprint and roboports on map.
    • More virtual signals for combinators.
    • Vitual signals can be used in blueprint icons.
    • Disabled loading of saves before 0.10.0 version (You can use 0.10.12 to load older saves and re-save them).
    • Removed multiplayer peer-to-peer mode.
    • Ghosts created by player no longer expire and can be placed before researching any technologies.
    • Ghosts are brighter and easier to see.
    • Alert of destroyed entity exists 2 times longer.
    • Quickbar filters are set and unset using the same key.
    • Loading a scenario without control.lua will automatically load the freeplay game mode scripts. This means new maps created in the map editor will get the freeplay game mode.
    • Loading a scenario in the map editor will preserve it's scripts. This means custom freeplay/sandbox maps can be created in-game.
    • Constant combinator can be rotated.
    • All types of inserters can be controlled by the circuit and logistic network, once the respective network is researched.
    • All types of chests can be connected to the circuit network. Smart Chest was removed from the game.
    • Decider combinator "input count" option makes the combinator copy the count of the specified output signal from the input signals, instead of copying the count from the condition. This might break some setups. https://forums.factorio.com/13706
    • Transport belt connectable entities will disconnect from incoming (and all other) belts when marked for deconstruction. The problem is solves is described in this bug report: https://forums.factorio.com/19038
    • Spaces are now allowed in file names when saving.
    • Changed the fluid color of heavy oil to match the icon color.
    • Alert beep sound is activated only when something is destroyed, not by something damaged.
    • Spitter attack distance is randomised slightly to make them look more organic.
    • Rocket fuel can now be used as fuel.
    • Saves given on command line (to options --start-server, --mp-load-game, --load-game, --create) are always absolute or relative paths. If the path is relative, it is relative to the current directory (where the binary is run from).
    • Main menu background image is scaled proportionally now. more
    • Renamed "research-effectivity" to "research-speed".
    • Removed light entity info background option.
    • Cleaned up freeplay and sandbox scenario scripts.
    • Exiting vehicles now puts you to the left of the vehicle with respect to the orientation of the vehicle.

  • Graphics
    • Health bars are partially visible when obstructed.
    • High resolution ingame indicators.
    • New fire graphics for Stone Furnace, Steel Furnace and Boiler.
    • New icons for rocket fuel, low density structure, rocket control unit, satellite, car and tank.
    • Entities show a circuit connector when connected to the circuit or logistics network.
    • Added compression for some sprites to save video memory. This can be enabled in Graphics options.
    • Added linear filtering for GUI icons. This can be disabled in Graphics options.
    • New combinator graphics.

  • Optimisations
    • Optimised gui render.
    • Minimap is rendered in 16bit colors to reduce memory usage.
    • Less memory usage for entities that are connectable to the circuit network.
    • Faster map unload on Quit to Main Menu or closing the game.
    • Optimised pollution rendering on map and minimap.
    • Optimised roboport radius rendering.
    • Optimised biter pathfinding. (https://www.factorio.com/blog/post/fff-117 https://www.factorio.com/blog/post/fff-121)
    • Optimised save file times by doing compression in parallel.

  • Bugfixes
    • Fixed recipe ordering when recipes had the same group and group order string.
    • Limited number of explosion sounds for grenade, explosive cannon shells, explosive rockets.
    • Underground belts won't connect if underground belt ghost is in the way. more
    • File saving is done in a safer, more atomic way. This should help prevent some cases where a safe file or the config file can go missing.
    • Building sound is played also for other players in multiplayer.
    • Red/green wires change electric pole orientation the same way normal connections do. more
    • Fixed the rotation of train vehicles to be built.
    • Fixed clearing the player cursor stack and then inserting into the player quickbar in the same tick not preferring filtered slots. more
    • Fixed unrecognizable item icons when playing on very low graphics settings. more
    • Fixed that ghost building on power poles disconnects them, as it is the same shortcut. more
    • Fixed multiple construction bots could be sent out to mine single tree. more
    • Fixed that LuaGameScript::take_screenshot could take negative values of zoom or resolution. more
    • Fixed robots would carry items from active provider chests to storage chests even when requester chest needed those items. more
    • Fixed setting the cursor stack from script when having a selection from a filtered slot allowing the wrong item in the slot. more
    • Items inserted into assemblers now update tooltips. more
    • Map editor save GUI now always fits on the screen.
    • Will explicitly show system mouse cursor when exiting Steam Overlay, just in case Steam forgets to do it. more
    • Fixed that commands would still be disabled in single-player after loading a map created in MP with commands disabled. more
    • Fixed that a biter could get stuck trying to attack a building in some cases. more
    • Fixed unclear error message when attempting to run multiple instances of Factorio with same write-path. more
    • Fixed the space key animating buttons. more
    • Fixed fluid getting into the wrong inputs on assembling machines. more
    • Long tooltip descriptions (below the minimap) won't stretch the whole right column.
    • Fixed being able to copy settings onto and rotate entities marked as non-operable. more
    • Fixed that player names wouldn't show up on the chart when UI scale was set to 100% or less. more
    • Fixed that the same error message could appear twice in multiplayer. more
    • Fixed equipment tooltips in equipment grids not showing when putting new equipment into the grid.
    • Command key can be now used as a modifier in controls on Mac OSXmore
    • Fixed that a peer could kick every other peer from an MP game. more
    • Fixed train air resistance calculation.
    • Fixed wire drawing in the right-pane description for electric poles. more
    • Fixed freeplay and sandbox scenario initial rocket count. more
    • Fixed sandbox scenario wouldn't recognize rocket launches.
    • Fixed modifying item stacks directly in the player wouldn't trigger an inventory sort in some instances.
    • Fixed crash when modded locomotive uses other than burner energy source. more

  • Modding
    • Mods need to have factorio_version value in their info which specifies major Factorio version they are suited for, default value is 0.12. Mods with non fitting version are not loaded.
    • Added item_pickup_distance and loot_pickup_distance to player definition.
    • Added invalid parameter error for data.extend function.
    • Added the ability to define additional_pastable_entities for an entity which allows copy-paste between that entity type and the defined destination types. Useful in conjunction with the new copy-paste events.
    • Added a new item type "selection-tool" that fires the events on_player_selected_area and on_player_alt_selected_area.
    • Unified prototype names to be consistant with ingame names. (basic-transport-belt->transport-belt, *transport-belt-to-ground->*underground-belt, basic-splitter->splitter, basic-inserter->inserter, basic-mining-drill->electric-mining-drill, basic_beacon->beacon, basic-bullet-magazine->firearm-magazine, piercing-bullet-magazine->piercing-rounds-magazine, basic-grenade->grenade, basic-armor->light-armor, basic-modular-armor->modular-armor, basic-laser-defense-equipment->personal-laser-defense-equipment, basic-exoskeleton-equipment->exoskeleton-equipment)
    • Construction robots will now use any available repair tool items instead of a fixed single item defined in the prototype for the robot.
    • Various indicator and game icons are defined in the utility-sprites objects, so it is now moddable.
    • Added new research options: character-crafting-speed, character-mining-speed, character-running-speed, character-build-distance, character-item-drop-distance, character-reach-distance, character-resource-reach-distance, character-item-pickup-distance, character-loot-pickup-distance, character-inventory-slots-bonus, deconstruction-time-to-live, character-health-bonus
    • Sticker entity can deal damage.
    • Added a new entity type "electric-energy-interface" that can consume, produce, and accept energy while also allowing all of its electric network parameters to be configured runtime.
    • Added flags to energy_source prototypes "render_no_network_icon" and "render_no_power_icon" to prevent rendering those icons when set.
    • Removed "inventory_order" prototype property as it wasn't actually used and isn't needed.
    • Removed "radius_visualisation_picture" and "construction_radius_visualisation_picture" from roboport and roboport-equipment prototypes. The pictures were moved to core. If needed you can use "draw_logistic_radius_visualization" and "draw_construction_radius_visualization" boolean properties to disable drawing radius in your prototype.

  • Scripting
    • Moved LuaGame::daytime/wind/wind_orientation/wind_orientation_change/peaceful_mode to LuaSurface.
    • Added LuaEntity::held_stack_position. It tells you the world position of the inserter arm.
    • Added LuaGame::delete_surface. Deletes the surface passed in if the surface is deletable.
    • Added LuaItemStack::create_blueprint() - sets up a blueprint as if a player did it.
    • Added LuaItemStack::build_blueprint() - builds a blueprint as if the player built it in the world.
    • Added LuaSurface::deconstruct_area() - deconstructs an area as if the player did it.
    • Added LuaSurface::cancel_deconstruct_area() - cancels deconstruction over an area as if the player did it.
    • Added on_pre_entity_settings_pasted and on_entity_settings_pasted events that pass the source and destination entities involved.
    • Added "robot" to the robot related events.
    • Added "chunk_position" to the on_sector_scanned event.
    • Added optional "player_index" to on_marked_for_deconstruction/on_canceled_deconstruction when fired due to player actions. This field is nil when fired from from script/non player action.
    • Added LuaEntity::crafting_progress/bonus_progress write.
    • Added LuaForce:: item/fluid/resource/build counterparts to kill_counts.
    • Added LuaFlowStatistics - used to read/write statistics data related to a given force (production, kills, etc).
    • Removed LuaForce:: set_kill_count/get_kill_count/kill_counts - these are now readable through LuaFlowStatistics.
    • Added LuaGame::disable_replay() - disables the replay for the current save game.
    • Added several player related events: on_player_cursor_stack_changed, on_player_main_inventory_changed, on_player_quickbar_inventory_changed, on_player_tool_inventory_changed, on_player_armor_inventory_changed, on_player_ammo_inventory_changed, on_player_gun_inventory_changed, on_player_placed_equipment, on_player_removed_equipment, on_pre_player_died, on_player_died, on_player_respawned, on_player_joined_game, on_player_left_game
    • Added events for tile building: on_player_built_tile, on_player_mined_tile, on_robot_built_tile, on_robot_mined_tile
    • Added LuaEntity::damage_dealt/kills read/write - usable with turrets.
    • Added LuaGameScript::active_mods - a table of active mod names to mod versions.
    • Added LuaEquipmentGrid::get - gets the equipment at the given equipment grid position or nil if none.
    • Added LuaEntity::player, returns the player connected to the character entity.
    • Added LuaInventory::get_filter, set_filter, has_filters, can_set_filter methods to set/get/clear filters on inventories that support them.
    • Changed LuaEntity::get_filter/set_filter parameters around to match the inventory versions. They also now only work on inserter filters.
    • Added LuaPlayer::get_craftable_count/begin_crafting/cancel_crafting/crafting_queue to read/write crafting information for a player.
    • Added modifiers to the character entity that stack with the force research bonuses but are unique to the character: character_crafting_speed_modifier, character_mining_speed_modifier, character_running_speed_modifier, character_build_distance_bonus, character_item_drop_distance_bonus, character_reach_distance_bonus, character_resource_reach_distance_bonus, character_item_pickup_distance_bonus, character_loot_pickup_distance_bonus, quickbar_count_bonus, character_inventory_slots_bonus, character_logistic_slot_count_bonus, character_trash_slot_count_bonus, character_maximum_following_robot_count_bonus, character_health_bonus
    • Added LuaTilePrototype accessible from LuaTile::prototype and LuaGameScript::tile_prototypes.
    • Added LuaEquipmentPrototype accessible from LuaEquipment::prototype and LuaGameScript::equipment_prototypes.
    • Added LuaGuiElement::tooltip read/write - a localised tooltip for any GUI element.
    • Added LuaCircuitNetwork readable off entities with circuit network connections and through control behaviours.
    • Changed StickerPrototype::magnitude to StickerPrototype::target_movement_modifier. Speed of a Unit is not multiplied by value of target_movement_modifier.
    • Added optional "limit" field to find_entities_filtered and count_entities_filtered to limit the results.
    • Added "force" to the entity_died event when the killing force is known - nil otherwise.
    • Added LuaEntity::unit_number - read - a unique ID field used by all entities having owners.
    • Added LuaInventory::index - the inventory index the inventory reference uses.
    • Added LuaEntity::supports_backer_name() - true when an entity supports a backer name.
    • Added LuaEntityPrototype::belt_speed and underground_belt_distance read.
    • Added LuaEntityPrototype::result_units the result units a biter spawner can spawn.
    • Added LuaItemPrototype::ammo_type read.
    • Multiple stickers (i.e. slowdown capsule + fire) can be applied to a unit entity.
    • Added LuaEntity::get_quickbar() - gets the quickbar of the character or player.
    • Changed LuaEntity::color to work for locomotives, cargo wagons, and characters - it will return nil if used on other entities.
    • Added LuaEntity::mining_progress/bonus_mining_progress read write - for mining drill entities.
    • Added LuaEntityPrototype::attack_result - the attack result for entities using attacks (beams, fire, landmines, projectiles).
    • Added LuaEntityPrototype::final_attack_result - the final attack result of a projectile.
    • Added LuaFluidPrototype::base_color + flow_color read.
    • The Train changed state event now fires when a train goes from stationary to moving or from moving to stationary while under manual control.
    • Prototypes can have the optional properites "localised_name" and "localised_description" to manually define the localised keys instead of using the auto generated keys.
    • Added sprite-button gui element, works the same way as button, but it can have sprite name assigned.
    • Added sprite gui element, can have the sprite name assigned/changed and has no interaction logic.
    • Custom sprites can be defined in lua data definition (type = sprite, the rest is sprite definition).
    • Sprite identifier can either point to custom definition from the data, or have form <type>/<id>, type can be (item, entity, recipe and technology), for example button.sprite = "item/iron-plate"
    • Renamed some defines (groupstate->group_state, circuitconnector->circuit_connector, circuitconditionindex->circuit_condition_index, trainstate->train_state)
    • Removed game.regenerate_tiles().
    • Removed game.get_player() and game.get_surface(): game.players[] and game.surfaces[] can be used instead.
    • Changed game.players, game.surfaces, game.entity_prototypes, game.item_prototypes, game.fluid_prototypes, force.recipes, force,technologies to use custom access + iterator objects for improved performance.
    • Changed game.players[] to work with both the player index and the player name.
    • Added on_gui_text_changed and on_gui_checked_state_changed events.
    • Changed "defines" so they're available by default and removed the defines.lua file.
    • Renamed LuaForce::logistic_robot_storage_modifier -> logistic_robot_storage_bonus to better match what it does
    • LuaEntity has built_by read/write.
    • game.player has been removed (use game.players[#] and associated event.player_index during events).
    • game.local_player has been renamed to game.player and now works through remote calls.
    • Offline players can be teleported anywhere (between surfaces or just around).
    • entity.get_inventory(index) returns nil if it doesn't have an inventory for the given index instead of giving an error.
    • entity.riding_state can be set on cars without players and the car will act as if it's being driven by a player (consume fuel).
    • Changed LuaForce::current_research to accept "nil" to stop the current research.
    • Added LuaTrain::front_stock and back_stock the front and back rolling stock entities of the train.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Jun 27, 2016
Factorio - Klonan
Here is a summary of the New features of 0.13

  • Major features
    • Improved Multiplayer game UX (see https://www.factorio.com/blog/post/fff-139 and https://www.factorio.com/blog/post/fff-116). Server games are published to the server and clients can browse existing games. Automatic discovery for the LAN games.
    • Mod Portal integration. Factorio can list and install mods from the mod portal. more
    • Achievements and Steam Achievements integration. (https://www.factorio.com/blog/post/fff-125) Modded games won't have the achievements recorded on steam.
    • Rail planner tool simplifies the rail building. (https://www.factorio.com/blog/post/fff-113)
    • Added fire. Fire will spread between trees and cause forest fires, causing a large amount of pollution to be released.
    • Power switch. It can be used to control the energy flow. Power switch can be connected to the circuit network. (https://www.factorio.com/blog/post/fff-115)
    • Added the Stack inserter - an expensive upgrade over fast inserters that can move several more items at a time.
    • Flamethrower turret. Fueled with fluid, shoots a stream of burning oil towards oncoming enemies.
    • Bonus gui (accessible from sidebar gui) showing bonuses the force has researched.
    • Train station window contains a list of all trains (each can be opened) that have that station on their schedule.
    • Single train gui now has an additional panel which shows the minimap/camera view of the given train.
    • Search field to the filter selection and recipes selection windows.
    • Trains gui. It displays all the trains as small minimaps with schedules, which can be searched.
    • Extension of the train wait conditions. (https://www.factorio.com/blog/post/fff-114)
    • New locomotive, cargo wagon and train stop graphics. Locomotives can be colored. The trains are a consistent size in horizontal and vertical orientations.
    • New technology tree gui. (https://www.factorio.com/blog/post/fff-128)

  • Minor Features
    • Blueprints can be now edited.
    • Added the Blueprint Book item - an item to manage blueprints. The book can be renamed and only holds blueprints.
    • Map generator algorithm changed, further resource field now have greater richness.
    • Added landfill, it can be used to replace water areas with grass.
    • Added yellow/black striped concrete tile that is rotatable.
    • Small sidebar gui containing buttons for main menu, production statistics, etc.
    • Armors have inventory size bonuses (10 for modular armor, 20 for power armor, 30 for power armor mk2).
    • Underground pipes and belts are placed at max connecting distance apart when built by dragging.
    • --scenario2map: Creates a save from a custom scenario, without initialising the graphics.
    • The lamp can change it's color based on circuit network signals.
    • Roboport is connectable to the circuit network. It sends the logistic network contents or the robot statistics of the network.
    • Accumulator is connectable to the circuit network. It sends it's charge level as a percentage.
    • Transport Belt is connectable to the circuit network. It can be turned on or off and it can send it's contents to the circuit network.
    • Rail Signal is connectable to the circuit network. It will send the signal's state and can block trains from passing.
    • Gate can be controlled through the circuit network by connecting to the wall next to it. It can be opened manually or send a signal if the player is nearby.
    • Requester chest's requested items can be set automatically from the circuit network.
    • Inserters can now send the item held in hand to the circuit network. Filter inserters can have their filters set automatically from the circuit network.
    • Most entities that can be turned on or off by the circuit network can also be turned on or off by directly using a logistic condition.
    • Circuit network and logistic network conditions can now be accessed by icons in the top-right corner of the entity's GUI, for all connectable entities.
    • Connected Red/Green wires are highlighted when hovering over a combinator or entity connected to the circuit network.
    • Wire disconnecting is incorporated in the latency hiding.
    • Crafting machine item/fluid total craft counts are recorded per force.
    • Intro sound in the loading screen.
    • Improvements to the statistics GUI (electric network/production info). Added the ability to filter out things. Added the ability to view "all" information recorded. Made the GUI scrollable.
    • Added /ban /kick /bans /admins and /admin commands.
    • Added /color command, so changing color doesn't require access to lua commands.
    • When running as a server, Factorio now accepts console commands on standard input.
    • When running as a server, Factorio can be told to listen for RCON connections. To use this, specify both the --rcon-port and --rcon-password parameters on the command line. The network protocol is specified here: https://developer.valvesoftware.com/wiki/Source_RCON_Protocol
    • New parameter to start the headless server: --start-server-load-latest. Instead of accepting a save name, it will automatically load the latest save in the saves folder.
    • The "disallow-commands" flag has been changed to "allow-commands" and accepts "true", "false", and "admins-only" for values.
    • It is stored and shown which player built each of the machines.
    • Added cluster grenades and grenade upgrades.
    • Added flamethrower and flamethrower turret damage upgrades.
    • When creating a new map using the --create command-line option, --map-gen-settings can be used to specify the map generation settings.
    • Log file reopening on SIGUSR1 and a commandline option to disable log rotation.
    • The default font looks better (improved hinting for the thinnest weight).
    • Labels and values in descriptions have different colors.
    • Item health bars are rendered green, yellow, red based off the % health remaining like entities.
    • Modules support in blueprints.
    • Equipment can be put in open equipment grids using standard inventory shortcuts (shift + click, ctrl + click).

  • Ease of use
    • Turret displays its range when you hover over it.
    • Rail signal/train stop placement indicator. (https://www.factorio.com/blog/post/fff-134)
    • Indicator of train vehicle positions in a station when building next to track where would the train stop.
    • It is possible to change the module in the slot to different one without having to clear it first.
    • It is possible to upgrade modules to more powerful variant in machine by fast entity transfer.
    • Clear cursor first cancels the current action (rail building, wire dragging, blueprint/deconstruction), and only removes the item from the cursor when pressed again.
    • Saving a game changes selected name and directory for next saves. more
    • Clicking different filtered slot in quickbar will try to clear the currently selected quickbar item if possible.
    • Cleaning item in cursor that is taken from quickbar slot will try to refill the slot from the inventory if possible.
    • Clicking on the warning icon will open the location on the map.
    • Pressing E/Escape will close the map mode.
    • It is possible to move the map by clicking and dragging.
    • Hovering mouse over inventory logistic request slots makes matching items in inventory be highlighted.
    • Fixed the zoom to cursor feature introduced in 0.8 that was non functional since 0.10.
    • Improved the rail selection logic in junctions.
    • Stone Rock can now be mined and deconstructed by robots. It gives some stone as resource.
    • Combinators input and output arrows in alt mode. Additional alt mode information can be turned on in the options menu.
    • The constant combinator has an on/off switch.
    • Several non-stackable items can be swapped directly with counterparts (power armor, deconstruction planner, selection tools).
    • Inventory filter slots can be copy-pasted from empty slots onto empty slots using the stack transfer/split controls (shift + left click, shift + right click by default).

  • Balancing
    • The productivity module pollution addition was lowered (30%->5%, 40%->7.5%, 50%->10%), as the pollution generated by the machine is already increased by the additional energy production and time, it doesn't need to be so high as the modules are quite expensive already.
    • Repair packs have double durability (100->200) and stack size (50->100).
    • Changed stack size of raw wood (50->100) so it doesn't fill the inventory so quickly.
    • Roboport have decreased transmition power consumption (200kw->50kw) while the robots (and their recharging) has increased power consumption (200kW per recharge slot to 1Mw per slot) Basically, covering area by roboports is cheaper, but using robots for transport is more expensive. To keep the personal roboport usefulness, energies used in personal roboport have been all multiplied by 10.
    • Inserters are able to squeeze things "slightly" better to belts. more resources.
    • Increased size of several green science and few blue science technologies.
    • Increased inventory size of cargo wagon. (30->40)
    • Oil yield drains to 10% two times slower.
    • Big and behemoth enemies spawn 50% slower.
    • Armor resistances are applied before the energy shield is used.
    • Increased the ghost time to live when something is destroyed from 5 + 5 minutes to 30 + 30 minutes.
    • Halved the mining time of rails, rail signals and walls.
    • Changed the way evolution factor approaches the maximum (1). The addition of evolution factor was changed from addition * (1 - evolution) to addition * (1 - evolution)^2 This means that the progress gets more slower towards the high values.
    • Balanced train acceleration and top speed, additional wagons no longer slow trains so strongly.
    • Changed the amount of items requested when copy-pasting assembling machines to requester chests for several recipes.
    • Express underground belts require lubricant to match the express belts and express splitters.
    • Increased battery equipment power storage, input, and output by a factor of 20.

  • Changes
    • Reduced number of connections drawn between roboports in blueprint and roboports on map.
    • More virtual signals for combinators.
    • Vitual signals can be used in blueprint icons.
    • Disabled loading of saves before 0.10.0 version (You can use 0.10.12 to load older saves and re-save them).
    • Removed multiplayer peer-to-peer mode.
    • Ghosts created by player no longer expire and can be placed before researching any technologies.
    • Ghosts are brighter and easier to see.
    • Alert of destroyed entity exists 2 times longer.
    • Quickbar filters are set and unset using the same key.
    • Loading a scenario without control.lua will automatically load the freeplay game mode scripts. This means new maps created in the map editor will get the freeplay game mode.
    • Loading a scenario in the map editor will preserve it's scripts. This means custom freeplay/sandbox maps can be created in-game.
    • Constant combinator can be rotated.
    • All types of inserters can be controlled by the circuit and logistic network, once the respective network is researched.
    • All types of chests can be connected to the circuit network. Smart Chest was removed from the game.
    • Decider combinator "input count" option makes the combinator copy the count of the specified output signal from the input signals, instead of copying the count from the condition. This might break some setups. https://forums.factorio.com/13706
    • Transport belt connectable entities will disconnect from incoming (and all other) belts when marked for deconstruction. The problem is solves is described in this bug report: https://forums.factorio.com/19038
    • Spaces are now allowed in file names when saving.
    • Changed the fluid color of heavy oil to match the icon color.
    • Alert beep sound is activated only when something is destroyed, not by something damaged.
    • Spitter attack distance is randomised slightly to make them look more organic.
    • Rocket fuel can now be used as fuel.
    • Saves given on command line (to options --start-server, --mp-load-game, --load-game, --create) are always absolute or relative paths. If the path is relative, it is relative to the current directory (where the binary is run from).
    • Main menu background image is scaled proportionally now. more
    • Renamed "research-effectivity" to "research-speed".
    • Removed light entity info background option.
    • Cleaned up freeplay and sandbox scenario scripts.
    • Exiting vehicles now puts you to the left of the vehicle with respect to the orientation of the vehicle.

  • Graphics
    • Health bars are partially visible when obstructed.
    • High resolution ingame indicators.
    • New fire graphics for Stone Furnace, Steel Furnace and Boiler.
    • New icons for rocket fuel, low density structure, rocket control unit, satellite, car and tank.
    • Entities show a circuit connector when connected to the circuit or logistics network.
    • Added compression for some sprites to save video memory. This can be enabled in Graphics options.
    • Added linear filtering for GUI icons. This can be disabled in Graphics options.
    • New combinator graphics.

  • Optimisations
    • Optimised gui render.
    • Minimap is rendered in 16bit colors to reduce memory usage.
    • Less memory usage for entities that are connectable to the circuit network.
    • Faster map unload on Quit to Main Menu or closing the game.
    • Optimised pollution rendering on map and minimap.
    • Optimised roboport radius rendering.
    • Optimised biter pathfinding. (https://www.factorio.com/blog/post/fff-117 https://www.factorio.com/blog/post/fff-121)
    • Optimised save file times by doing compression in parallel.

  • Bugfixes
    • Fixed recipe ordering when recipes had the same group and group order string.
    • Limited number of explosion sounds for grenade, explosive cannon shells, explosive rockets.
    • Underground belts won't connect if underground belt ghost is in the way. more
    • File saving is done in a safer, more atomic way. This should help prevent some cases where a safe file or the config file can go missing.
    • Building sound is played also for other players in multiplayer.
    • Red/green wires change electric pole orientation the same way normal connections do. more
    • Fixed the rotation of train vehicles to be built.
    • Fixed clearing the player cursor stack and then inserting into the player quickbar in the same tick not preferring filtered slots. more
    • Fixed unrecognizable item icons when playing on very low graphics settings. more
    • Fixed that ghost building on power poles disconnects them, as it is the same shortcut. more
    • Fixed multiple construction bots could be sent out to mine single tree. more
    • Fixed that LuaGameScript::take_screenshot could take negative values of zoom or resolution. more
    • Fixed robots would carry items from active provider chests to storage chests even when requester chest needed those items. more
    • Fixed setting the cursor stack from script when having a selection from a filtered slot allowing the wrong item in the slot. more
    • Items inserted into assemblers now update tooltips. more
    • Map editor save GUI now always fits on the screen.
    • Will explicitly show system mouse cursor when exiting Steam Overlay, just in case Steam forgets to do it. more
    • Fixed that commands would still be disabled in single-player after loading a map created in MP with commands disabled. more
    • Fixed that a biter could get stuck trying to attack a building in some cases. more
    • Fixed unclear error message when attempting to run multiple instances of Factorio with same write-path. more
    • Fixed the space key animating buttons. more
    • Fixed fluid getting into the wrong inputs on assembling machines. more
    • Long tooltip descriptions (below the minimap) won't stretch the whole right column.
    • Fixed being able to copy settings onto and rotate entities marked as non-operable. more
    • Fixed that player names wouldn't show up on the chart when UI scale was set to 100% or less. more
    • Fixed that the same error message could appear twice in multiplayer. more
    • Fixed equipment tooltips in equipment grids not showing when putting new equipment into the grid.
    • Command key can be now used as a modifier in controls on Mac OSXmore
    • Fixed that a peer could kick every other peer from an MP game. more
    • Fixed train air resistance calculation.
    • Fixed wire drawing in the right-pane description for electric poles. more
    • Fixed freeplay and sandbox scenario initial rocket count. more
    • Fixed sandbox scenario wouldn't recognize rocket launches.
    • Fixed modifying item stacks directly in the player wouldn't trigger an inventory sort in some instances.
    • Fixed crash when modded locomotive uses other than burner energy source. more

  • Modding
    • Mods need to have factorio_version value in their info which specifies major Factorio version they are suited for, default value is 0.12. Mods with non fitting version are not loaded.
    • Added item_pickup_distance and loot_pickup_distance to player definition.
    • Added invalid parameter error for data.extend function.
    • Added the ability to define additional_pastable_entities for an entity which allows copy-paste between that entity type and the defined destination types. Useful in conjunction with the new copy-paste events.
    • Added a new item type "selection-tool" that fires the events on_player_selected_area and on_player_alt_selected_area.
    • Unified prototype names to be consistant with ingame names. (basic-transport-belt->transport-belt, *transport-belt-to-ground->*underground-belt, basic-splitter->splitter, basic-inserter->inserter, basic-mining-drill->electric-mining-drill, basic_beacon->beacon, basic-bullet-magazine->firearm-magazine, piercing-bullet-magazine->piercing-rounds-magazine, basic-grenade->grenade, basic-armor->light-armor, basic-modular-armor->modular-armor, basic-laser-defense-equipment->personal-laser-defense-equipment, basic-exoskeleton-equipment->exoskeleton-equipment)
    • Construction robots will now use any available repair tool items instead of a fixed single item defined in the prototype for the robot.
    • Various indicator and game icons are defined in the utility-sprites objects, so it is now moddable.
    • Added new research options: character-crafting-speed, character-mining-speed, character-running-speed, character-build-distance, character-item-drop-distance, character-reach-distance, character-resource-reach-distance, character-item-pickup-distance, character-loot-pickup-distance, character-inventory-slots-bonus, deconstruction-time-to-live, character-health-bonus
    • Sticker entity can deal damage.
    • Added a new entity type "electric-energy-interface" that can consume, produce, and accept energy while also allowing all of its electric network parameters to be configured runtime.
    • Added flags to energy_source prototypes "render_no_network_icon" and "render_no_power_icon" to prevent rendering those icons when set.
    • Removed "inventory_order" prototype property as it wasn't actually used and isn't needed.
    • Removed "radius_visualisation_picture" and "construction_radius_visualisation_picture" from roboport and roboport-equipment prototypes. The pictures were moved to core. If needed you can use "draw_logistic_radius_visualization" and "draw_construction_radius_visualization" boolean properties to disable drawing radius in your prototype.

  • Scripting
    • Moved LuaGame::daytime/wind/wind_orientation/wind_orientation_change/peaceful_mode to LuaSurface.
    • Added LuaEntity::held_stack_position. It tells you the world position of the inserter arm.
    • Added LuaGame::delete_surface. Deletes the surface passed in if the surface is deletable.
    • Added LuaItemStack::create_blueprint() - sets up a blueprint as if a player did it.
    • Added LuaItemStack::build_blueprint() - builds a blueprint as if the player built it in the world.
    • Added LuaSurface::deconstruct_area() - deconstructs an area as if the player did it.
    • Added LuaSurface::cancel_deconstruct_area() - cancels deconstruction over an area as if the player did it.
    • Added on_pre_entity_settings_pasted and on_entity_settings_pasted events that pass the source and destination entities involved.
    • Added "robot" to the robot related events.
    • Added "chunk_position" to the on_sector_scanned event.
    • Added optional "player_index" to on_marked_for_deconstruction/on_canceled_deconstruction when fired due to player actions. This field is nil when fired from from script/non player action.
    • Added LuaEntity::crafting_progress/bonus_progress write.
    • Added LuaForce:: item/fluid/resource/build counterparts to kill_counts.
    • Added LuaFlowStatistics - used to read/write statistics data related to a given force (production, kills, etc).
    • Removed LuaForce:: set_kill_count/get_kill_count/kill_counts - these are now readable through LuaFlowStatistics.
    • Added LuaGame::disable_replay() - disables the replay for the current save game.
    • Added several player related events: on_player_cursor_stack_changed, on_player_main_inventory_changed, on_player_quickbar_inventory_changed, on_player_tool_inventory_changed, on_player_armor_inventory_changed, on_player_ammo_inventory_changed, on_player_gun_inventory_changed, on_player_placed_equipment, on_player_removed_equipment, on_pre_player_died, on_player_died, on_player_respawned, on_player_joined_game, on_player_left_game
    • Added events for tile building: on_player_built_tile, on_player_mined_tile, on_robot_built_tile, on_robot_mined_tile
    • Added LuaEntity::damage_dealt/kills read/write - usable with turrets.
    • Added LuaGameScript::active_mods - a table of active mod names to mod versions.
    • Added LuaEquipmentGrid::get - gets the equipment at the given equipment grid position or nil if none.
    • Added LuaEntity::player, returns the player connected to the character entity.
    • Added LuaInventory::get_filter, set_filter, has_filters, can_set_filter methods to set/get/clear filters on inventories that support them.
    • Changed LuaEntity::get_filter/set_filter parameters around to match the inventory versions. They also now only work on inserter filters.
    • Added LuaPlayer::get_craftable_count/begin_crafting/cancel_crafting/crafting_queue to read/write crafting information for a player.
    • Added modifiers to the character entity that stack with the force research bonuses but are unique to the character: character_crafting_speed_modifier, character_mining_speed_modifier, character_running_speed_modifier, character_build_distance_bonus, character_item_drop_distance_bonus, character_reach_distance_bonus, character_resource_reach_distance_bonus, character_item_pickup_distance_bonus, character_loot_pickup_distance_bonus, quickbar_count_bonus, character_inventory_slots_bonus, character_logistic_slot_count_bonus, character_trash_slot_count_bonus, character_maximum_following_robot_count_bonus, character_health_bonus
    • Added LuaTilePrototype accessible from LuaTile::prototype and LuaGameScript::tile_prototypes.
    • Added LuaEquipmentPrototype accessible from LuaEquipment::prototype and LuaGameScript::equipment_prototypes.
    • Added LuaGuiElement::tooltip read/write - a localised tooltip for any GUI element.
    • Added LuaCircuitNetwork readable off entities with circuit network connections and through control behaviours.
    • Changed StickerPrototype::magnitude to StickerPrototype::target_movement_modifier. Speed of a Unit is not multiplied by value of target_movement_modifier.
    • Added optional "limit" field to find_entities_filtered and count_entities_filtered to limit the results.
    • Added "force" to the entity_died event when the killing force is known - nil otherwise.
    • Added LuaEntity::unit_number - read - a unique ID field used by all entities having owners.
    • Added LuaInventory::index - the inventory index the inventory reference uses.
    • Added LuaEntity::supports_backer_name() - true when an entity supports a backer name.
    • Added LuaEntityPrototype::belt_speed and underground_belt_distance read.
    • Added LuaEntityPrototype::result_units the result units a biter spawner can spawn.
    • Added LuaItemPrototype::ammo_type read.
    • Multiple stickers (i.e. slowdown capsule + fire) can be applied to a unit entity.
    • Added LuaEntity::get_quickbar() - gets the quickbar of the character or player.
    • Changed LuaEntity::color to work for locomotives, cargo wagons, and characters - it will return nil if used on other entities.
    • Added LuaEntity::mining_progress/bonus_mining_progress read write - for mining drill entities.
    • Added LuaEntityPrototype::attack_result - the attack result for entities using attacks (beams, fire, landmines, projectiles).
    • Added LuaEntityPrototype::final_attack_result - the final attack result of a projectile.
    • Added LuaFluidPrototype::base_color + flow_color read.
    • The Train changed state event now fires when a train goes from stationary to moving or from moving to stationary while under manual control.
    • Prototypes can have the optional properites "localised_name" and "localised_description" to manually define the localised keys instead of using the auto generated keys.
    • Added sprite-button gui element, works the same way as button, but it can have sprite name assigned.
    • Added sprite gui element, can have the sprite name assigned/changed and has no interaction logic.
    • Custom sprites can be defined in lua data definition (type = sprite, the rest is sprite definition).
    • Sprite identifier can either point to custom definition from the data, or have form <type>/<id>, type can be (item, entity, recipe and technology), for example button.sprite = "item/iron-plate"
    • Renamed some defines (groupstate->group_state, circuitconnector->circuit_connector, circuitconditionindex->circuit_condition_index, trainstate->train_state)
    • Removed game.regenerate_tiles().
    • Removed game.get_player() and game.get_surface(): game.players[] and game.surfaces[] can be used instead.
    • Changed game.players, game.surfaces, game.entity_prototypes, game.item_prototypes, game.fluid_prototypes, force.recipes, force,technologies to use custom access + iterator objects for improved performance.
    • Changed game.players[] to work with both the player index and the player name.
    • Added on_gui_text_changed and on_gui_checked_state_changed events.
    • Changed "defines" so they're available by default and removed the defines.lua file.
    • Renamed LuaForce::logistic_robot_storage_modifier -> logistic_robot_storage_bonus to better match what it does
    • LuaEntity has built_by read/write.
    • game.player has been removed (use game.players[#] and associated event.player_index during events).
    • game.local_player has been renamed to game.player and now works through remote calls.
    • Offline players can be teleported anywhere (between surfaces or just around).
    • entity.get_inventory(index) returns nil if it doesn't have an inventory for the given index instead of giving an error.
    • entity.riding_state can be set on cars without players and the car will act as if it's being driven by a player (consume fuel).
    • Changed LuaForce::current_research to accept "nil" to stop the current research.
    • Added LuaTrain::front_stock and back_stock the front and back rolling stock entities of the train.

You can get experimental releases by selecting the 'experimental' beta branch under Factorio's properties in Steam.
Factorio - Klonan
Hello Factorians,

Most of the week has been spent by tweaking and fixing stuff that keeps coming up for the Monday release. Even though things seem to work reasonably well for us a lot of the reported issues are to be expected. Especially regarding the Matching Server and the Mod Portal. It is quite tricky to test these things in our limited environment. So please keep calm and report the bugs=)

Some time ago we came up with an idea of involving more people from the team in writing Friday Facts than just kovarex or tomas. The motivation was to take off quite some responsibility from our shoulders but also to give other team members the opportunity to present their work - which we believe can be interesting to the readers. So slowly, posts written mostly by other developers (related to what they currently work on) started appearing. We would like to go in this one even further. So today, the post is written by Albert, our art director, who will give some introduction into the project from the point of view of the graphics creation and where he is going to steer the project art-wise in the future.

The process

Factorio is made in a way that I consider very organic. What I mean is that we have a general plan, a goal. But in the way of approaching this goal we are able to sit and watch, and see how it goes and tweak it if necessary.

Always with the intention of being honest with the project and ourselves, in a realistic way, we see if the plan is working or not.
Normally it works but not fully 100%. Or it works just on paper but it won't work in the reality.
So at that point is where we need to accomplish the plan by having modifications and inserting unexpected additions.

These unexpected additions can be the difference in between bad, regular, good or fantastic.
So they are very important for all of us. One significant example of what I mean is the entire train system.
After having it working since long and playing with it and observing how you players use it, we come out with huge improvements and additions.
I'm not saying that the entire train system is now perfect, but it is much better. I hope you will feel it (see the comparison below).

After all that time of development, and experimenting, Factorio is in a stage where we can see less or more easily how to improve it, and this is the point I wanted to get in.

The plans for the future visuals can be separated in 4 main branches:

1. Graphical User Interface (GUI)

Let's face it, we can do it better, and we want to. GUI shouldn't be improvised anymore, now we have the big picture. I'm going to be focused in this task together with Jan, our new programmer who has shown the skills and sensitivity to take care of this delicate matter. Together and with the feedback of the entire team we will rethink and re-shape the whole GUI in order to go for the final version.

2. High resolution graphics

Kovarex said long time ago that we are preparing the engine for playing in high-res. Since then, every new entity we do is designed and rendered for having 2 versions: normal and HR.

Now, we have to move backwards in order to have the old entities like inserters, transport-belts, pipes, terrains, doodads, and a huge etc., in HR also.

This is not a matter of just render it in double resolution, many things won't work with double size because the original design was meant to be just normal resolution.

This can be bad, but I prefer to take it in the good way because now we have the chance to improve the design of many of the old entities and give them the modern and final direction we want for the game. So this subject is divided into re-render in HR and redesign old entities also.

There' another subcategory in this subject, the icons. The plan is to to have all the icons in HR.

3. Terrain and environment

The actual terrain we use now is fine to me, but we would like to expand it in order to get more variety in the final picture.
Jurek is our new 3d artist, he started this week in the studio and he's now playing and experimenting with terrain in order to get this variety of environment we want for the game. Good luck for Jurek : )

4. New entities

The studio is plenty of programmers, really, if you go to the toilette or the kitchen or anywhere, you will find some programmer there doing programmer stuff. That's great because the huge task of bug-fixing can be covered by a big part of them, and the game designer - kovarex - can be free to invent and prototype new entities.
This means a stream of tasks for the graphic department. This will be covered by Vaclav and me, So I will take the concept and work on it, and once it is ready, Vaclav can work on 3d for making it real and introduce it into the game.

Until here the big picture of the general plan for the art side of Factorio, we can cover them in more detail, and probably we will. Also there's some other secondary tasks but it looks that the GFX reports will happen more often, so let's take them for another day.

Also do not expect to have all this ready immediately, we would love to have them ASAP, but if something I learned from Factorio is that there's no easy stuff. What it looks easy, probably will take more than what you expect. So no promises, but very good intentions.


If you want to comment anything about the ideas above exposed, please use the regular channel in the forums as always.
Thanks for the interest and see you in future posts.
Factorio - Klonan
Hello Factorians,

Most of the week has been spent by tweaking and fixing stuff that keeps coming up for the Monday release. Even though things seem to work reasonably well for us a lot of the reported issues are to be expected. Especially regarding the Matching Server and the Mod Portal. It is quite tricky to test these things in our limited environment. So please keep calm and report the bugs=)

Some time ago we came up with an idea of involving more people from the team in writing Friday Facts than just kovarex or tomas. The motivation was to take off quite some responsibility from our shoulders but also to give other team members the opportunity to present their work - which we believe can be interesting to the readers. So slowly, posts written mostly by other developers (related to what they currently work on) started appearing. We would like to go in this one even further. So today, the post is written by Albert, our art director, who will give some introduction into the project from the point of view of the graphics creation and where he is going to steer the project art-wise in the future.

The process

Factorio is made in a way that I consider very organic. What I mean is that we have a general plan, a goal. But in the way of approaching this goal we are able to sit and watch, and see how it goes and tweak it if necessary.

Always with the intention of being honest with the project and ourselves, in a realistic way, we see if the plan is working or not.
Normally it works but not fully 100%. Or it works just on paper but it won't work in the reality.
So at that point is where we need to accomplish the plan by having modifications and inserting unexpected additions.

These unexpected additions can be the difference in between bad, regular, good or fantastic.
So they are very important for all of us. One significant example of what I mean is the entire train system.
After having it working since long and playing with it and observing how you players use it, we come out with huge improvements and additions.
I'm not saying that the entire train system is now perfect, but it is much better. I hope you will feel it (see the comparison below).

After all that time of development, and experimenting, Factorio is in a stage where we can see less or more easily how to improve it, and this is the point I wanted to get in.

The plans for the future visuals can be separated in 4 main branches:

1. Graphical User Interface (GUI)

Let's face it, we can do it better, and we want to. GUI shouldn't be improvised anymore, now we have the big picture. I'm going to be focused in this task together with Jan, our new programmer who has shown the skills and sensitivity to take care of this delicate matter. Together and with the feedback of the entire team we will rethink and re-shape the whole GUI in order to go for the final version.

2. High resolution graphics

Kovarex said long time ago that we are preparing the engine for playing in high-res. Since then, every new entity we do is designed and rendered for having 2 versions: normal and HR.

Now, we have to move backwards in order to have the old entities like inserters, transport-belts, pipes, terrains, doodads, and a huge etc., in HR also.

This is not a matter of just render it in double resolution, many things won't work with double size because the original design was meant to be just normal resolution.

This can be bad, but I prefer to take it in the good way because now we have the chance to improve the design of many of the old entities and give them the modern and final direction we want for the game. So this subject is divided into re-render in HR and redesign old entities also.

There' another subcategory in this subject, the icons. The plan is to to have all the icons in HR.

3. Terrain and environment

The actual terrain we use now is fine to me, but we would like to expand it in order to get more variety in the final picture.
Jurek is our new 3d artist, he started this week in the studio and he's now playing and experimenting with terrain in order to get this variety of environment we want for the game. Good luck for Jurek : )

4. New entities

The studio is plenty of programmers, really, if you go to the toilette or the kitchen or anywhere, you will find some programmer there doing programmer stuff. That's great because the huge task of bug-fixing can be covered by a big part of them, and the game designer - kovarex - can be free to invent and prototype new entities.
This means a stream of tasks for the graphic department. This will be covered by Vaclav and me, So I will take the concept and work on it, and once it is ready, Vaclav can work on 3d for making it real and introduce it into the game.

Until here the big picture of the general plan for the art side of Factorio, we can cover them in more detail, and probably we will. Also there's some other secondary tasks but it looks that the GFX reports will happen more often, so let's take them for another day.

Also do not expect to have all this ready immediately, we would love to have them ASAP, but if something I learned from Factorio is that there's no easy stuff. What it looks easy, probably will take more than what you expect. So no promises, but very good intentions.


If you want to comment anything about the ideas above exposed, please use the regular channel in the forums as always.
Thanks for the interest and see you in future posts.
Factorio - HanziQ
Hello all,

About 0.13.0
The hype for the upcoming 0.13.0 release has been growing. There are two news I can give you at the moment. As usual one is "bad" and the other is "good". So let's start with the bad one. The release has been postponed. Now the good one. The release has a fixed and specific date now (as opposed to "yeah soonish ..."). The date is 27th of June (a week from Monday). This is a hard deadline. Basically unless something very unexpected happens (i.e. the office being hit by the meteor and our release server not surviving the impact=)) that is when the release will be.

There are a few good reasons for us to postpone the release.
  • The NAT punching (see the rest of the post) has been just finished and we need to do some testing of it.
  • The mod portal requires some final tweaks to be at least basically functional.
  • Issues are still being found during internal playtesting.
  • kovarex is away for holidays and in his words "he prefers to relax without worrying about all the bug reports coming up after the release"

Just to share one of the many many issues / details that we came across during the playtesting. Below you can see a debugging visualisation for the smoke animation. Michal (posila) has been using it to figure out if the smoke animation is not getting stuck (which it was) and if the sprites are being drawn in the proper order (z axis wise).



Matching server
In FFF 139 we talked abouta matching server that is going to be integrated in 0.13.0.The matching server will allow you to mark your multiplayer game as public andannounce it to other players, you know how it usually works.

Tomas implemented the server and it's counterpart in Factorio itself, but wedidn't get around to testing it as a whole for a long time.Eventually (while still not testing the feature), we figured that the server willnot work for us here at the office, because we are hopelessly behind NAT (and withUPnP disabled, before you even ask).This realisation made us move the "NAT punching" card from "Ideas for 0.14" to "Priority".

NAT punching and how it works
When a client wants to connect to a server, the server needs to somehow announceits IP address and port for the client to connect to.For a web server this is done using DNS (and pre-determined port numbers), forFactorio multiplayer the matching server has the same role.

With the server behind NAT there are two problems.

First there is no way for the server to determine its IP address and port withoutexternal help and the IP address and port might not be the same for everyone onthe internet.

To solve this we have yet another two servers (called pingpong1 and pingpong2!).When a server starts it asks both of them "What is my IP address?".If we get an answer from both and the answers are the same, it means that the addressreceived should work for all other clients on the internet.If we receive only one of the answers or if the answers differ, then something iswrong and you're out of luck :-)



The second problem is that most NATs in use will not allow an incoming packetunless there have already been some data sent to the address and port that originatedthe packet. After some time

We avoid this problem by keeping a connection open between the game server andpingpong with periodic keepalive packets.When a client wants to connect to the server through matching server, it firstsends a message to the server through pingpong which makes the game server senda first packet to the client and open the mapping in its NAT.



The behavior we use is actually a specialised version of STUNand ICEadapted to run over Factorio protocol.And it looks like it's working :).Unfortunately it will not work under all circumstances (we expect about 70%), butbetter than nothing, right? :-).

The comment thread at our forums is ready.

Next FFF edition will most probably be written by Albert about recent changes and progress in our graphics department.
Factorio - HanziQ
Hello all,

About 0.13.0
The hype for the upcoming 0.13.0 release has been growing. There are two news I can give you at the moment. As usual one is "bad" and the other is "good". So let's start with the bad one. The release has been postponed. Now the good one. The release has a fixed and specific date now (as opposed to "yeah soonish ..."). The date is 27th of June (a week from Monday). This is a hard deadline. Basically unless something very unexpected happens (i.e. the office being hit by the meteor and our release server not surviving the impact=)) that is when the release will be.

There are a few good reasons for us to postpone the release.
  • The NAT punching (see the rest of the post) has been just finished and we need to do some testing of it.
  • The mod portal requires some final tweaks to be at least basically functional.
  • Issues are still being found during internal playtesting.
  • kovarex is away for holidays and in his words "he prefers to relax without worrying about all the bug reports coming up after the release"

Just to share one of the many many issues / details that we came across during the playtesting. Below you can see a debugging visualisation for the smoke animation. Michal (posila) has been using it to figure out if the smoke animation is not getting stuck (which it was) and if the sprites are being drawn in the proper order (z axis wise).



Matching server
In FFF 139 we talked abouta matching server that is going to be integrated in 0.13.0.The matching server will allow you to mark your multiplayer game as public andannounce it to other players, you know how it usually works.

Tomas implemented the server and it's counterpart in Factorio itself, but wedidn't get around to testing it as a whole for a long time.Eventually (while still not testing the feature), we figured that the server willnot work for us here at the office, because we are hopelessly behind NAT (and withUPnP disabled, before you even ask).This realisation made us move the "NAT punching" card from "Ideas for 0.14" to "Priority".

NAT punching and how it works
When a client wants to connect to a server, the server needs to somehow announceits IP address and port for the client to connect to.For a web server this is done using DNS (and pre-determined port numbers), forFactorio multiplayer the matching server has the same role.

With the server behind NAT there are two problems.

First there is no way for the server to determine its IP address and port withoutexternal help and the IP address and port might not be the same for everyone onthe internet.

To solve this we have yet another two servers (called pingpong1 and pingpong2!).When a server starts it asks both of them "What is my IP address?".If we get an answer from both and the answers are the same, it means that the addressreceived should work for all other clients on the internet.If we receive only one of the answers or if the answers differ, then something iswrong and you're out of luck :-)



The second problem is that most NATs in use will not allow an incoming packetunless there have already been some data sent to the address and port that originatedthe packet. After some time

We avoid this problem by keeping a connection open between the game server andpingpong with periodic keepalive packets.When a client wants to connect to the server through matching server, it firstsends a message to the server through pingpong which makes the game server senda first packet to the client and open the mapping in its NAT.



The behavior we use is actually a specialised version of STUNand ICEadapted to run over Factorio protocol.And it looks like it's working :).Unfortunately it will not work under all circumstances (we expect about 70%), butbetter than nothing, right? :-).

The comment thread at our forums is ready.

Next FFF edition will most probably be written by Albert about recent changes and progress in our graphics department.
Factorio - kovarex
Hello!

Playtesting
Most of this week was spent by switching between playtesting and fixing bugs/issues found when doing so. We get little bit further in the technology tree every day as we play our multiplayer playtest game, it always uncovers few bugs or desyncs which we fix immediately so we can continue playing.
We also tweak some inconvenient things. For example, once we are able to build rails fast with the rail builder, it was annoying to mine these when you misaligned them, so we just halved the mining time of rails. The inventory space was running out in the later game, so we made the armor give the character an inventory size bonuses (up to 30).

We felt that the evolution factor growth doesn't slow down enough towards the higher value. In our specific game, it probably grew faster than usually as Scott was more than eager to test the new fire mechanics by setting every forest he found on fire. So we couldn't know what affected the evolution factor the most. We changed the formula of the evolution factor growth and added command /evolution. The game now tracks which factors contributed to the evolution, so you can get something like this:

Evolution factor 0.8702 (Time 9%)(Pollution 57%)(Spawner kills 32%)

It is great for balancing, but the players can use it as well, so they have a better clue of what is going on.

At this stage it is still faster to fix bugs internally rather than going through the bug section on the forums, that is why we didn't released so far, but it is starting to be quite playable these days, so there is a good chance for release next week :)

Circuit connection graphics
Once we decided that everything will be circuit connectable, Robert and Albert agreed that the wire can't just end in the middle of the entity, that it needs something more. So there is a small circuit box sprite attached when the entity is connected. I have to say, that it adds a nice touch to it.



As always, let us know what you think on our forums
Factorio - kovarex
Hello!

Playtesting
Most of this week was spent by switching between playtesting and fixing bugs/issues found when doing so. We get little bit further in the technology tree every day as we play our multiplayer playtest game, it always uncovers few bugs or desyncs which we fix immediately so we can continue playing.
We also tweak some inconvenient things. For example, once we are able to build rails fast with the rail builder, it was annoying to mine these when you misaligned them, so we just halved the mining time of rails. The inventory space was running out in the later game, so we made the armor give the character an inventory size bonuses (up to 30).

We felt that the evolution factor growth doesn't slow down enough towards the higher value. In our specific game, it probably grew faster than usually as Scott was more than eager to test the new fire mechanics by setting every forest he found on fire. So we couldn't know what affected the evolution factor the most. We changed the formula of the evolution factor growth and added command /evolution. The game now tracks which factors contributed to the evolution, so you can get something like this:

Evolution factor 0.8702 (Time 9%)(Pollution 57%)(Spawner kills 32%)

It is great for balancing, but the players can use it as well, so they have a better clue of what is going on.

At this stage it is still faster to fix bugs internally rather than going through the bug section on the forums, that is why we didn't released so far, but it is starting to be quite playable these days, so there is a good chance for release next week :)

Circuit connection graphics
Once we decided that everything will be circuit connectable, Robert and Albert agreed that the wire can't just end in the middle of the entity, that it needs something more. So there is a small circuit box sprite attached when the entity is connected. I have to say, that it adds a nice touch to it.



As always, let us know what you think on our forums
Factorio - Klonan
Hello!

0.13 Progress report
I guess that not so many people really expected that the target day of the 1st of June might be the actual release day. The day was mainly a psychological trick for us to finish all the little fixes and not to start any new projects, so we might be only week or two late instead of months. We started the first multiplayer play-tests last week, but they didn't last long. After the first hour of connection issue fixes, the game desynced every 15 seconds.

The process of determinism fixing that we first experienced when stabilizing 0.11 is now well known to us. With the tools we prepared and partially explained in friday facts 63, we were able to identify and fix determinism issues much much faster than before. It took just a few days compared to several months back then. The last playtest day was 2 days ago, and we were able to play a game where Linux, Mac and Windows players were all present. It lasted a few hours and no major issues were found so we are getting there.

I also have to admit, that the discovery of http://slither.io stole approximately 2 days of our dev time, as the game is really really great :) So if you can't wait for Factorio release, I advice you to try the game in the meantime.

TL;DR
If the further playtesting goes well, the release could happen next week, but you never know.

Mod portal
The information about the mod portal is brought to you by Martin, the train guy and recently also the mod portal guy.

The mod portal is a long awaited feature and it is finally happening! With the release of 0.13, we will be launching the mod portal website, along with an in-game integration. The base of the project was created by the original creator of factoriomods.com. The mod portal can be viewed by anyone, but you will have to log in with your factorio account to download mods, same goes for the in-game version.

Disclaimer

Mostly due to lack of time and the size of the project, it is not in a finished state (and will not be completely finished with the 0.13 release). It contains many bugs and it's missing a fair amount of features that will be coming with later updates. All the graphics of the website or the in-game GUI are subject to change.

Basic features
Mods can be sorted and filtered, they are grouped into categories.



You will be able to rate mods, probably using a 5-star scale and filter/sort mods by rating.





Discussions
Every mod has a discussion with multiple categories - announcements, bug reports, etc. This should help with the clutter we currently have on the forums.





Licensing
We will be requiring every mod to specify a license - either one of the common licenses (like MIT, (L)GPL, Apache, public domain) or a custom one, where you can specify the exact things people are and are not allowed to do with your content.



In-game browser
The in-game browser allows you to do most of the important things like filtering/searching for mods, it also allows you to install a mod with just a single click, same goes for updating mods that are already installed.



Further development
There are a lot of features that we want to still add to all this and they will be slowly appearing with 0.13.x patches. This is more a list of ideas, than a list of confirmed features, some of them might not be implemented.
  • Automatic installation of mods when loading a modded save
  • Automatic installation of mods when connecting to a modded multiplayer game
  • Grouping mods into modpacks
  • Integrating with Github for release management
  • Automatic compatibility testing
  • Various download/usage statistics

The first 0.14 project
One of the first 0.14 projects is the attempt to fix the determinism problems of mods. The issue with mods and determinism is, that lua script as it is doesn't allow us to save everything from its internal state into the save file. When the modder puts pointer to method to a variable or uses variable that is not in the scope of the global, it is not saved. If the mod uses these values to do any changes to the game, it will desynchronize. This not only makes potential problem for modders, but drains our developement time, as we can't just ignore all the desync reports, but reading scripts of modders and searching for mistakes there is not really in our capabilities.

The plan is to enhance the script serialization in a way, that modder basically can't make a faulty mod, as all values will be always saved. This requires some low level hacking, so the lua functions, closures and other internal stuff is saved as a byte code as part of the script. But if it could be done, it would increase the usefulness of mods a lot. The research of whether this is possible will be one of the first task of our new Programmer in the team. Say hello to Honza :)

The locomotive
The train project is almost done as well, let me show you the side view of our new locomotive:



Once we were already working on the train graphics, we had to solve the annoying problem of train wheels not matching the rails in curves. This was obviously not solvable as we rendered the train wagons as one sprite. So we fixed it by drawing the wheels separately, so they can have different orientation than the locomotive itself. The result gives much more organic feeling of the locomotive movement.



As always, let us know what you think on our forums
Factorio - Klonan
Hello!

0.13 Progress report
I guess that not so many people really expected that the target day of the 1st of June might be the actual release day. The day was mainly a psychological trick for us to finish all the little fixes and not to start any new projects, so we might be only week or two late instead of months. We started the first multiplayer play-tests last week, but they didn't last long. After the first hour of connection issue fixes, the game desynced every 15 seconds.

The process of determinism fixing that we first experienced when stabilizing 0.11 is now well known to us. With the tools we prepared and partially explained in friday facts 63, we were able to identify and fix determinism issues much much faster than before. It took just a few days compared to several months back then. The last playtest day was 2 days ago, and we were able to play a game where Linux, Mac and Windows players were all present. It lasted a few hours and no major issues were found so we are getting there.

I also have to admit, that the discovery of http://slither.io stole approximately 2 days of our dev time, as the game is really really great :) So if you can't wait for Factorio release, I advice you to try the game in the meantime.

TL;DR
If the further playtesting goes well, the release could happen next week, but you never know.

Mod portal
The information about the mod portal is brought to you by Martin, the train guy and recently also the mod portal guy.

The mod portal is a long awaited feature and it is finally happening! With the release of 0.13, we will be launching the mod portal website, along with an in-game integration. The base of the project was created by the original creator of factoriomods.com. The mod portal can be viewed by anyone, but you will have to log in with your factorio account to download mods, same goes for the in-game version.

Disclaimer

Mostly due to lack of time and the size of the project, it is not in a finished state (and will not be completely finished with the 0.13 release). It contains many bugs and it's missing a fair amount of features that will be coming with later updates. All the graphics of the website or the in-game GUI are subject to change.

Basic features
Mods can be sorted and filtered, they are grouped into categories.



You will be able to rate mods, probably using a 5-star scale and filter/sort mods by rating.





Discussions
Every mod has a discussion with multiple categories - announcements, bug reports, etc. This should help with the clutter we currently have on the forums.





Licensing
We will be requiring every mod to specify a license - either one of the common licenses (like MIT, (L)GPL, Apache, public domain) or a custom one, where you can specify the exact things people are and are not allowed to do with your content.



In-game browser
The in-game browser allows you to do most of the important things like filtering/searching for mods, it also allows you to install a mod with just a single click, same goes for updating mods that are already installed.



Further development
There are a lot of features that we want to still add to all this and they will be slowly appearing with 0.13.x patches. This is more a list of ideas, than a list of confirmed features, some of them might not be implemented.
  • Automatic installation of mods when loading a modded save
  • Automatic installation of mods when connecting to a modded multiplayer game
  • Grouping mods into modpacks
  • Integrating with Github for release management
  • Automatic compatibility testing
  • Various download/usage statistics

The first 0.14 project
One of the first 0.14 projects is the attempt to fix the determinism problems of mods. The issue with mods and determinism is, that lua script as it is doesn't allow us to save everything from its internal state into the save file. When the modder puts pointer to method to a variable or uses variable that is not in the scope of the global, it is not saved. If the mod uses these values to do any changes to the game, it will desynchronize. This not only makes potential problem for modders, but drains our developement time, as we can't just ignore all the desync reports, but reading scripts of modders and searching for mistakes there is not really in our capabilities.

The plan is to enhance the script serialization in a way, that modder basically can't make a faulty mod, as all values will be always saved. This requires some low level hacking, so the lua functions, closures and other internal stuff is saved as a byte code as part of the script. But if it could be done, it would increase the usefulness of mods a lot. The research of whether this is possible will be one of the first task of our new Programmer in the team. Say hello to Honza :)

The locomotive
The train project is almost done as well, let me show you the side view of our new locomotive:



Once we were already working on the train graphics, we had to solve the annoying problem of train wheels not matching the rails in curves. This was obviously not solvable as we rendered the train wagons as one sprite. So we fixed it by drawing the wheels separately, so they can have different orientation than the locomotive itself. The result gives much more organic feeling of the locomotive movement.



As always, let us know what you think on our forums
...