Factorio 0.11.0 has just been released!
EDIT: Desync warning:
A piece of testing code that causes a desync every 20seconds has been by accidentaly left in the game. So any multiplayer game cannot last more than that without a desync. Big sorry for inconvenience. Check out the 0.11.1 hotfix instead https://forums.factorio.com/forum/vie ... f=3&t=6298.
Warnings:
- Keep in mind, that there is way more changes and work put into this release than the usual.
- More changes mean more potential bugs and problems.
- There are a lot of changes of the mod and scripting interface, most of the mods will be broken.
- The multiplayer usually works, but there are lot of special situations where it fails hardly. Most of the multiplayer tests were done in 2 people. There are problems when people join at the same moment, when more players are desynchronised at the same time. When more than one player is downloading the map. There is no latency hiding etc. etc. We will work on these, but as we said before, this is the first rough version of multiplayer. Something we can use as a starting point.
- The multiplayer runs solely over UDP and uses port 34197 (unless specified otherwise in the config). So this port has to be forwarded if you are behind a router.
- Features:
- First version of the multiplayer. Only co-op mode. Simplistic UI. Requires a public IP address for connecting to. Tested mostly on LAN. Replays of MP games don't work yet. Number of players is not limited.
- Added gates, they open when friendly player comes by. Gates built on straight rails become rail gates.
- Added a tank. It is way more durable than a car. It has its own set of weapons.
- Added spitters. They are a next evoluton step of biters with a ranged (spitting) attack. They are spawned in their own spawners (different mask color) but only after evolution reaches 0.3.
- The console works as a chat tool by default now. Ingame commands can be used, /w for whisper or /c for lua command (previous functionality). For more type /help.
- Highlight of the items added into the inventory (https://forums.factorio.com/forum/vie ... php?t=3189)
- Randomized lights turning on and off during dawn and dusk (https://forums.factorio.com/forum/vie ... php?t=3493)
- Item entities are now de-constructable.
- Added a cancel deconstruction option to the deconstruction planner.
- Copy/paste entitysettings (filters) for cargowagons (like e.g. recipes for assembling machines).
- Bugfixes:
- Loads of determinism fixes, mainly for the multiplayer, but the replay stability should improve a lot as well.
- When game speed is < 1 the gui doesn't lag.
- Fixed crash when trying to connect trains in a situation that would result in collision of the new train with other trains (https://forums.factorio.com/forum/vie ... php?t=5853).
- Fixed invalid directions in game.createentity() crashing the game.
- Calling game.takescreenshot{} no longer crashes the game.
- Fixed that some entities weren't placable in the map editor (worm corpses).
- Fixed incorrectly disabled New game -> Custom scenario -> Confirm button.
- Fixed that turret could be walked over when rebuilt until the game was reloaded.
- Accidental building is now not possible when viewing the map.
- Compatibility fix of the new OS X Yosemite.
- Syntax error in script locale is now shown ingame, without closing the program.
- Fixed crash when placing blueprints with wires over existing ghosts with wires (https://forums.factorio.com/forum/vie ... f=7&t=5966)
- Fixed the rail segment bug, when mod adds two same rails at the same position.
- Graphics:
- New player animation. Three levels depending on the armor. All with masks.
- Rail endings.
- Biters/Spitters/Spawners/Worms are now drawn using the same picture with differently colored masks. This allows making different color combinations of biters without rising the video memory requirements.(Mods!)
- Blood splashes when units die are now procedural.
- Balancing:
- Stone walls need research (just red science packs needed).
- Slower crafting (0.5s->10s) of solar panels and accumulators.
- Fast/Express splitter are made from the lower variants (same as with transport belts/underground belts)
- Small electric pole can be used as fuel.
- Changed wood fuel value from (0.6MJ->2MJ), so 2Xwood made from raw wood has the same fuel value as the original raw wood.
- Optimisations:
- Faster map drawing.
- Optimized main loop. The game will automatically skip rendering when it can't keep up with expected updates per second. LowFPS mode has been removed because this functionality fully replaces it (it automatically lowers FPS when needed).
- Added Bitmap Memory Caching. This allows to store certain sprites classes (defined by priority) in RAM and load them only when needed. If your computer has little VRAM try setting "Bitmap Caching Level" (in GraphicsSettings) to "very low". This will keep the trains / player and enemies dying animations in RAM, saving a lot of VRAM.
- Disabled loading of saves before 0.7.0 version (You can use 0.7.5 to load older saves and re-save them).
- New physics for cars. Car now does very little damage when colliding.
- Disabled shooting from a vehicle (capsules can still be thrown).
- Modding:
- Added phases to the mod loading. data.lua of all mods is loaded first, then the data-updates.lua and the data-final-fixes.lua as last. This allows mods to change the data of other mods without the need to be last. This is used even in the base game, to add the dust effect when a building is created, so the effect is added to mod buildings as well.
- Every animation / sprite can now have a color tint.
- Every animation / sprite can have any number of "overlays" (see how player masks work).
- Changed the frame_width/frame_height properties of animation to width/height so it is the same as in sprite.
- Better specification for enemy spawner units (see biter-spawner for example).
- Furnace and assembling machine have been internally united. They the the same animation and quite a few properties (crafting_categories, energy_usage, crafting_speed, animation, working_visualisations). As a result Furnace can now have fluid boxes and use recipes with multiple outputs (but not multiple inputs).
- Extended car prototypes to make tanks possible.
- Electric turret uses ammo_type directly from its attack_parameters.
- Attack parameters accept warmup field which defines the delay before the effects take place (but animation and sound start playing instantly). This is now used for spitter shooting animation only.
- Scripting:
- Lua API for writing / reading player color (i.e. game.player.color = {r=0.7, g=0.4, b=0.3})
- Fixed saving and loading references to LuaEntity and LuaItem prototypes.
- Fixed crash when calling game.settiles() with invalid parameters.
- Added New LuaFluidBox object to interact with liquids.
- Lua API for reading backer names of entities (and writing station-names).
- Expansion of getcircuitcondition-method; the returned table contains a new key "fulfilled" which indicates if condition is met.
- Expansion of get/set/clear-filter methods to allow access to cargowagon filters
- Changed onplayercrafted; it is now called for every item in the crafting queue crafted
- Added new events:
- onrobotbuiltentity: passes entity built
- onrobotpremined: identical to onpreplayermineditem but called by robots
- onrobotmined: identical to onplayermineditem
- onresearchstarted: passes the research name
- onresearchfinished: passes the research finished
- onplayerrotatedentity: passes the entity rotated
- onmarkedfordeconstruction: passes the entity
- oncanceleddeconstruction: passes the entity
- ontriggercreatedentity: passes the entity created; only called if the trigger creating the entity has been marked with "trigger_createdentity = true"
- ontrainchangedstate: passes the train
- Added showentityinfo parameter to takescreenshot.
- Function gettext was removed completely, localised strings are now specified by the curly-brackets {"key", {"key-parameter"}, "literal parameter", 7}
- Added disconnectneighbour: used with electric poles; takes the circuit connector to disconnect - none to disconnect standard copper wire.
- Added ghost-related methods:
- ghostname read: the ghost entity name
- ghostlocalisedname read: the localised ghost entity name
- ghosttype read: the ghost entity type
- ghostprototype read: the ghost entity prototype
- timetolive read/write: the number of ticks until the ghost dies
- Expanded direction and recipe to provide write access
- Expanded methods to support reading/writing from ghost entities: (connectneighbour, disconnectneighbour, direction, getcircuitcondition, setcircuitcondition, clearcircuitcondition, orientation, rotateable, recipe, backername)
- Changed setcircuitcondition parameters to: {circuit = index, operator = operator, name = name, count = count}
- Added Lua API for reading/writing information from special items (ammo, armor, blueprints, tools)
- Added Lua API for reading/writing armor equipment and equipment grids
- Expanded methods for trains: locomotives read: returns the locomotives for the train state read: returns the current train state (train states are defined in defines.trainstate)
- Lua objects can now be passed between scripts with remote.call(). If an invalid object is passed the destination interface recives nil in place of the object.
- Added game.players[] - returns a table of the current players
- Expanded player-related methods to pass "playerindex" of the player doing the action. If there is no player (map editor) the "playerindex" value will be nil. (onpickedupitem, onbuiltentity, onplayermineditem, onpreplayermineditem, onplayercreateditem, onplayerrotatedetity)
- Added "playerindex" read to LuaGuiElement