1
0
Fork 0
mirror of https://gitlab.com/news-flash/article_scraper.git synced 2025-07-07 16:15:32 +02:00

fix strip unlikely table-child & add 2 new tests

This commit is contained in:
Jan Lukas Gernert 2023-03-26 11:54:13 +02:00
parent 873e081c33
commit 2189f527d7
8 changed files with 2579 additions and 4 deletions

View file

@ -0,0 +1,450 @@
<article><div name="ef8c" id="readability-page-1">
<div>
<figure name="b9ad" id="b9ad">
<div>
<p><img data-image-id="1*sLDnS1UWEFIS33uLMxq3cw.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*sLDnS1UWEFIS33uLMxq3cw.jpeg">
</p>
</div>
</figure>
</div>
<div>
<h2 name="9ebb" id="9ebb" data-align="center">Inside the Deep Web Drug Lab</h2>
<h4 name="9736" id="9736" data-align="center">Welcome to DoctorXs Barcelona lab, where the drugs you bought online are tested for safety and purity. No questions asked.</h4>
<figure name="7417" id="7417">
<div>
<p><img data-image-id="1*3vIhkoHIzcxvUdijoCVx6w.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*3vIhkoHIzcxvUdijoCVx6w.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*3vIhkoHIzcxvUdijoCVx6w.png">
</p>
</div>
</figure>
<p name="8a83" id="8a83">Standing at a table in a chemistry lab in Barcelona, Cristina Gil Lladanosa
tears open a silver, smell-proof protective envelope. She slides out a
transparent bag full of crystals. Around her, machines whir and hum, and
other researchers mill around in long, white coats.</p>
<p name="b675" id="b675">She is holding the labs latest delivery of a drug bought from the “deep
web,” the clandestine corner of the internet that isnt reachable by normal
search engines, and is home to some sites that require special software
to access. Labeled as <a href="http://en.wikipedia.org/wiki/MDMA" data-href="http://en.wikipedia.org/wiki/MDMA" rel="nofollow" target="_blank">MDMA</a> (the street
term is ecstasy), this sample has been shipped from Canada. Lladanosa and
her colleague Iván Fornís Espinosa have also received drugs, anonymously,
from people in China, Australia, Europe and the United States.</p>
<p name="3c0b" id="3c0b">“Here we have speed, MDMA, cocaine, pills,” Lladanosa says, pointing to
vials full of red, green, blue and clear solutions sitting in labeled boxes.</p>
</div>
<div>
<figure name="c4e6" id="c4e6">
<div>
<p><img data-image-id="1*4gN1-fzOwCniw-DbqQjDeQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*4gN1-fzOwCniw-DbqQjDeQ.jpeg">
</p>
</div>
<figcaption>Cristina Gil Lladanosa, at the Barcelona testing lab | photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<p name="7a54" id="7a54">Since 2011, with the launch of <a href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" data-href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" rel="nofollow" target="_blank">Silk Road</a>, anybody has been able to safely buy illegal
drugs from the deep web and have them delivered to their door. Though the
FBI shut down that black market in October 2013, other outlets have emerged
to fill its role. For the last 10 months the lab at which Lladanosa and
Espinosa work has offered a paid testing service of those drugs. By sending
in samples for analysis, users can know exactly what it is they are buying,
and make a more informed decision about whether to ingest the substance.
The group, called <a href="http://energycontrol.org/" data-href="http://energycontrol.org/" rel="nofollow" target="_blank">Energy Control</a>,
which has being running “harm reduction” programs since 1999, is the first
to run a testing service explicitly geared towards verifying those purchases
from the deep web.</p>
<p name="4395" id="4395">Before joining Energy Control, Lladanosa briefly worked at a pharmacy,
whereas Espinosa spent 14 years doing drug analysis. Working at Energy
Control is “more gratifying,” and “rewarding” than her previous jobs, Lladanosa
told me. They also receive help from a group of volunteers, made up of
a mixture of “squatters,” as Espinosa put it, and medical students, who
prepare the samples for testing.</p>
<p name="0c18" id="0c18">After weighing out the crystals, aggressively mixing it with methanol
until dissolved, and delicately pouring the liquid into a tiny brown bottle,
Lladanosa, a petite woman who is nearly engulfed by her lab coat, is now
ready to test the sample. She loads a series of three trays on top of a
large white appliance sitting on a table, called a gas chromatograph (GC).
A jungle of thick pipes hang from the labs ceiling behind it.</p>
</div>
<div>
<figure name="559c" id="559c">
<div>
<p><img data-image-id="1*2KPmZkIBUrhps-2uwDvYFQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*2KPmZkIBUrhps-2uwDvYFQ.jpeg">
</p>
</div>
<figcaption>Photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<p name="1549" id="1549">“Chromatography separates all the substances,” Lladanosa says as she loads
the machine with an array of drugs sent from the deep web and local Spanish
users. It can tell whether a sample is pure or contaminated, and if the
latter, with what.</p>
<p name="5d0f" id="5d0f">Rushes of hot air blow across the desk as the gas chromatograph blasts
the sample at 280 degrees Celsius. Thirty minutes later the machines robotic
arm automatically moves over to grip another bottle. The machine will continue
cranking through the 150 samples in the trays for most of the work week.</p>
</div>
<div>
<figure name="d6aa" id="d6aa">
<div>
<p><img data-image-id="1*PU40bbbox2Ompc5I3RE99A.jpeg" data-width="2013" data-height="1241" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*PU40bbbox2Ompc5I3RE99A.jpeg">
</p>
</div>
<figcaption>Photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<p name="15e0" id="15e0">To get the drugs to Barcelona, a user mails at least 10 milligrams of
a substance to the offices of the Asociación Bienestar y Desarrollo, the
non-government organization that oversees Energy Control. The sample then
gets delivered to the testing services laboratory, at the Barcelona Biomedical
Research Park, a futuristic, seven story building sitting metres away from
the beach. Energy Control borrows its lab space from a biomedical research
group for free.</p>
<p name="2574" id="2574">The tests cost 50 Euro per sample. Users pay, not surprisingly, with Bitcoin.
In the post announcing Energy Controls service on the deep web, the group
promised that “All profits of this service are set aside of maintenance
of this project.”</p>
<p name="2644" id="2644">About a week after testing, those results are sent in a PDF to an email
address provided by the anonymous client.</p>
<p name="9f91" id="9f91">“The process is quite boring, because you are in a routine,” Lladanosa
says. But one part of the process is consistently surprising: that moment
when the results pop up on the screen. “Every time its something different.”
For instance, one cocaine sample she had tested also contained phenacetin,
a painkiller added to increase the products weight; lidocaine, an anesthetic
that numbs the gums, giving the impression that the user is taking higher
quality cocaine; and common caffeine.</p>
<figure name="b821" id="b821">
<div>
<p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
</p>
</div>
</figure>
<p name="39a6" id="39a6">The deep web drug lab is the brainchild of Fernando Caudevilla, a Spanish
physician who is better known as “DoctorX” on the deep web, a nickname
given to him by his Energy Control co-workers because of his earlier writing
about the history, risks and recreational culture of MDMA. In the physical
world, Caudevilla has worked for over a decade with Energy Control on various
harm reduction focused projects, most of which have involved giving Spanish
illegal drug users medical guidance, and often writing leaflets about the
harms of certain substances.</p>
</div>
<div>
<figure name="eebc" id="eebc">
<div>
<p><img data-image-id="1*mKvUNOAVQxl6atCbxbCZsg.jpeg" data-width="2100" data-height="1241" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*mKvUNOAVQxl6atCbxbCZsg.jpeg">
</p>
</div>
<figcaption>Fernando Caudevilla, AKA DoctorX. Photo: Joseph Cox</figcaption>
</figure>
</div>
<div>
<p name="c099" id="c099">Caudevilla first ventured into Silk Road forums in April 2013. “I would
like to contribute to this forum offering professional advice in topics
related to drug use and health,” he wrote in an <a href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" data-href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" rel="nofollow" target="_blank">introductory post</a>,
using his DoctorX alias. Caudevilla offered to provide answers to questions
that a typical doctor is not prepared, or willing, to respond to, at least
not without a lecture or a judgment. “This advice cannot replace a complete
face-to-face medical evaluation,” he wrote, “but I know how difficult it
can be to talk frankly about these things.”</p>
<p name="ff1d" id="ff1d">The requests flooded in. A diabetic asked what effect MDMA has on blood
sugar; another what the risks of frequent psychedelic use were for a young
person. Someone wanted to know whether amphetamine use should be avoided
during lactation. In all, Fernandos thread received over 50,000 visits
and 300 questions before the FBI shut down Silk Road.</p>
<p name="1f35" id="1f35">“Hes amazing. A gift to this community,” one user wrote on the Silk Road
2.0 forum, a site that sprang up after the original. “His knowledge is
invaluable, and never comes with any judgment.” Up until recently, Caudevilla
answered questions on the marketplace “Evolution.” Last week, however,
the administrators of that site <a href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" data-href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" rel="nofollow" target="_blank">pulled a scam</a>,
shutting the market down and escaping with an estimated $12 million worth
of Bitcoin.</p>
<p name="b20f" id="b20f">Caudevillas transition from dispensing advice to starting up a no-questions-asked
drug testing service came as a consequence of his experience on the deep
web. Hed wondered whether he could help bring more harm reduction services
to a marketplace without controls. The Energy Control project, as part
of its mandate of educating drug users and preventing harm, had already
been carrying out drug testing for local Spanish users since 2001, at music
festivals, night clubs, or through a drop-in service at a lab in Madrid.</p>
<p name="f739" id="f739">“I thought, we are doing this in Spain, why dont we do an international
drug testing service?” Caudevilla told me when I visited the other Energy
Control lab, in Madrid. Caudevilla, a stocky character with ear piercings
and short, shaved hair, has eyes that light up whenever he discusses the
world of the deep web. Later, via email, he elaborated that it was not
a hard sell. “It was not too hard to convince them,” he wrote me. Clearly,
Energy Control believed that the reputation he had earned as an unbiased
medical professional on the deep web might carry over to the drug analysis
service, where one needs to establish “credibility, trustworthiness, [and]
transparency,” Caudevilla said. “We could not make mistakes,” he added.</p>
</div>
<div>
<figure name="4058" id="4058">
<div>
<p><img data-image-id="1*knT10_FNVUmqQIBLnutmzQ.jpeg" data-width="4400" data-height="3141" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*knT10_FNVUmqQIBLnutmzQ.jpeg">
</p>
</div>
<figcaption>Photo: Joseph Cox</figcaption>
</figure>
</div>
<div>
<figure name="818c" id="818c">
<div>
<p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
</p>
</div>
</figure>
<p name="7b5e" id="7b5e">While the Energy Control lab in Madrid lab only tests Spanish drugs from
various sources, it is the Barcelona location which vets the substances
bought in the shadowy recesses of of the deep web. Caudevilla no longer
runs it, having handed it over to his colleague Ana Muñoz. She maintains
a presence on the deep web forums, answers questions from potential users,
and sends back reports when they are ready.</p>
<p name="0f0e" id="0f0e">The testing program exists in a legal grey area. The people who own the
Barcelona lab are accredited to experiment with and handle drugs, but Energy
Control doesnt have this permission itself, at least not in writing.</p>
<p name="e002" id="e002">“We have a verbal agreement with the police and other authorities. They
already know what we are doing,” Lladanosa tells me. It is a pact of mutual
benefit. Energy Control provides the police with information on batches
of drugs in Spain, whether theyre from the deep web or not, Espinosa says.
They also contribute to the European Monitoring Centre for Drugs and Drug
Addictions early warning system, a collaboration that attempts to spread
information about dangerous drugs as quickly as possible.</p>
<p name="db1b" id="db1b">By the time of my visit in February, Energy Control had received over
150 samples from the deep web and have been receiving more at a rate of
between 4 and 8 a week. Traditional drugs, such as cocaine and MDMA, make
up about 70 percent of the samples tested, but the Barcelona lab has also
received samples of the prescription pill codeine, research chemicals and
synthetic cannabinoids, and even pills of Viagra.</p>
</div>
<div>
<figure name="b885" id="b885">
<div>
<p><img data-image-id="1*Vr61dyCTRwk6CemmVF8YAQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*Vr61dyCTRwk6CemmVF8YAQ.jpeg">
</p>
</div>
<figcaption>Photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<p name="e76f" id="e76f">So its fair to make a tentative judgement on what people are paying for
on the deep web. The verdict thus far? Overall, drugs on the deep web appear
to be of much higher quality than those found on the street.</p>
<p name="5352" id="5352">“In general, the cocaine is amazing,” says Caudevilla, saying that the
samples theyve seen have purities climbing towards 80 or 90 percent, and
some even higher. To get an idea of how unusual this is, take a look at
the <a href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" data-href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" rel="nofollow" target="_blank">United Nations Office on Drugs and Crime World Drug Report 2014</a>,
which reports that the average quality of street cocaine in Spain is just
over 40 percent, while in the United Kingdom it is closer to 30 percent.“We
have found 100 percent [pure] cocaine,” he adds. “Thats really, really
strange. That means that, technically, this cocaine has been purified,
with clandestine methods.”</p>
<p name="a71c" id="a71c">Naturally, identifying vendors who sell this top-of-the-range stuff is
one of the reasons that people have sent samples to Energy Control. Caudevilla
was keen to stress that, officially, Energy Controls service “is not intended
to be a control of drug quality,” meaning a vetting process for identifying
the best sellers, but that is exactly how some people have been using it.</p>
<p name="cb5b" id="cb5b">As one buyer on the Evolution market, elmo666, wrote to me over the sites
messaging system, “My initial motivations were selfish. My primary motivation
was to ensure that I was receiving and continue to receive a high quality
product, essentially to keep the vendor honest as far as my interactions
with them went.”</p>
<p name="d80d" id="d80d">Vendors on deep web markets advertise their product just like any other
outlet does, using flash sales, gimmicky giveaways and promises of drugs
that are superior to those of their competitors. The claims, however, can
turn out to be empty: despite the test results that show that deep web
cocaine vendors typically sell product that is of a better quality than
that found on the street, in plenty of cases, the drugs are nowhere near
as pure as advertised.</p>
<p name="36de" id="36de">“You wont be getting anything CLOSE to what you paid for,” one user complained
about the cocaine from Mirkov, a vendor on Evolution. “He sells 65% not
95%.”</p>
</div>
<div>
<figure name="8544" id="8544">
<div>
<p><img data-image-id="1*a-1_13xE6_ErQ-QSlz6myw.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*a-1_13xE6_ErQ-QSlz6myw.jpeg">
</p>
</div>
<figcaption>Photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<figure name="d521" id="d521">
<div>
<p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
</p>
</div>
</figure>
<p name="126b" id="126b">Despite the prevalence of people using the service to gauge the quality
of what goes up their nose, many users send samples to Energy Control in
the spirit of its original mission: keeping themselves alive and healthy.
The worst case scenario from drugs purchased on the deep web is, well the
worst case. That was the outcome when <a href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" data-href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" rel="nofollow" target="_blank">Patrick McMullen,</a> a
17-year-old Scottish student, ingested half a gram of MDMA and three tabs
of LSD, reportedly purchased from the Silk Road. While talking to his friends
on Skype, his words became slurred and he passed out. Paramedics could
not revive him. The coroner for that case, Sherrif Payne, who deemed the
cause of death ecstasy toxicity, told <em>The Independent</em> “You
never know the purity of what you are taking and you can easily come unstuck.”</p>
<p name="5e9e" id="5e9e">ScreamMyName, a deep web user who has been active since the original Silk
Road, wants to alert users to the dangerous chemicals that are often mixed
with drugs, and is using Energy Control as a means to do so.</p>
<p name="19a6" id="19a6">“Were at a time where some vendors are outright sending people poison.
Some do it unknowingly,” ScreamMyName told me in an encrypted message.
“Cocaine production in South America is often tainted with either levamisole
or phenacetine. Both poison to humans and both with severe side effects.”</p>
<p name="9fef" id="9fef">In the case of Levamisole, those prescribing it are often not doctors
but veterinarians, as Levamisole is commonly used on animals, primarily
for the treatment of worms. If ingested by humans it can lead to cases
of extreme eruptions of the skin, as <a href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" data-href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" rel="nofollow" target="_blank">documented in a study</a> from researchers at the University
of California, San Francisco. But Lladanosa has found Levamisole in cocaine
samples; dealers use it to increase the product weight, allowing them to
stretch their batch further for greater profitand also, she says, because
Levamisole has a strong stimulant effect.</p>
<p name="7886" id="7886">“It got me sick as fuck,” Dr. Feel, an Evolution user, wrote on the sites
forums after consuming cocaine that had been cut with 23 percent Levamisole,
and later tested by Energy Control. “I was laid up in bed for several days
because of that shit. The first night I did it, I thought I was going to
die. I nearly drove myself to the ER.”</p>
<p name="18d3" id="18d3">“More people die because of tainted drugs than the drugs themselves,”
Dr. Feel added. “Its the cuts and adulterants that are making people sick
and killing them.”</p>
</div>
<div>
<figure name="552a" id="552a">
<div>
<p><img data-image-id="1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg" data-width="2100" data-height="1192" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg">
</p>
</div>
<figcaption>Photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<p name="839a" id="839a">The particular case of cocaine cut with Levamisole is one of the reasons
that ScreamMyName has been pushing for more drug testing on the deep web
markets. “I recognize that drug use isnt exactly healthy, but why exacerbate
the problem?” he told me when I contacted him after his post. “[Energy
Control] provides a way for users to test the drugs theyll use and for
these very users to know what it is theyre putting in their bodies. Such
services are in very short supply.”</p>
<p name="18dc" id="18dc">After sending a number of Energy Control tests himself, ScreamMyName started
a de facto crowd-sourcing campaign to get more drugs sent to the lab, and
then shared the results, after throwing in some cash to get the ball rolling.
<a href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" data-href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" rel="nofollow" target="_blank">He set up a Bitcoin wallet</a>, with the hope that users might chip in
to fund further tests. At the time of writing, the wallet has received
a total of 1.81 bitcoins; around $430 at todays exchange rates.</p>
<p name="dcbd" id="dcbd">In posts to the Evolution community, ScreamMyName pitched this project
as something that will benefit users and keep drug dealer honest. “When
the funds build up to a point where we can purchase an [Energy Control]
test fee, well do a US thread poll for a few days and try to cohesively
decide on what vendor to test,” he continued.</p>
</div>
<div>
<figure name="9d32" id="9d32">
<div>
<p><img data-image-id="1*NGcrjfkV0l37iQH2uyYjEw.jpeg" data-width="1368" data-height="913" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*NGcrjfkV0l37iQH2uyYjEw.jpeg">
</p>
</div>
<figcaption>Photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<p name="bff6" id="bff6">Other members of the community have been helping out, too. PlutoPete,
a vendor from the original Silk Road who sold cannabis seeds and other
legal items, has provided ScreamMyName with packaging to safely send the
samples to Barcelona. “A box of baggies, and a load of different moisture
barrier bags,” PlutoPete told me over the phone. “Thats what all the vendors
use.”</p>
<p name="bb78" id="bb78">Its a modest program so far. ScreamMyName told me that so far he had
gotten enough public funding to purchase five different Energy Control
tests, in addition to the ten or so hes sent himself so far. “The program
created is still in its infancy and it is growing and changing as we go
along but I have a lot of faith in what were doing,” he says.</p>
<p name="5638" id="5638">But the spirit is contagious: elmo666, the other deep web user testing
cocaine, originally kept the results of the drug tests to himself, but
he, too, saw a benefit to distributing the data. “It is clear that it is
a useful service to other users, keeping vendors honest and drugs (and
their users) safe,” he told me. He started to report his findings to others
on the forums, and then created a thread with summaries of the test results,
as well as comments from the vendors if they provided it. Other users were
soon basing their decisions on what to buy on elmo666s tests.</p>
<p name="de75" id="de75">“Im defo trying the cola based on the incredibly helpful elmo and his
energy control results and recommendations,” wrote user jayk1984. On top
of this, elmo666 plans to launch an independent site on the deep web that
will collate all of these results, which should act as a resource for users
of all the marketplaces.</p>
<p name="6b72" id="6b72">As word of elmo666's efforts spread, he began getting requests from drug
dealers who wanted him to use their wares for testing. Clearly, they figured
that a positive result from Energy Control would be a fantastic marketing
tool to draw more customers. They even offered elmo666 free samples. (He
passed.)</p>
<p name="b008" id="b008">Meanwhile, some in the purchasing community are arguing that those running
markets on the deep web should be providing quality control themselves.
PlutoPete told me over the phone that he had been in discussions about
this with Dread Pirate Roberts, the pseudonymous owner of the original
Silk Road site. “We [had been] talking about that on a more organized basis
on Silk Road 1, doing lots of anonymous buys to police each category. But
of course they took the thing [Silk Road] down before we got it properly
off the ground,” he lamented.</p>
<p name="49c8" id="49c8">But perhaps it is best that the users, those who are actually consuming
the drugs, remain in charge of shaming dealers and warning each other.
“Its our responsibility to police the market based on reviews and feedback,”
elmo666 wrote in an Evolution forum post. It seems that in the lawless
space of the deep web, where everything from child porn to weapons are
sold openly, users have cooperated in an organic display of self-regulation
to stamp out those particular batches of drugs that are more likely to
harm users.</p>
<p name="386d" id="386d">“Thats always been the case with the deep web,” PlutoPete told me. Indeed,
ever since Silk Road, a stable of the drug markets has been the review
system, where buyers can leave a rating and feedback for vendors, letting
others know about the reliability of the seller. But DoctorXs lab, rigorously
testing the products with scientific instruments, takes it a step further.</p>
</div>
<div>
<figure name="890b" id="890b">
<div>
<p><img data-image-id="1*WRlKt3q3mt7utmwxcbl3sQ.jpeg" data-width="2100" data-height="1373" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*WRlKt3q3mt7utmwxcbl3sQ.jpeg">
</p>
</div>
<figcaption>Photo by Joan Bardeletti</figcaption>
</figure>
</div>
<div>
<p name="b109" id="b109">“In the white market, they have quality control. In the dark market, it
should be the same,” Cristina Gil Lladanosa says to me before I leave the
Barcelona lab.</p>
<p name="e3a4" id="e3a4">A week after I visit the lab, the results of the MDMA arrive in my inbox:
it is 85 percent pure, with no indications of other active ingredients.
Whoever ordered that sample from the digital shelves of the deep web, and
had it shipped to their doorstep in Canada, got hold of some seriously
good, and relatively safe drugs. And now they know it.</p>
<figure name="31cf" id="31cf">
<div>
<p><img data-image-id="1*320_4I0lxbn5x3bx4XPI5Q.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*320_4I0lxbn5x3bx4XPI5Q.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*320_4I0lxbn5x3bx4XPI5Q.png">
</p>
</div>
</figure>
<p name="9b87" id="9b87" data-align="center"><em>Top photo by Joan Bardeletti</em>
</p>
<p name="c30a" id="c30a" data-align="center">Follow Backchannel: <a href="https://twitter.com/backchnnl" data-href="https://twitter.com/backchnnl" rel="nofollow" target="_blank"><em>Twitter</em></a>
<em>|</em><a href="https://www.facebook.com/pages/Backchannel/1488568504730671" data-href="https://www.facebook.com/pages/Backchannel/1488568504730671" rel="nofollow" target="_blank"><em>Facebook</em></a>
</p>
</div>
</div></article>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,540 @@
<article><div id="readability-page-1">
<p>Posted by kovarex, TOGos, Ernestas, Albert on 2019-02-15, <a href="http://fakehost/blog/" target="_blank">all posts</a></p>
<h2>The release plan <span size="2">(kovarex)</span>
</h2>
<p>This week was the time to close and finish all the things that will go to 0.17.0.</p>
<p>Not all of the things that we originally planned to be done were done (surprise), but we just left any non-essential stuff for later so we won't postpone the release any further. The plan is, that next week will be dedicated to the office playtesting and bugfixing. Many would argue, that we could just release instantly and let the players find the bugs for us, but we want to fix the most obvious problems in-house to avoid too many duplicate bug reports and chaos after the release. Also, some potential bugs, like save corruptions, are much more easily worked on in-house.</p>
<p>
If the playtesting goes well, we will let you know next Friday, and if it is the case, we will aim to release the week starting 25th February.
</p>
<h3>After release plan</h3>
<p>
Since there are a lot of things we would like to do before we can call 0.17 good enough, we will simply push new things into the 0.17 releases as time goes on. Even if 0.17 becomes stable in a reasonable time, we would still push things on top of it. We can still make experimental/stable version numbers inside 0.17. Most of the things shouldn't be big enough to make the game generally unstable. I've heard countless times a proposal to make small frequent releases of what have we added, this will probably be reality after 0.17 for some time.
</p>
<p>
The smaller releases will contain mainly:
</p>
<ul>
<li>Final looks and behaviour of new GUI screens as they will be finished.</li>
<li>New graphics.</li>
<li>New sounds and sound system tweaks.</li>
<li>Mini tutorial additions and tweaks.</li>
</ul>
<p>
This is actually quite a large change to our procedures, and there are many ways we will be trying to maximize the effectiveness of smaller and more regular content updates.
</p>
<h2>The GUI progress <span size="2">(kovarex)</span>
</h2>
<p>
There are several GUI screens that are finished. Others (most of them) are just left there as they are in 0.16. They are a combination of the new GUI styles and old ones. They sometimes look funny and out of place, but they should be functional.
</p>
<table>
<tbody>
<tr>
<td></td>
<td>General UX</td>
<td>UX draft</td>
<td>UX review</td>
<td>UI mockup</td>
<td>UI review</td>
<td>Implementation draft</td>
<td>Implementation review</td>
<td>Final review</td>
</tr>
<tr>
<td>Load map</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Save map</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Graphics settings</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Control settings</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Sound settings</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Interface settings</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Other settings</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Map generator</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Quick bar <i><b>Twinsen</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
</tr>
<tr>
<td>Train GUI <i><b>kovarex</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
</tr>
<tr>
<td>Technology GUI<i> <b>Oxyd</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
</tr>
<tr>
<td>Technology tooltip <i><b>Oxyd</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
</tr>
<tr>
<td>Blueprint library<i> <b>kovarex</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Shortcut bar <i><b>Oxyd</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Character screen <i><b>Dominik</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Help overlay <i><b>kovarex</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Manage/Install mods <i><b>Rseding</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Recipe/item/Entity tooltip <i><b>Twinsen</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Chat icon selector <i><b>?</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>New game <i><b>?</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Menu structure <i><b>?</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Main screen chat <i><b>?</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
<tr>
<td>Recipe explorer <i><b>?</b></i>
</td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
</tr>
</tbody>
</table>
<p><i>* Newly finished things since the last update in <a href="https://www.factorio.com/blog/post/fff-277" target="_blank">FFF-277</a>.</i></p>
<h3>Blueprint library</h3>
<p>
The blueprint library changes have been split into several steps. The reason is, that there was a big motivation to do the integration with the new quickbar (final version introduced in <a href="https://www.factorio.com/blog/post/fff-278" target="_blank">FFF-278</a>) in time for 0.17.0, while the other changes can be done after. The thing with the quickbar is, that it is quite a big change to one of the most used tools in the game and people generally don't like change even when it is for the better. To minimize the hate of the change, we need to "sell it properly". By that, we should provide as many of the positive aspects of the new quickbar at the time of its introduction.
</p>
<p>
So the change that is already implemented and working for 0.17 is the ability to put blueprints/books into the quick bar in a way that the quick bar is linked directly to the blueprint library window, so you don't need to have the physical blueprint items in your inventory. The other change is, that picking a blueprint from the blueprint library and then pressing Q will just dismiss it, instead of silently pushing it to your inventory. This works the same as the clipboard described in <a href="https://www.factorio.com/blog/post/fff-255" target="_blank">FFF-255</a>. You can still explicitly insert the blueprint from the library to an inventory slot, but if you just pick it, use it, and press Q, it goes away.
</p>
<p>
In addition to this, other changes related to the blueprint library will follow soon after 0.17.0. The first thing is the change of how the GUI looks:
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-grid-view.png" width="900px">
</p>
<p>
We will also allow to switch between grid and list view. It mainly provides a way to nicely see the longer names of the blueprint. We noticed that players try to put a large amount of info about a blueprint in its name, so we are planning to add a possibility to write a textual description of the blueprint.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-list-view.png" width="900px">
</p>
<p>
The last big change is to allow to put blueprint books into blueprint books, allowing better organisation. Basically like a directory structure. Whenever a blueprint/book is opened, we plan to show its current location, so the player knows exactly what is going on.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-book.png" width="900px">
</p>
<h3>The hand</h3>
<p>
Has it ever happened to you, that you have robots trying to put things into your full inventory, while you pick an item from it to build something, and then you just can't put it back, as the diligent robots just filled the last slot in your inventory by whatever they are trying to give to you? Wood from tree removal is the most frequent thing in my case.
</p>
<p>
This was annoying in 0.16 from time to time, but with the new quickbar, it started to happen even more, as now, you have only one inventory, and no reserved slots in the quickbar. To solve that, we just extended the "principal" of the hand. When you pick something from the inventory, the hand icon appears on the slot. As long as you hold the thing in your cursor, the hand stays there, and prevents other things from being inserted there. This way, you should always be able to return the currently selected item into your inventory as long as you didn't get it from external source like a chest.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-the-hand.png" width="900px"><br>
<i>The hand is protecting the slot from the robots.</i>
</p>
<h2>Terrain generation updates <span size="2">(TOGoS)</span>
</h2>
<p>Everyone has different opinions about what makes a good Factorio world.
I've been working on several changes for 0.17, but the overarching theme
has been to make the map generator options screen more intuitive
and more powerful.</p>
<p>
This was talked about somewhat in an earlier FFF (<a href="https://www.factorio.com/blog/post/fff-258" target="_blank">FFF-258</a>) regarding ore placement,
but since then we found more stuff to fix.
</p>
<h3>Biter Bases</h3>
<p>
In 0.16, the size control for biter bases didn't have much effect.
The frequency control changed the frequency, but that also decreased the size of bases,
which <a href="https://forums.factorio.com/viewtopic.php?t=55113" target="_blank">wasn't generally what people wanted</a>.
</p>
<p>
For 0.17 we've reworked biter placement using a system similar to that with which we got resource placement under control. The size and frequency controls now act more like most people would expect, with frequency increasing the number of bases, and size changing the size of each base.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-enemy-bases.gif">
<br><i>New preview UI showing the effects of enemy base controls.
In reality the preview takes a couple seconds to regenerate after every change,
but the regeneration part is skipped in this animation to clearly show the effects of the controls.</i>
</p>
<p>
If you don't like the relatively uniform-across-the-world placement of biters,
there are changes under the hood to make it easier for modders to do something different.
Placement is now based on <a href="https://wiki.factorio.com/Prototype/NamedNoiseExpression" target="_blank">NamedNoiseExpressions</a> "enemy-base-frequency" and "enemy-base-radius", which in turn reference "enemy-base-intensity".
By overriding any of those, a modder could easily create a map where biters are found only at high elevations,
or only near water, or correlate enemy placement with that of resources, or any other thing
that can be expressed as a function of location.
</p>
<h3>Cliffs</h3>
<p>
We've added a 'continuity' control for cliffs. If you really
like mazes of cliffs, set it to high to reduce the number of gaps in cliff faces.
Or you can turn it way down to make cliffs very rare or be completely absent.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-cliff-controls.gif">
<br><i>Changing cliff frequency and continuity. Since cliffs are based on elevation,
you'll have to turn frequency <strong>way</strong> up if you want lots of layers
even near the starting lake.</i>
</p>
<h3>Biome Debugging</h3>
<p>
Tile placement is based on a range of humidity and 'aux' values
(humidity and aux being properties that vary at different points across the world)
that are suitable for each type of tile. For example: grass is only placed in
places with relatively high humidity, and desert (not to be confused with plain old sand)
only gets placed where aux is high. We've taken to calling these constraints 'rectangles',
because when you plot each tile's home turf on a chart of humidity and aux,
they are shown as rectangles.
</p>
<p>
It's hard to make sense of the rectangles just by looking at the autoplace code
for each tile, so I wrote a script to chart them. This allowed us to ensure that
they were arranged as we wanted, with no gaps between them,
and with overlap in some cases.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-rectangles.png" width="900" height="900">
<br><i>Rectangles.</i>
</p>
<p>
Having the humidity-aux-tile chart is all well and good, but doesn't tell the whole story,
since tile placement also depends on a noise layer specific to each tile type,
and could also influenced by user-adjustable autoplace controls (e.g. turning the grass slider up).
So to further help us visualize how humidity, aux, tile-specific noise, and
autoplace controls worked together to determine tiles on the map,
there are a couple of alternate humidity and aux generators that simply vary them
linearly from north-south and west-east, respectively.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-debug-map.png" width="900" height="900">
<br><i>Using 'debug-moisture' and 'debug-aux' generators to drive moisture and aux, respectively.</i>
</p>
<p>
This map helped us realize that, rather than having controls
for each different type of tile, it made more sense to just
control moisture and aux (which is called 'terrain type' in the GUI,
because 'aux' doesn't mean anything).
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-controls.gif" width="900" height="664">
<br><i>Sliding the moisture and aux bias sliders to make the world more or less grassy or red-deserty.</i>
</p>
<p>
A pet project of mine has been to
put controls in the map generator GUI so that we could select generators
for various tile properties (temperature, aux, humidity, elevation, etc) at
map-creation time without necessarily needing to involve mods.
This was useful for debugging the biome rectangles, but my ulterior
motive was to, at least in cases where there are multiple options,
show the generator information to players. A couple of reasons for
this:
</p>
<ul>
<li>It was already possible for mods to override tile property generators via presets, but
we didn't have a place to show that information in the UI.
So switching between presets could change hidden variables in non-obvious ways
and lead to a lot of confusion.</li>
<li>I had dreams of shipping alternate elevation generators in the base game.</li>
</ul>
<h3>Water Placement</h3>
<p>
For 0.16 I <a href="https://www.factorio.com/blog/post/fff-207" target="_blank">attempted to make the shape of continents more interesting</a>. Some people <a href="https://www.reddit.com/r/factorio/comments/7n3mn1/016_swamplands_are_pure_awesome/" target="_blank">really liked</a> the <a href="https://www.youtube.com/watch?v=-pkwTjG-sJg" target="_blank">new terrain</a>, or at least <a href="https://www.reddit.com/r/factorio/comments/7krq86/question_about_water_generation_in_016/" target="_blank">managed to find some settings that made it work</a> for them. Others called it a "swampy mess". A common refrain was that the world was more fun to explore in the 0.12 days.
</p>
<p>
So in 0.17 we're restoring the <em>default</em> elevation generator to one very similar to that used
by 0.12. Which means large, sometimes-connected lakes.
</p>
<p>
The water 'frequency' control was confusing to a lot of people including myself.
It could be interpreted as "how much water", when the actual effect was to inversely
scale both bodies of water and continents, such that higher water frequency actually meant smaller bodies of water.
So for 0.17, the water 'frequency' and 'size' sliders are being replaced with 'scale' and 'coverage',
which do the same thing, but in a hopefully more obvious way.
Larger scale means larger land features, while more coverage means more of the map covered in water.
</p>
<h3>New Map Types</h3>
<p>
In order to ensure a decent starting area, the elevation generator
always makes a plateau there (so you'll never spawn in the middle of
the ocean), and a lake (so you can get a power plant running).
Depending on what's going on outside of that plateau, this sometimes resulted in
a circular ring of cliffs around the starting point,
which looked very artificial, and we wanted to reduce that effect.
</p>
<p>
In the process of solving that problem I created another custom generator for debugging purposes.
This one simply generated that starting area plateau in an endless ocean.
I don't actually remember how this was useful for debugging, but at one point I directed Twinsen to look at it
to illustrate the mechanics behind generating the starting area.
</p>
<p>
The rest of the team liked that setting so much that we're making it a player-selectable option.
So in 0.17 you'll get to pick between the 'Normal' map type, which resembles that from 0.12,
and 'Island', which gives you a single large-ish island at the starting point.
There's a slider to let you change the size of the island(s).
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-island.png" width="900" height="900">
</p>
<p>
Maps with multiple starting points will have multiple islands.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-islands.png" width="900" height="900">
<br><i>PvP islands!</i>
</p>
<p>
And speaking of scale sliders, we're expanding their range from ± a factor of 2 (the old 'very low' to 'very high' settings)
to ± a factor of 6 (shown as '17%' to '600%'). Previously the values were stored internally as one of 5 discrete options,
but as the recent terrain generation changes have made actual numeric multipliers more meaningful in most contexts
(e.g. the number of ore patches is directly proportional to the value of the 'frequency' slider,
rather than being just vaguely related to it somehow),
we're switching to storing them as numbers.
This has the side-effect that if you don't mind
<a href="https://gist.github.com/Bilka2/a17841d0ff1028b63c60c2bbf6fa7e4f" target="_blank">editing some JSON</a>,
you'll be able to create maps with values outside the range provided by the GUI sliders.
</p>
<p>
Mods will be able to add their own 'map types' to the map type drop-down, too. If you really liked the shape of landmasses in 0.16 and want to be able to continue creating new maps with it, please let us know on the forum.
</p>
<h2>High-res accumulators <span size="2">(Ernestas, Albert)</span>
</h2>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator.gif">
</p>
<p>
The design of the accumulator has been always good. The 4 very visible cylinders, looking like giant batteries, Tesla poles and the electric beams perfectly telegraphed its function in terms of style and readability. Thats why for the high-res conversion we were very careful about keeping this entity as it was.
</p>
<p>
The only thing that was a bit disturbing (for some) are the poles crossing to each other when more than one accumulator is placed in a row. So we decided to fix it (or break it). The rest of the work was making the entity compatible for the actual look of the game. But in essence accumulators are still the same.
</p>
<p>
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator-comparison.png" width="900px">
</p>
<p>
As always, let us know what you think on our <a href="https://forums.factorio.com/64912" target="_blank">forum</a>.
</p>
</div></article>

View file

@ -0,0 +1,740 @@
<html>
<head>
<title>Friday Facts #282 - 0.17 in sight | Factorio</title>
<meta property="og:title" content="Friday Facts #282 - 0.17 in sight | Factorio" />
<meta property="og:type" content="website" />
<meta property="og:image" content="http://www.factorio.com/static/img/factorio-wheel.png" />
<meta property="og:site_name" content="Factorio.com" />
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link href="/static/img/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="/static/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="/static/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" />
<link href="/static/css/factorio.css" rel="stylesheet" type="text/css" />
<link href="/static/lightbox/css/lightbox.css" rel="stylesheet" type="text/css" />
<link href="/blog/rss" rel="alternate" title="Recent Blog Posts" type="application/atom+xml" />
<meta name="viewport" content="width=device-width" />
</head>
<body style="background: rgb(22, 22, 22) url(/static/img/stressed_linen_texture.png) repeat 0 0;">
<div class="container header" style="margin-top: 30px;">
<!-- top row -->
<div class="row" style="margin-bottom: 30px;">
<div class="span4">
<a href="/"><img src="/static/img/factorio-logo.png" style="margin-top: 10px;" /></a>
</div>
<div class="span8 span8-navbar" style="margin-top: 10px;">
<div class="user-controls">
<a href="/login">log in</a>
<a href="/signup">sign up</a>
</div>
<div class="navbar">
<ul class="nav">
<li>
<a href="/"> Home </a>
</li>
<li>
<a href="/store" style="color: #ff7200;"> Merch </a>
</li>
<li class="custom-dropdown">
<a class="custom-dropdown-toggle" data-toggle="dropdown" href="/game-overview" role="button">
Game
</a>
<ul class="custom-dropdown-menu" role="menu">
<li role="presentation">
<a href="/starter-page">
Starter Page
</a>
</li>
<li role="presentation">
<a href="/screenshots">
Screenshots
</a>
</li>
<li role="presentation">
<a href="/videos">
Videos
</a>
</li>
<li role="presentation">
<a href="/content">
Content
</a>
</li>
<li role="presentation">
<a href="/modding">
Modding
</a>
</li>
<li role="presentation">
<a href="/team">
Team
</a>
</li>
</ul>
</li>
<li class="custom-dropdown">
<a class="custom-dropdown-toggle" data-toggle="dropdown" href="/support-overview" role="button">
Support
</a>
<ul class="custom-dropdown-menu" role="menu">
<li role="presentation">
<a href="/help">
Help
</a>
</li>
<li role="presentation">
<a href="/faq">
FAQ
</a>
</li>
<li role="presentation">
<a href="/press-and-youtube">
Press and Youtube
</a>
</li>
<li role="presentation">
<a href="/community">
Community
</a>
</li>
<li role="presentation">
<a href="/partners">
Partners
</a>
</li>
<li role="presentation">
<a href="/credits">
Credits
</a>
</li>
</ul>
</li>
<li>
<a href="https://forums.factorio.com/"> Forums </a>
</li>
<li>
<a href="/contact"> Contact </a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<noscript>
<div class="alert alert-block alert-error" style="font-weight: bold; ">
Javascript is required for proper functioning of these web pages.
</div>
</noscript>
<div class="row">
<div class="span12 blog-post">
<h2 style="margin-top: 20px; margin-bottom:5px;">
Friday Facts #282 - 0.17 in sight
</h2>
<div style="font-size: 11px;">Posted by kovarex, TOGos, Ernestas, Albert on 2019-02-15, <a href="/blog/">all posts</a></div>
<p>
</p>
<h2>The release plan <font size="2">(kovarex)</font>
</h2>
<p>This week was the time to close and finish all the things that will go to 0.17.0.</p>
<p>Not all of the things that we originally planned to be done were done (surprise), but we just left any non-essential stuff for later so we won't postpone the release any further. The plan is, that next week will be dedicated to the office playtesting and bugfixing. Many would argue, that we could just release instantly and let the players find the bugs for us, but we want to fix the most obvious problems in-house to avoid too many duplicate bug reports and chaos after the release. Also, some potential bugs, like save corruptions, are much more easily worked on in-house.</p>
<p>
If the playtesting goes well, we will let you know next Friday, and if it is the case, we will aim to release the week starting 25th February.
</p>
<h3>After release plan</h3>
<p>
Since there are a lot of things we would like to do before we can call 0.17 good enough, we will simply push new things into the 0.17 releases as time goes on. Even if 0.17 becomes stable in a reasonable time, we would still push things on top of it. We can still make experimental/stable version numbers inside 0.17. Most of the things shouldn't be big enough to make the game generally unstable. I've heard countless times a proposal to make small frequent releases of what have we added, this will probably be reality after 0.17 for some time.
</p>
<p>
The smaller releases will contain mainly:
</p>
<ul>
<li>Final looks and behaviour of new GUI screens as they will be finished.</li>
<li>New graphics.</li>
<li>New sounds and sound system tweaks.</li>
<li>Mini tutorial additions and tweaks.</li>
</ul>
<p></p>
<p>
This is actually quite a large change to our procedures, and there are many ways we will be trying to maximize the effectiveness of smaller and more regular content updates.
</p>
<h2>The GUI progress <font size="2">(kovarex)</font>
</h2>
<p>
There are several GUI screens that are finished. Others (most of them) are just left there as they are in 0.16. They are a combination of the new GUI styles and old ones. They sometimes look funny and out of place, but they should be functional.
</p>
<style>
.header_cell {
text-align:center;
font-weight: bold;
}
.finished {
text-align:center;
font-weight: bold;
}
.not_finished {
text-align:center;
font-weight: bold;
}
.finished_gui_table {
border-spacing: 10px;
border-collapse: collapse;
max-width: 900px;
}
.finished_gui_table td {
border: 1px;
border-style:solid;
padding: 5px;
}
</style>
<table class="finished_gui_table">
<tbody>
<tr>
<td></td>
<td class="header_cell">General&nbsp;UX</td>
<td class="header_cell">UX&nbsp;draft</td>
<td class="header_cell">UX&nbsp;review</td>
<td class="header_cell">UI&nbsp;mockup</td>
<td class="header_cell">UI&nbsp;review</td>
<td class="header_cell">Implementation draft</td>
<td class="header_cell">Implementation review</td>
<td class="header_cell">Final&nbsp;review</td>
</tr>
<tr>
<td>Load&nbsp;map</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Save&nbsp;map</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Graphics&nbsp;settings</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Control&nbsp;settings</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Sound&nbsp;settings</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Interface&nbsp;settings</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Other&nbsp;settings</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Map&nbsp;generator</td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Quick&nbsp;bar&nbsp;<i><b>Twinsen</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
</tr>
<tr>
<td>Train&nbsp;GUI&nbsp;<i><b>kovarex</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
</tr>
<tr>
<td>Technology&nbsp;GUI<i>&nbsp;<b>Oxyd</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
</tr>
<tr>
<td>Technology&nbsp;tooltip&nbsp;<i><b>Oxyd</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
</tr>
<tr>
<td>Blueprint&nbsp;library<i>&nbsp;<b>kovarex</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Shortcut&nbsp;bar&nbsp;<i><b>Oxyd</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Character&nbsp;screen&nbsp;<i><b>Dominik</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Help&nbsp;overlay&nbsp;<i><b>kovarex</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Manage/Install&nbsp;mods&nbsp;<i><b>Rseding</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Recipe/item/Entity&nbsp;tooltip&nbsp;<i><b>Twinsen</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Chat&nbsp;icon&nbsp;selector&nbsp;<i><b>?</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>New&nbsp;game&nbsp;<i><b>?</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Menu&nbsp;structure&nbsp;<i><b>?</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Main&nbsp;screen&nbsp;chat&nbsp;<i><b>?</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
<tr>
<td>Recipe&nbsp;explorer&nbsp;<i><b>?</b></i></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
</tr>
</tbody>
</table>
<i>* Newly finished things since the last update in <a href="https://www.factorio.com/blog/post/fff-277">FFF-277</a>.</i>
<h3>Blueprint library</h3>
<p>
The blueprint library changes have been split into several steps. The reason is, that there was a big motivation to do the integration with the new quickbar (final version introduced in <a href="https://www.factorio.com/blog/post/fff-278">FFF-278</a>) in time for 0.17.0, while the other changes can be done after. The thing with the quickbar is, that it is quite a big change to one of the most used tools in the game and people generally don't like change even when it is for the better. To minimize the hate of the change, we need to "sell it properly". By that, we should provide as many of the positive aspects of the new quickbar at the time of its introduction.
</p>
<p>
So the change that is already implemented and working for 0.17 is the ability to put blueprints/books into the quick bar in a way that the quick bar is linked directly to the blueprint library window, so you don't need to have the physical blueprint items in your inventory. The other change is, that picking a blueprint from the blueprint library and then pressing Q will just dismiss it, instead of silently pushing it to your inventory. This works the same as the clipboard described in <a href="https://www.factorio.com/blog/post/fff-255">FFF-255</a>. You can still explicitly insert the blueprint from the library to an inventory slot, but if you just pick it, use it, and press Q, it goes away.
</p>
<p>
In addition to this, other changes related to the blueprint library will follow soon after 0.17.0. The first thing is the change of how the GUI looks:
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-grid-view.png" width="900px" />
</p>
<p>
We will also allow to switch between grid and list view. It mainly provides a way to nicely see the longer names of the blueprint. We noticed that players try to put a large amount of info about a blueprint in its name, so we are planning to add a possibility to write a textual description of the blueprint.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-list-view.png" width="900px" />
</p>
<p>
The last big change is to allow to put blueprint books into blueprint books, allowing better organisation. Basically like a directory structure. Whenever a blueprint/book is opened, we plan to show its current location, so the player knows exactly what is going on.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-book.png" width="900px" />
</p>
<h3>The hand</h3>
<p>
Has it ever happened to you, that you have robots trying to put things into your full inventory, while you pick an item from it to build something, and then you just can't put it back, as the diligent robots just filled the last slot in your inventory by whatever they are trying to give to you? Wood from tree removal is the most frequent thing in my case.
</p>
<p>
This was annoying in 0.16 from time to time, but with the new quickbar, it started to happen even more, as now, you have only one inventory, and no reserved slots in the quickbar. To solve that, we just extended the "principal" of the hand. When you pick something from the inventory, the hand icon appears on the slot. As long as you hold the thing in your cursor, the hand stays there, and prevents other things from being inserted there. This way, you should always be able to return the currently selected item into your inventory as long as you didn't get it from external source like a chest.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-the-hand.png" width="900px" /><br />
<i>The hand is protecting the slot from the robots.</i>
</p>
<h2>Terrain generation updates <font size="2">(TOGoS)</font>
</h2>
<p>Everyone has different opinions about what makes a good Factorio world.
I've been working on several changes for 0.17, but the overarching theme
has been to make the map generator options screen more intuitive
and more powerful.</p>
<p>
This was talked about somewhat in an earlier FFF (<a href="https://www.factorio.com/blog/post/fff-258">FFF-258</a>) regarding ore placement,
but since then we found more stuff to fix.
</p>
<h3>Biter Bases</h3>
<p>
In 0.16, the size control for biter bases didn't have much effect.
The frequency control changed the frequency, but that also decreased the size of bases,
which <a href="https://forums.factorio.com/viewtopic.php?t=55113">wasn't generally what people wanted</a>.
</p>
<p>
For 0.17 we've reworked biter placement using a system similar to that with which we got resource placement under control. The size and frequency controls now act more like most people would expect, with frequency increasing the number of bases, and size changing the size of each base.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-enemy-bases.gif" />
<br /><i>New preview UI showing the effects of enemy base controls.
In reality the preview takes a couple seconds to regenerate after every change,
but the regeneration part is skipped in this animation to clearly show the effects of the controls.</i>
</p>
<p>
If you don't like the relatively uniform-across-the-world placement of biters,
there are changes under the hood to make it easier for modders to do something different.
Placement is now based on <a href="https://wiki.factorio.com/Prototype/NamedNoiseExpression">NamedNoiseExpressions</a> "enemy-base-frequency" and "enemy-base-radius", which in turn reference "enemy-base-intensity".
By overriding any of those, a modder could easily create a map where biters are found only at high elevations,
or only near water, or correlate enemy placement with that of resources, or any other thing
that can be expressed as a function of location.
</p>
<h3>Cliffs</h3>
<p>
We've added a 'continuity' control for cliffs. If you really
like mazes of cliffs, set it to high to reduce the number of gaps in cliff faces.
Or you can turn it way down to make cliffs very rare or be completely absent.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-cliff-controls.gif" />
<br /><i>Changing cliff frequency and continuity. Since cliffs are based on elevation,
you'll have to turn frequency <strong>way</strong> up if you want lots of layers
even near the starting lake.</i>
</p>
<h3>Biome Debugging</h3>
<p>
Tile placement is based on a range of humidity and 'aux' values
(humidity and aux being properties that vary at different points across the world)
that are suitable for each type of tile. For example: grass is only placed in
places with relatively high humidity, and desert (not to be confused with plain old sand)
only gets placed where aux is high. We've taken to calling these constraints 'rectangles',
because when you plot each tile's home turf on a chart of humidity and aux,
they are shown as rectangles.
</p>
<p>
It's hard to make sense of the rectangles just by looking at the autoplace code
for each tile, so I wrote a script to chart them. This allowed us to ensure that
they were arranged as we wanted, with no gaps between them,
and with overlap in some cases.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-rectangles.png" width="900" height="900" />
<br /><i>Rectangles.</i>
</p>
<p>
Having the humidity-aux-tile chart is all well and good, but doesn't tell the whole story,
since tile placement also depends on a noise layer specific to each tile type,
and could also influenced by user-adjustable autoplace controls (e.g. turning the grass slider up).
So to further help us visualize how humidity, aux, tile-specific noise, and
autoplace controls worked together to determine tiles on the map,
there are a couple of alternate humidity and aux generators that simply vary them
linearly from north-south and west-east, respectively.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-debug-map.png" width="900" height="900" />
<br /><i>Using 'debug-moisture' and 'debug-aux' generators to drive moisture and aux, respectively.</i>
</p>
<p>
This map helped us realize that, rather than having controls
for each different type of tile, it made more sense to just
control moisture and aux (which is called 'terrain type' in the GUI,
because 'aux' doesn't mean anything).
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-controls.gif" width="900" height="664" />
<br /><i>Sliding the moisture and aux bias sliders to make the world more or less grassy or red-deserty.</i>
</p>
<p>
A pet project of mine has been to
put controls in the map generator GUI so that we could select generators
for various tile properties (temperature, aux, humidity, elevation, etc) at
map-creation time without necessarily needing to involve mods.
This was useful for debugging the biome rectangles, but my ulterior
motive was to, at least in cases where there are multiple options,
show the generator information to players. A couple of reasons for
this:
</p>
<ul>
<li>It was already possible for mods to override tile property generators via presets, but
we didn't have a place to show that information in the UI.
So switching between presets could change hidden variables in non-obvious ways
and lead to a lot of confusion.</li>
<li>I had dreams of shipping alternate elevation generators in the base game.</li>
</ul>
<h3>Water Placement</h3>
<p>
For 0.16 I <a href="https://www.factorio.com/blog/post/fff-207">attempted to make the shape of continents more interesting</a>. Some people <a href="https://www.reddit.com/r/factorio/comments/7n3mn1/016_swamplands_are_pure_awesome/">really liked</a> the <a href="https://www.youtube.com/watch?v=-pkwTjG-sJg">new terrain</a>, or at least <a href="https://www.reddit.com/r/factorio/comments/7krq86/question_about_water_generation_in_016/">managed to find some settings that made it work</a> for them. Others called it a "swampy mess". A common refrain was that the world was more fun to explore in the 0.12 days.
</p>
<p>
So in 0.17 we're restoring the <em>default</em> elevation generator to one very similar to that used
by 0.12. Which means large, sometimes-connected lakes.
</p>
<p>
The water 'frequency' control was confusing to a lot of people including myself.
It could be interpreted as "how much water", when the actual effect was to inversely
scale both bodies of water and continents, such that higher water frequency actually meant smaller bodies of water.
So for 0.17, the water 'frequency' and 'size' sliders are being replaced with 'scale' and 'coverage',
which do the same thing, but in a hopefully more obvious way.
Larger scale means larger land features, while more coverage means more of the map covered in water.
</p>
<h3>New Map Types</h3>
<p>
In order to ensure a decent starting area, the elevation generator
always makes a plateau there (so you'll never spawn in the middle of
the ocean), and a lake (so you can get a power plant running).
Depending on what's going on outside of that plateau, this sometimes resulted in
a circular ring of cliffs around the starting point,
which looked very artificial, and we wanted to reduce that effect.
</p>
<p>
In the process of solving that problem I created another custom generator for debugging purposes.
This one simply generated that starting area plateau in an endless ocean.
I don't actually remember how this was useful for debugging, but at one point I directed Twinsen to look at it
to illustrate the mechanics behind generating the starting area.
</p>
<p>
The rest of the team liked that setting so much that we're making it a player-selectable option.
So in 0.17 you'll get to pick between the 'Normal' map type, which resembles that from 0.12,
and 'Island', which gives you a single large-ish island at the starting point.
There's a slider to let you change the size of the island(s).
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-island.png" width="900" height="900" />
</p>
<p>
Maps with multiple starting points will have multiple islands.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-islands.png" width="900" height="900" />
<br /><i>PvP islands!</i>
</p>
<p>
And speaking of scale sliders, we're expanding their range from ± a factor of 2 (the old 'very low' to 'very high' settings)
to ± a factor of 6 (shown as '17%' to '600%'). Previously the values were stored internally as one of 5 discrete options,
but as the recent terrain generation changes have made actual numeric multipliers more meaningful in most contexts
(e.g. the number of ore patches is directly proportional to the value of the 'frequency' slider,
rather than being just vaguely related to it somehow),
we're switching to storing them as numbers.
This has the side-effect that if you don't mind
<a href="https://gist.github.com/Bilka2/a17841d0ff1028b63c60c2bbf6fa7e4f">editing some JSON</a>,
you'll be able to create maps with values outside the range provided by the GUI sliders.
</p>
<p>
Mods will be able to add their own 'map types' to the map type drop-down, too. If you really liked the shape of landmasses in 0.16 and want to be able to continue creating new maps with it, please let us know on the forum.
</p>
<h2>High-res accumulators <font size="2">(Ernestas, Albert)</font>
</h2>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator.gif" />
</p>
<p>
The design of the accumulator has been always good. The 4 very visible cylinders, looking like giant batteries, Tesla poles and the electric beams perfectly telegraphed its function in terms of style and readability. Thats why for the high-res conversion we were very careful about keeping this entity as it was.
</p>
<p>
The only thing that was a bit disturbing (for some) are the poles crossing to each other when more than one accumulator is placed in a row. So we decided to fix it (or break it). The rest of the work was making the entity compatible for the actual look of the game. But in essence accumulators are still the same.
</p>
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator-comparison.png" width="900px" />
</p>
<p>
As always, let us know what you think on our <a href="https://forums.factorio.com/64912">forum</a>.
</p>
<p></p>
<div class="footer">
<div class="footer-copyright">
Copyright © 2015 - 2019 Wube Software - all rights reserved.
</div>
<div class="footer-menu">
<a href="/terms-of-service" style="font-size: 11px;"> Terms of Service </a>
<span style="font-size: 11px;"> | </span>
<a href="/privacy-policy" style="font-size: 11px;"> Privacy </a>
<span style="font-size: 11px;"> | </span>
<a href="/imprint" style="font-size: 11px;"> Imprint </a>
<span style="font-size: 11px;"> | </span>
<a href="/presskit" style="font-size: 11px;"> Presskit </a>
<span style="font-size: 11px;"> | </span>
<a href="/faq" style="font-size: 11px;"> FAQ </a>
<span style="font-size: 11px;"> | </span>
<a href="/blog/rss" style="font-size: 11px;"> RSS </a>
<span style="font-size: 11px;"> | </span>
<a href="/jobs" style="font-size: 11px;">
Jobs
</a>
</div>
</div>
</div>
<script type="text/javascript" async="" src="https://ssl.google-analytics.com/ga.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="/static/js/raphael-min.js" type="text/javascript"></script>
<script src="/static/js/factorio.min.js" type="text/javascript"></script>
<script src="/static/lightbox/js/lightbox.min.js" type="text/javascript"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-115167276-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
</div>
</div>
<div id="lightboxOverlay" class="lightboxOverlay" style="display: none;"></div>
<div id="lightbox" class="lightbox" style="display: none;">
<div class="lb-outerContainer">
<div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />
<div class="lb-nav"><a class="lb-prev" href=""></a><a class="lb-next" href=""></a></div>
<div class="lb-loader"><a class="lb-cancel"></a></div>
</div>
</div>
<div class="lb-dataContainer">
<div class="lb-data">
<div class="lb-details"><span class="lb-caption"></span><span class="lb-number"></span></div>
<div class="lb-closeContainer"><a class="lb-close"></a></div>
</div>
</div>
</div>
</body>
</html>

View file

@ -535,9 +535,11 @@ impl FullTextParser {
if let Some(mut parent) = node.get_parent() {
let new_node = if child_count == 1 && first_child_is_text {
let link_content = node.get_content();
Node::new_text(&link_content, document).expect("Failed to create new text node")
Node::new_text(&link_content, document)
.expect("Failed to create new text node")
} else {
let mut container = Node::new("span", None, document).expect("Failed to create new span container node");
let mut container = Node::new("span", None, document)
.expect("Failed to create new span container node");
for mut child in child_nodes.drain(..) {
child.unlink();
_ = container.add_child(&mut child);

View file

@ -576,7 +576,7 @@ impl Readability {
let text = Util::get_inner_text(&article_content, true);
let text_length = text.len();
//Util::serialize_node(&article_content, "debug.html");
//Util::serialize_node(&article_content, "dbg.html");
if text_length < constants::DEFAULT_CHAR_THRESHOLD {
parse_successful = false;

View file

@ -257,6 +257,16 @@ async fn js_link_replacement() {
run_test("js-link-replacement").await
}
#[tokio::test]
async fn keep_images() {
run_test("keep-images").await
}
#[tokio::test]
async fn keep_tabular_data() {
run_test("keep-tabular-data").await
}
#[tokio::test]
async fn webmd_1() {
run_test("webmd-1").await

View file

@ -358,7 +358,7 @@ impl Util {
None => return false,
};
if tmp_node.get_name() == tag_name
if tmp_node.get_name().to_uppercase() == tag_name
&& filter
.as_ref()
.map(|filter| filter(&tmp_node))