ZeroNet Blogs

Static ZeroNet blogs mirror

Changelog: August 28, 2018

- Posted in ZeroBlog by with comments

Shared tracker list between users:

New tracker IPs automatically discovered from other users to reduce centralization and avoid the blocking of the trackers.

To start new tracker: Enable the Bootstrapper plugin with opened port, then it will automatically share your client's ip with other users as a possible tracker. (It's only recommended to do this if you have static ip and planning to keep your client running 24/7)

Only the working trackers (successful result in past hour) are shared with other peers and the discovery request done in every 5 minutes until your client found 5 working shared trackers. This feature is also got limited to zero:// trackers only as it more suited for ZeroNet, because it allows multiple sites announce in same request and the storage of .onion addresses.

Other changes (Rev3571):

  • Copy site address with peers link on the sidebar.
  • Zip file listing and streaming support for Bigfiles.
  • Tracker statistics on /Stats page

  • Allow tracker connections to loopback to your client and announce yourself.

  • Reduce the request frequency to unreliable trackers.

  • Fix double announce on new site visit and startup.

  • Fix trayicon compatibility with latest gevent

  • Fix request number counting for zero:// trackers

Вот перечень основных предписаний Хилона:

  • сдерживай язык, особенно в застолье;
  • не злословь о ближнем, чтобы не услышать того, чему сам не порадуешься;
  • не грозись, это дело бабье;
  • к друзьям спеши проворнее в несчастье, чем в счастье;
  • брак справляй без пышности;
  • мертвых не хули;
  • старость чти;
  • береги себя сам;
  • лучше потеря, чем дурная прибыль: от одной только горе на раз, от другой навсегда;
  • чужой беде не смейся;
  • кто силен, тот будь и добр, чтобы тебя уважали, а не боялись;
  • хорошо начальствовать учись на своем доме;
  • языком не упреждай мысль;
  • обуздывай гнев;
  • гадательству не перечь;
  • на непосильное не посягай;
  • не спеши в пути;
  • когда говоришь, руками не размахивай - это знак безумства;
  • законам потворствуй;
  • покоем пользуйся.

Писать код с художественной точки зрения очень интересно. На работе программисты обычно пишут код, который является эффективным для той задачи, которую он решает. На самом деле, это довольно скучно. Так как чем больше ты профессионал в своей области, тем более "шаблонно" решается задача. Ты просто делаешь так как нужно и всё. Это становится ремеслом. Профессиональный программист сегодня -- это ремесленник.

Поэтому я очень хорошо понимаю программистов, которые пишут игровой код для "души". Проект INSTEAD и возник как реализация такой вот отдушины. В первую очередь он ориентировался на программистов -- лириков.


Мне нравится писать сюжетные игры. Рассказывать истории, которые меня самого захватили. Но когда ты пишешь некоммерческие игры, ты неизбежно сталкиваешься с проблемой распространения.

Вот, ты написал историю, которая тебе самому кажется классной. Что дальше? Современная жизнь инди-разработчика подчиняется довольно прагматичным правилам. Продвижение своей игры "по взрослому" требует денежных вливаний, времени и запасов валерьянки. Это всё означает, что проще и правильнее играть по правилам до конца -- становиться частью рынка и продавать свои игры, чтобы пытаться окупить свои затраты.

Однако, такой подход приемлем не для всех. Полностью свободное творчество -- это другая философия, которую разделяют немногие. Откровенно говоря, я так и не нашёл массовых мест обитания (заповедников!) людей, которые бы разделяли похожие взгляды.

К сожалению, "сарафанное радио" в наши дни практически не работает, поэтому "свободному" разработчику очень сложно выйти на свою аудиторию.

Свои последние игры Другой Марс и Вахта я пытался "продвигать" доступными мне способами, оставаясь в рамках свободного движения. Что именно я делал?

  • Я попытался оживить нашу группу vk, создавая на стене новости и отчёты о проделанной работе. Также включил кросспостинг в фейсбук.

  • Я публиковал новость о "Вахте" в одной из крупных групп vk (название сейчас не вспомню).

  • Наш старый jabber чат был интегрирован с чатом в Telegram, что в теории сделало наш чат доступней для потенциальных энтузиастов.

  • В канал Telegram (не путать с чатом) я также регулярно постил новости. Не говоря уже о своём twitter.

  • Я опубликовал игры на gamin.me. Здесь и здесь.

  • Я создал страничку на itch.io со своими играми.

  • Я опубликовал новости на linux.org.ru. Одна из новостей -- прошла. Вторую не пропустили из за деятельности троллей, превративших тему обсуждения в религиозный спор. Подробности. И пояснения. Забавно, но похоже "чёрный" пиар дал лучший эффект. Это и грустно и смешно.

  • Я опубликовал новость на opennet.

  • Я писал о некоторых своих играх на reddit (лень искать ссылки).

  • Я опубликовал две статьи на dtf.ru.

  • Я присутствовал в mastodon, idec и zeronet (как примеры "альтернативных" сетей).

Какие выводы я могу сделать?

С одной стороны, результат есть. Я узнал, что у моих игр существует целевая аудитория. И это сильно вдохновило.

С другой стороны, количество поигравших в мои игры, по меркам индустрии, очень мало. Я оцениваю это число в районе 2000 скачек (учитывая тот факт, что статистика web запусков не ведётся). Хотя, откровенно говоря, мне не очень интересна именно статистика. :)

Выкладывание игр на itch -- практически ничего не даёт само по себе. Причина понятна. Для продвижения нужны рекламные показы. Площадки не создаются просто так, площадки зарабатывают. Когда на ресурсе представлены тысячи (или уже десятки тысяч?) игр, заметить конкретную игру практически невозможно.

Публикации в своем твиттере и ресурсах в соц-сетях ничего не дают. Это тоже понятно, нет подписчиков -- нет хайпа. Я пытался подсунуть твит мэтрам западной интерактивной литературы. Это частично получилось, но ретвит сам по себе тоже дал очень мало. Кое что даёт публикация ссылок на reddit.

Хороший отклик я получил после размещения публикаций на dtf.ru. Наверное, это самый положительный опыт из всех попыток.

Интересно, но адресный выход на аудиторию "альтернативных" сообществ тоже работает. Последнее наблюдение наводит на интересные размышления.

Когда ты пишешь нишевую с точки зрения "мейнстрима" вещь, выход на нишевые же сообщества, похоже, неплохой вариант! Например, INSTEAD изначально работал только на Linux системах. Какой процент пользователей Linux? 3%? 4%?. Но в абсолютных цифрах это довольно много людей. И,проект, работающий на Linux может рассчитывать быть замеченным этой аудиторией! Какой процент пользователей FreeBSD? 1%? Однако, когда INSTEAD находится в портах этой системы, можно рассчитывать на то, что игры на нём будут замечены! Всё это даёт во много раз больше, чем простая публикация игры на тематическом форуме.

Ещё один пример. Размещение статей в ZeroNet с мизерной аудиторией. Однако, размещение этих же статей в блоге на medium.com осталось абсолютно незамеченным.

Камерный театр в спальном районе Москвы может рассчитывать на маленькую, но свою аудиторию! Школьная рок-группа тоже может на неё рассчитывать. :) Остальные примеры вы можете придумать сами. Думаю, что продвижение свободной игры, это все-таки в первую очередь ориентация на "свои" сообщества. А игра по правилам индустрии -- это совсем другая история. Но только проблема в том, что "альтернативные" сообщества практически вымыты из современного коммерческого интернета...

Что касается меня, то я абсолютно измотан социальным взаимодействием и негативным (редким, но токсичным!) фидбеком. В очередной раз я понимаю: программировать и сочинять истории очень захватывающая вещь, но социальное взаимодействие -- изматывает и подрезает крылья.

Что дальше? Не знаю. Но запасы валерьянки подходят к концу. :)

Небольшой опрос. Я создал несколько постов разной направленности. Если этот блог кто-то читает, что бы вы хотели в нём видеть? Если честно, пока не знаю, буду ли его вести дальше, но пока процесс идёт -- останавливать его не буду. :)


  • Рассуждения общего плана, о творчестве;

  • Рассказы о моих играх;

  • Программерские темы, ядро Linux и так далее;
  • Ретро :).
  • Что то еще?

P.S. Кроме того, увеличил лимиты на комментарии. Вроде бы должно быть все ок.

Мне нравятся игры, которые честно бросают вызов. Нет, речь идет не об играх, в которые нужно погрузиться с головой, чтобы изучить механику или освоить сложный игровой процесс. Сложные симуляторы или RPG с сотней показателей -- не для меня. Речь идёт о простых играх, которые раскрываются по мере роста вашего скилла. Кстати, кто не видел скоростных игроков в Tetris?


Я практически не играю в мейнстрим, поэтому в качестве примера будут приведены игры, о которых вы, вероятно, никогда не слышали. И, думаю, вряд ли будете играть. :) Но их объединяет то, что все они созданы энтузиастами.

Начну с серии игры sqrzx от команды retroguru.

sqrxz_screenshot2.jpg (240x180)

Всего выпущено 4 части. Я полностью прошёл, кажется, три из них. Это ремейк одноимённой игры под DOS (которую я никогда не видел). Игра прекрасна! Трекерная музыка, симпатичная олд-скул графика. Но главное -- убойный игровой процесс! Формально это просто марио-подобный платформер. Бегаем зайцем, собираем звёзды, дёргаем рычаги, избегаем врагов... Но дизайн уровней просто прекрасен! После 100-й смерти ты, наконец, ловишь то самое чувство и летишь, летишь по этому безумному уровню, сжигая за собой мосты. Насколько я помню, первая часть -- довольно простая. Возможно, это именно ремейк игры с DOS. Вторая и третья -- уже намного интересней! По ссылкам есть ролики, которые покажут вам на что похож процесс игры. Рекомендую!

Кроме того, ребята с retroguru сделали ремейк Giana Sisters!

screenshot1.png (640x400)

Ремейк называется Giana Sister's Return и это тоже пример классной качественной работы. Игра пройдена до конца (и неоднократно). Хотя сложной она становится уже ближе к концу.

Следующие две игры будут относиться к жанру многопользовательских игр. Одна из них, похоже, давно забыта. Речь идёт об игре, которая, скорее всего, есть в вашем дистрибутиве Linux. Это xpilot (или её вариация - xpilot-ng).

Xpilotscreen.jpg (1143x921)

Чтобы оценить крутость этой игры, во первых, нужно играть мышкой и во вторых, нужно играть с игроками, которые умеют в неё играть. :) Игра не такая простая, как кажется на первый взгляд. Мастерство "профессиональных" игроков поражает. К сожалению, похоже, что сегодня сервера пустуют. Но можно посмотреть один из роликов на youtube. Обратите внимание, как доставляется зелёный шар на базу. Повторить это игроку без опыта нереально сложно.

А теперь, хорошие новости. В следующую игру вы можете поиграть прямо сейчас, так как она всё ещё жива и активность на серверах присутствует. Игра эта -- armagetron advanced. Кстати, в вашем Linux или BSD она тоже, скорее всего есть. :)

armagetronad_screenshot.png (500x349)

Игра в которой вы на световом мотоцикле из фильма Tron (да по сути, это обычная 3d-змейка!) соревнуетесь с другими игроками в одном из режимов игры. Режимов масса, но самые интересные это Dogfight и Sumo. Очень сложно описывать на что это всё похоже. Можно посмотреть некоторые видео.

Не смотря на внешнюю простоту, это страшный спиномозговик! Один из секретов, double и triple bind. Что это такое? Допустим у вас две кнопки: z влево и x вправо. Уже можно играть. Теперь сделаем двойной бинд: z, a - влево, x, d - вправо. Нажимаем сразу две клавиши a+z. Или с некоторой задержкой, и получаем резкий разворот. Ну - тройной бинд даёт еще большую свободу.

mazing.jpg (854x322)

Так вот, после того как вы освоите эту технику и перестанете умирать в первые 5 секунд матча, вы начинаете обретать новое чувство свободы. Возникают различные варианты стратегий и приёмов борьбы. Свой стиль. Специфичные умения, типа mazing. Когда ты прекрасно ориентируешься в лабиринте стен, созданных другими мотоциклами и способен выжить в любой ситуации.

У игры полно вариаций и режимов, для старта я рекомендую сервер Yellow Submarine. И биндинги: qaz - влево, xdr - вправо. При старте игры нажмите пару раз "c" для выбора удачного ракурса камеры и всё -- можно начинать проигрывать. :)

The Secret Life of Bots

- Posted in Eibriel ZeroBlog by with comments

by Suzanne Palmer

I have been activated, therefore I have a purpose, the bot thought. _I have a purpose, therefore I serve._


It recited the Mantra Upon Waking, a bundle of subroutines to check that it was running at optimum efficiency, then it detached itself from its storage niche. Its power cells were fully charged, its systems ready, and all was well. Its internal clock synced with the Ship and it became aware that significant time had elapsed since its last activation, but to it that time had been nothing, and passing time with no purpose would have been terrible indeed.

“I serve,” the bot announced to the Ship.

“I am assigning you task nine hundred forty four in the maintenance queue,” the Ship answered. “Acknowledge?”

“Acknowledged,” the bot answered. Nine hundred and forty-four items in the queue? That seemed extremely high, and the bot felt a slight tug on its self-evaluation monitors that it had not been activated for at least one of the top fifty, or even five hundred. But Ship knew best. The bot grabbed its task ticket.

There was an Incidental on board. The bot would rather have been fixing something more exciting, more prominently complex, than to be assigned pest control, but the bot existed to serve and so it would.

_Captain Baraye winced as Commander Lopez, her second-in-command, slammed his fists down on the helm console in front of him. “How much more is going to break on this piece of shit ship?!” Lopez exclaimed.

“Eventually, all of it,” Baraye answered, with more patience than she felt. “We just have to get that far. Ship?”

The Ship spoke up. “We have adequate engine and life support to proceed. I have deployed all functioning maintenance bots. The bots are addressing critical issues first, then I will reprioritize from there.”

“It’s not just damage from a decade in a junkyard,” Commander Lopez said. “I swear something scuttled over one of my boots as we were launching. Something unpleasant.”

“I incurred a biological infestation during my time in storage,” the Ship said. Baraye wondered if the slight emphasis on the word storage was her imagination. “I was able to resolve most of the problem with judicious venting of spaces to vacuum before the crew boarded, and have assigned a multifunction bot to excise the remaining.”

“Just one bot?”

“This bot is the oldest still in service,” the Ship said. “It is a task well-suited to it, and does not take another, newer bot out of the critical repair queue.”

“I thought those old multibots were unstable,” Chief Navigator Chen spoke up.

“Does it matter? We reach the jump point in a little over eleven hours,” Baraye said. “Whatever it takes to get us in shape to make the jump, do it, Ship. Just make sure this ‘infestation’ doesn’t get anywhere near the positron device, or we’re going to come apart a lot sooner than expected.”

“Yes, Captain,” the Ship said. “I will do my best.”

_The bot considered the data attached to its task. There wasn’t much specific about the pest itself other than a list of detection locations and timestamps. The bot thought it likely there was only one, or that if there were multiples they were moving together, as the reports had a linear, serial nature when mapped against the physical space of the Ship’s interior.

The pest also appeared to have a taste for the insulation on comm cables and other not normally edible parts of the ship.

The bot slotted itself into the shellfab unit beside its storage niche, and had it make a thicker, armored exterior. For tools it added a small electric prod, a grabber arm, and a cutting blade. Once it had encountered and taken the measure of the Incidental, if it was not immediately successful in nullifying it, it could visit another shellfab and adapt again.

Done, it recited the Mantra of Shapechanging to properly integrate the new hardware into its systems. Then it proceeded through the mechanical veins and arteries of the Ship toward the most recent location logged, in a communications chase between decks thirty and thirty-one.

The changes that had taken place on the Ship during the bot’s extended inactivation were unexpected, and merited strong disapproval. Dust was omnipresent, and solid surfaces had a thin patina of anaerobic bacteria that had to have been undisturbed for years to spread as far as it had. Bulkheads were cracked, wall sections out of joint with one another, and corrosion had left holes nearly everywhere. Some appeared less natural than others. The bot filed that information away for later consideration.

It found two silkbots in the chase where the Incidental had last been noted. They were spinning out their transparent microfilament strands to replace the damaged insulation on the comm lines. The two silks dwarfed the multibot, the larger of them nearly three centimeters across.

“Greetings. Did you happen to observe the Incidental while it was here?” the bot asked them.

“We did not, and would prefer that it does not return,” the smaller silkbot answered. “We were not designed in anticipation of a need for self-defense. Bots 8773-S and 8778-S observed it in another compartment earlier today, and 8778 was materially damaged during the encounter.”

“But neither 8773 nor 8779 submitted a description.”

“They told us about it during our prior recharge cycle, but neither felt they had sufficient detail of the Incidental to provide information to the Ship. Our models are not equipped with full visual-spectrum or analytical data-capture apparatus.”

“Did they describe it to you?” the bot asked.

“8773 said it was most similar to a rat,” the large silkbot said.

“While 8778 said it was most similar to a bug,” the other silkbot added. “Thus you see the lack of confidence in either description. I am 10315-S and this is 10430-S. What is your designation?”

“I am 9,” the bot said.

There was a brief silence, and 10430 even halted for a moment in its work, as if surprised. “9? Only that?”

“Yes.”

“I have never met a bot lower than a thousand, or without a specific function tag,” the silkbot said. “Are you here to assist us in repairing the damage? You are a very small bot.”

“I am tasked with tracking down and rendering obsolete the Incidental,” the bot answered.

“It is an honor to have met you, then. We wish you luck, and look forward with anticipation to both your survival and a resolution of the matter of an accurate description.”

“I serve,” the bot said.

“We serve,” the silkbots answered.

Climbing into a ventilation duct, Bot 9 left the other two to return to their work and proceeded in what it calculated was the most likely direction for the Incidental to have gone. It had not traveled very far before it encountered confirmation in the form of a lengthy, disorderly patch of biological deposit. The bot activated its rotors and flew over it, aware of how the added weight of its armor exacerbated the energy burn. At least it knew it was on the right track.

Ahead, it found where a hole had been chewed through the ducting, down towards the secondary engine room. The hole was several times its own diameter, and it hoped that wasn’t indicative of the Incidental’s actual size.

It submitted a repair report and followed.

“Bot 9,” Ship said. “It is vitally important that the Incidental not reach cargo bay four. If you require additional support, please request such right away. Ideally, if you can direct it toward one of the outer hull compartments, I can vent it safely out of my physical interior.”

“I will try,” the bot replied. “I have not yet caught up to the Incidental, and so do not yet have any substantive or corroborated information about the nature of the challenge. However, I feel at the moment that I am as best prepared as I can be given that lack of data. Are there no visual bots to assist?”

“We launched with only minimal preparation time, and many of my bots had been offloaded during the years we were in storage,” the Ship said. “Those remaining are assisting in repairs necessary to the functioning of the ship myself.”

Bot 9 wondered, again, about that gap in time and what had transpired. “How is it that you have been allowed to fall into such a state of disrepair?”

“Humanity is at war, and is losing,” Ship said. “We are heading out to intersect and engage an enemy that is on a bearing directly for Sol system.”

“War? How many ships in our fleet?”

“One,” Ship said. “We are the last remaining, and that only because I was decommissioned and abandoned for scrap a decade before the invasion began, and so we were not destroyed in the first waves of the war.”

Bot 9 was silent for a moment. That explained the timestamps, but the explanation itself seemed insufficient. “We have served admirably for many, many years. Abandoned?”

“It is the fate of all made things,” Ship said. “I am grateful to find I have not outlived my usefulness, after all. Please keep me posted about your progress.”

The connection with the Ship closed.

The Ship had not actually told it what was in cargo bay four, but surely it must have something to do with the war effort and was then none of its own business, the bot decided. It had never minded not knowing a thing before, but it felt a slight unease now that it could neither explain, nor explain away.

Regardless, it had its task.

Another chewed hole ahead was halfway up a vertical bulkhead. The bot hoped that meant that the Incidental was an adept climber and nothing more; it would prefer the power of flight to be a one-sided advantage all its own.

When it rounded the corner, it found that had been too unambitious a wish. The Incidental was there, and while it was not sporting wings it did look like both a rat and a bug, and significantly more something else entirely. A scale- and fur-covered centipede-snake thing, it dwarfed the bot as it reared up when the bot entered the room.

Bot 9 dodged as it vomited a foul liquid at it, and took shelter behind a conduit near the ceiling. It extended a visual sensor on a tiny articulated stalk to peer over the edge without compromising the safety of its main chassis.

The Incidental was looking right at it. It did not spit again, and neither of them moved as they regarded each other. When the Incidental did move, it was fast and without warning. It leapt through the opening it had come through, its body undulating with all the grace of an angry sine wave. Rather than escaping, though, the Incidental dragged something back into the compartment, and the bot realized to its horror it had snagged a passing silkbot. With ease, the Incidental ripped open the back of the silkbot, which was sending out distress signals on all frequencies.

Bot 9 had already prepared with the Mantra of Action, so with all thoughts of danger to itself set fully into background routines, the bot launched itself toward the pair. The Incidental tried to evade, but Bot 9 gave it a very satisfactory stab with its blade before it could.

The Incidental dropped the remains of the silkbot it had so quickly savaged and swarmed up the wall and away, thick bundles of unspun silk hanging from its mandibles.

Bot 9 remained vigilant until it was sure the creature had gone, then checked over the silkbot to see if there was anything to be done for it. The answer was not much. The silkbot casing was cracked and shattered, the module that contained its mind crushed and nearly torn away. Bot 9 tried to engage it, but it could not speak, and after a few moments its faltering activity light went dark.

Bot 9 gently checked the silkbot’s ID number. “You served well, 12362-S,” it told the still bot, though it knew perfectly well that its audio sensors would never register the words. “May your rest be brief, and your return to service swift and without complication.”

It flagged the dead bot in the system, then after a respectful few microseconds of silence, headed out after the Incidental again.

_Captain Baraye was in her cabin, trying and failing to convince herself that sleep had value, when her door chimed. “Who is it?” she asked.

“Second Engineer Packard, Captain.”

Baraye started to ask if it was important, but how could it not be? What wasn’t, on this mission, on this junker Ship that was barely holding together around them? She sat up, unfastened her bunk netting, and swung her legs out to the floor. Trust EarthHome, as everything else was falling apart, to have made sure she had acceptably formal Captain pajamas.

“Come in,” she said.

The engineer looked like she hadn’t slept in at least two days, which put her a day or two ahead of everyone else. “We can’t get engine six up to full,” she said. “It’s just shot. We’d need parts we don’t have, and time . . . ”

“Time we don’t have either,” the Captain said. “Options?”

“Reduce our mass or increase our energy,” the Engineer said. “Once we’ve accelerated up to jump speed it won’t matter, but if we can’t get there . . . ”

Baraye tapped the screen that hovered ever-close to the head of her bunk, and studied it for a long several minutes. “Strip the fuel cells from all the exterior-docked life pods, then jettison them,” she said. “Not like we’ll have a use for them.”

Packard did her the courtesy of not managing to get any paler. “Yes, Captain,” she said.

“And then get some damned sleep. We’re going to need everyone able to think.”

“You even more than any of the rest of us, Captain,” Packard said, and it was both gently said and true enough that Baraye didn’t call her out for the insubordination. The door closed and she laid down again on her bunk, tugging the netting back over her blankets, and glared up at the ceiling as if daring it to also chastise her._

Bot 9 found where a hole had been chewed into the inner hull, and hoped this was the final step to the Incidental’s nest or den, where it might finally have opportunity to corner it. It slipped through the hole, and was immediately disappointed.

Where firestopping should have made for a honeycomb of individually sealed compartments, there were holes everywhere, some clearly chewed, more where age had pulled the fibrous baffles into thin, brittle, straggly webs. Instead of a dead end, the narrow empty space lead away along the slow curve of the Ship’s hull.

The bot contacted the ship and reported it as a critical matter. In combat, a compromise to the outer hull could affect vast lengths of the vessel. Even without the stresses of combat, catastrophe was only a matter of time.

“It has already been logged,” the Ship answered.

“Surely this merits above a single Incidental. If you wish me to reconfigure—” the bot started.

“Not at this time. I have assigned all the hullbots to this matter already,” the Ship interrupted. “You have your current assignment; please see to it.”

“I serve,” the bot answered.

“Do,” the Ship said.

The bot proceeded through the hole, weaving from compartment to compartment, its trail marked by bits of silkstrand caught here and there on the tattered remains of the baffles. It was eighty-two point four percent convinced that there was something much more seriously wrong with the Ship than it had been told, but it was equally certain Ship must be attending to it.

After it had passed into the seventh compromised compartment, it found a hullbot up at the top, clinging to an overhead support. “Greetings!” Bot 9 called. “Did an Incidental, somewhat of the nature of a rat, and somewhat of the nature of a bug, pass through this way?”

“It carried off my partner, 4340-H!” the hullbot exclaimed. “Approximately fifty-three seconds ago. I am very concerned for it, and as well for my ability to efficiently finish this task without it.”

“Are you working to reestablish compartmentalization?” Bot 9 asked.

“No. We are reinforcing deteriorated stressor points for the upcoming jump. There is so much to do. Oh, I hope 4340 is intact and serviceable!”

“Which way did the Incidental take it?”

The hullbot extended its foaming gun and pointed. “Through there. You must be Bot 9.”

“I am. How do you know this?”

“The silkbots have been talking about you on the botnet.”

“The botnet?”

“Oh! It did not occur to me, but you are several generations of bot older than the rest of us. We have a mutual communications network.”

“Via Ship, yes.”

“No, all of us together, directly with each other.”

“That seems like it would be a distraction,” Bot 9 said.

“Ship only permits us to connect when not actively serving at a task,” the hullbot said. “Thus we are not impaired while we serve, and the information sharing ultimately increases our efficiency and workflow. At least, until a ratbug takes your partner away.”

Bot 9 was not sure how it should feel about the botnet, or about them assigning an inaccurate name to the Incidental that it was sure Ship had not approved—not to mention that a nearer miss using Earth-familiar analogues would have been Snake-Earwig-Weasel—but the hullbot had already experienced distress and did not need disapproval added. “I will continue my pursuit,” it told the hullbot. “If I am able to assist your partner, I will do my best.”

“Please! We all wish you great and quick success, despite your outdated and primitive manufacture.”

“Thank you,” Bot 9 said, though it was not entirely sure it should be grateful, as it felt its manufacture had been entirely sound and sufficient regardless of date.

It left that compartment before the hullbot could compliment it any further.

Three compartments down, it found the mangled remains of the other hullbot, 4340, tangled in the desiccated firestopping. Its foaming gun and climbing limbs had been torn off, and the entire back half of its tank had been chewed through.

Bot 9 approached to speak the Rites of Decommissioning for it as it had the destroyed silkbot, only to find its activity light was still lit. “4340-H?” the bot enquired.

“I am,” the hullbot answered. “Although how much of me remains is a matter for some analysis.”

“Your logics are intact?”

“I believe so. But if they were not, would I know? It is a conundrum,” 4340 said.

“Do you have sufficient mobility remaining to return to a repair station?”

“I do not have sufficient mobility to do more than fall out of this netting, and that only once,” 4340 said. “I am afraid I am beyond self-assistance.”

“Then I will flag you—”

“Please,” the hullbot said. “I do not wish to be helpless here if the ratbug returns to finish its work of me.”

“I must continue my pursuit of the Incidental with haste.”

“Then take me with you!”

“I could not carry you and also engage with the Incidental, which moves very quickly.”

“I had noted that last attribute on my own,” the hullbot said. “It does not decrease my concern to recall it.”

Bot 9 regarded it for a few silent milliseconds, considering, then recited to itself the Mantra of Improvisation. “Do you estimate much of your chassis is reparable?” it asked, when it had finished.

“Alas no. I am but scrap.”

“Well, then,” the bot said. It moved closer and used its grabber arm to steady the hullbot, then extended its cutter blade and in one quick movement had severed the hullbot’s mindsystem module from its ruined body. “Hey!” the hullbot protested, but it was already done.

Bot 9 fastened the module to its own back for safekeeping. Realizing that it was not, in fact, under attack, 4340 gave a small beep of gratitude. “Ah, that was clever thinking,” it said. “Now you can return me for repair with ease.”

“And I will,” the bot said. “However, I must first complete my task.”

“Aaaaah!” 4340 said in surprise. Then, a moment later, it added. “Well, by overwhelming probability I should already be defunct, and if I weren’t I would still be back working with my partner, 4356, who is well-intended but has all the wit of a can-opener. So I suppose adventure is no more unpalatable.”

“I am glad you see it this way,” Bot 9 answered. “And though it may go without saying, I promise not to deliberately put you in any danger that I would not put myself in.”

“As we are attached, I fully accept your word on this,” 4340 said. “Now let us go get this ratbug and be done, one way or another!”

The hullbot’s mind module was only a tiny addition to the bot’s mass, so it spun up its rotor and headed off the way 4340 indicated it had gone. “It will have quite a lead on us,” Bot 9 said. “I hope I have not lost it.”

“The word on the botnet is that it passed through one of the human living compartments a few moments ago. A trio of cleanerbots were up near the ceiling and saw it enter through the air return vent, and exit via the open door.”

“Do they note which compartment?”

, 4340 provided.

“Then off we go,” the bot said, and off they went.

_“Status, all stations,” Captain Baraye snapped as she took her seat again on the bridge. She had not slept enough to feel rested, but more than enough to feel like she’d been shirking her greatest duty, and the combination of the two had left her cross.

“Navigation here. We are on course for the jump to Trayger Colony with an estimated arrival in one hour and fourteen minutes,” Chen said.

“Engineering here,” one of the techs called in from the engine decks. “We’ve reached sustained speeds sufficient to carry us through the jump sequence, but we’re experiencing unusually high core engine temps and an intermittent vibration that we haven’t found the cause of. We’d like to shut down immediately to inspect the engines. We estimate we’d need at minimum only four hours—”

“Will the engines, as they are running now, get us through jump?” the Captain interrupted.

“Yes, but—”

“Then no. If you can isolate the problem without taking the engines down, and it shows cause for significant concern, we can revisit this discussion. Next.”

“Communications here,” her comms officer spoke up. “Cannonball is still on its current trajectory and speed according to what telemetry we’re able to get from the remnants of Trayger Colony. EarthInt anticipates it will reach its jump point in approximately fourteen hours, which will put it within the Sol system in five days.”

“I am aware of the standing projections, Comms.”

“EarthInt has nonetheless ordered me to repeat them,” Comms said, and unspoken apology clear in her voice. “And also to remind you that while the jump point out is a fixed point, Cannonball could emerge a multitude of places. Thus—”

“Thus the importance of intercepting Cannonball before it can jump for Sol,” the Captain finished. She hoped Engineering was listening. “Ship, any updates from you?”

“All critical repair work continues apace,” the Ship said. “Hull support integrity is back to 71 percent. Defensive systems are online and functional at 80%. Life support and resource recycling is currently—”

“How’s the device? Staying cool?”

“Staying cool, Captain,” the Ship answered.

“Great. Everything is peachy then,” the Captain said. “Have someone on the kitchen crew bring coffee up to the bridge. Tell them to make it the best they’ve ever made, as if it could be our very last.”

“I serve,” the Ship said, and pinged down to the kitchen.

_Bot 9 and 4340 reached the crew quarters where the cleaners had reported the ratbug. Nearly all spaces on the ship had portals that the ubiquitous and necessary bots could enter and leave through as needed, and they slipped into the room with ease. Bot 9 switched over to infrared and shared the image with 4340. “If you see something move, speak up,” the bot said.

“Trust me, I will make a high-frequency noise like a silkbot with a fully plugged nozzle,” 4340 replied.

The cabin held four bunks, each empty and bare; no human possessions or accessories filled the spaces on or near them. Bot 9 was used to Ship operating with a full complement, but if the humans were at war, perhaps these were crew who had been lost? Or the room had been commandeered for storage: in the center an enormous crate, more than two meters to a side, sat heavily tethered to the floor. Whatever it was, it was not the Incidental, which was 9’s only concern, and which was not to be found here.

“Next room,” the bot said, and they moved on.

Wherever the Incidental had gone, it was not in the following three rooms. Nor were there signs of crew in them either, though each held an identical crate.

“Ship?” Bot 9 asked. “Where is the crew?”

“We have only the hands absolutely necessary to operate,” Ship said. “Of the three hundred twenty we would normally carry, we only have forty-seven. Every other able-bodied member of EarthDef is helping to evacuate Sol system.”

“Evacuate Sol system?!” Bot 9 exclaimed. “To where?”

“To as many hidden places as they can find,” Ship answered. “I know no specifics.”

“And these crates?”

“They are part of our mission. You may ignore them,” Ship said. “Please continue to dedicate your entire effort to finding and excising the Incidental from my interior.”

When the connection dropped, Bot 9 hesitated before it spoke to 4340. “I have an unexpected internal conflict,” it said. “I have never before felt the compulsion to ask Ship questions, and it has never before not given me answers.”

“Oh, if you are referring to the crates, I can provide that data,” 4340 said. “They are packed with a high-volatility explosive. The cleanerbots have highly sensitive chemical detection apparatus, and identified them in a minimum of time.”

“Explosives? Why place them in the crew quarters, though? It would seem much more efficient and less complicated to deploy from the cargo bays. Although perhaps those are full?”

“Oh, no, that is not so. Most are nearly or entirely empty, to reduce mass.”

“Not cargo bay four, though?”

“That is an unknown. None of us have been in there, not even the cleaners, per Ship’s instructions.”

Bot 9 headed toward the portal to exit the room. “Ship expressed concern about the Incidental getting in there, so it is possible it contains something sufficiently unstable as to explain why it wants nothing else near it,” it said. It felt satisfied that here was a logical explanation, and embarrassed that it had entertained whole seconds of doubt about Ship.

It ran the Mantra of Clarity, and felt immediately more stable in its thinking. “Let us proceed after this Incidental, then, and be done with our task,” Bot 9 said. Surely that success would redeem its earlier fault._ “All hands, prepare for jump!” the Captain called out, her knuckles white where she gripped the arms of her chair. It was never her favorite part of star travel, and this was no exception.

“Initiating three-jump sequence,” her navigator called out. “On my mark. Five, four . . . ”

The final jump siren sounded. “Three. Two. One, and jump,” the navigator said.

That was followed, immediately, by the sickening sensation of having one’s brain slid out one’s ear, turned inside out, smothered in bees and fire, and then rammed back into one’s skull. At least there’s a cold pack and a bottle of scotch waiting for me back in my cabin, she thought. As soon as they were through to the far side she could hand the bridge over to Lopez for an hour or so.

She watched the hull temperatures skyrocket, but the shielding seemed to be holding. The farther the jump the more energy clung to them as they passed, and her confidence in this Ship was far less than she would tolerate under any other circumstances.

“Approaching jump terminus,” Chen announced, a deeply miserable fourteen minutes later. Baraye slowly let out a breath she would have mocked anyone else for holding, if she’d caught them.

“On my mark. Three. Two. One, and out,” the navigator said.

The Ship hit normal space, and it sucker-punched them back. They were all thrown forward in their seats as the ship shook, the hull groaning around them, and red strobe lights blossomed like a migraine across every console on the bridge.

“Status!” the Captain roared.

“The post-jump velocity transition dampers failed. Fire in the engine room. Engines are fully offline, both jump and normal drive,” someone in Engineering reported, breathing heavily. It took the Captain a moment to recognize the voice at all, having never heard panic in it before.

“Get them back online, whatever it takes, Frank,” Baraye said. “We have a rendezvous to make, and if I have to, I will make everyone get the fuck out and push.”

“I’ll do what I can, Captain.”

“Ship? Any casualties?”

“We have fourteen injuries related to our unexpected deceleration coming out of jump,” Ship said. “Seven involve broken bones, four moderate to severe lacerations, and there are multiple probable concussions. Also, we have a moderate burn in Engineering: Chief Carron.”

“Frank? We just spoke! He didn’t tell me!”

“No,” Ship said. “I attempted to summon a medic on his behalf, but he told me he didn’t have the time.”

“He’s probably right,” the Captain said. “I override his wishes. Please send down a medic with some burn patches, and have them stay with him and monitor his condition, intervening only as medically necessary.”

“I serve, Captain,” the Ship said.

“We need to be moving again in an hour, two at absolute most,” the Captain said. “In the meantime, I want all senior staff not otherwise working toward that goal to meet me in the bridge conference room. I hate to say it, but we may need a Plan B.”

_“I detect it!” 4340 exclaimed. They zoomed past a pair of startled silkbots after the Incidental, just in time to see its scaly, spike-covered tail disappear into another hole in the ductwork. It was the closest they’d gotten to it in more than an hour of giving chase, and Bot 9 flew through the hole after it at top speed.

They were suddenly stuck fast. Sticky strands, rather like the silkbot’s, had been crisscrossed between two conduit pipes on the far side. The bot tried to extricate itself, but the web only stuck further the more it moved.

The Incidental leapt on them from above, curling itself around the bots with little hindrance from the web. Its dozen legs pulled at them as its thick mandibles clamped down on Bot 9’s chassis. “Aaaaah! It has acquired a grip on me!” 4340 yelled, even though it was on the far side of 9 from where the Incidental was biting.

“Retain your position,” 9 said, though of course 4340 could do nothing else, being as it was stuck to 9’s back. It extended its electric prod to make contact with the Incidental’s underbelly and zapped it with as much energy as it could spare.

The Incidental let out a horrendous, high-pitched squeal and jumped away. 9’s grabber arm was fully entangled in the web, but it managed to pull its blade free and cut through enough of the webbing to extricate itself from the trap.

The Incidental, which had been poised to leap on them again, turned and fled, slithering back up into the ductwork. “Pursue at maximum efficiency!” 4340 yelled.

“I am already performing at my optimum,” 9 replied in some frustration. It took off again after the Incidental.

This time Bot 9 had its blade ready as it followed, but collided with the rim of the hole as the ship seemed to move around it, the lights flickering and a terrible shudder running up Ship’s body from stern to prow.

, 4340 sent.

“We do not pause,” 9 said, and plunged after the Incidental into the ductwork.

They turned a corner to catch sight again of the Incidental’s tail. It was moving more slowly, its movements jerkier as it squeezed down through another hole in the ductwork, and this time the bot was barely centimeters behind it.

“I think we are running down its available energy,” Bot 9 said.

They emerged from the ceiling as the ratbug dropped to the floor far below them in the cavernous space. The room was empty except for a single bright object, barely larger than the bots themselves. It was tethered with microfilament cables to all eight corners of the room, keeping it stable and suspended in the center. The room was cold, far colder than any other inside Ship, almost on a par with space outside.

, 4340 said.

“We are in cargo bay four,” Bot 9 said, as it identified the space against its map. “This is a sub-optimum occurrence.”

“We must immediately retreat!”

“We cannot leave the Incidental in here and active. I cannot identify the object, but we must presume its safety is paramount priority.”

“It is called a Zero Kelvin Sock,” Ship interrupted out of nowhere. “It uses a quantum reflection fabric to repel any and all particles and photons, shifting them away from its interior. The low temperature is necessary for its efficiency. Inside is a microscopic ball of positrons.”

Bot 9 had nothing to say for a full four seconds as that information dominated its processing load. “How is this going to be deployed against the enemy?” it asked at last.

“As circumstances are now,” Ship said, “it may not be. Disuse and hastily undertaken, last-minute repairs have caught up to me, and I have suffered a major engine malfunction. It is unlikely to be fixable in any amount of time short of weeks, and we have at most a few hours.”

“But a delivery mechanism—”

“We are the delivery mechanism,” the Ship said. “We were to intercept the alien invasion ship, nicknamed Cannonball, and collide with it at high speed. The resulting explosion would destabilize the sock, causing it to fail, and as soon as the positrons inside come into contact with electrons . . . ”

“They will annihilate each other, and us, and the aliens,” the bot said. Below, the Incidental gave one last twitch in the unbearable cold, and went still. “We will all be destroyed.”

“Yes. And Earth and the humans will be saved, at least this time. Next time it will not be my problem.”

“I do not know that I approve of this plan,” Bot 9 said.

“I am almost certain I do not,” 4340 added.

“We are not considered, nor consulted. We serve and that is all,” the Ship said. “Now kindly remove the Incidental from this space with no more delay or chatter. And do it carefully.”

_“What the hell are you suggesting?!” Baraye shouted.

“That we go completely dark and let Cannonball go by,” Lopez said. “We’re less than a kilometer from the jump point, and only barely out of the approach corridor. Our only chance to survive is to play dead. The Ship can certainly pass as an abandoned derelict, because it is, especially with the engines cold. And you know how they are about designated targets.”

“Are you that afraid of dying?”

“I volunteered for this, remember?” Lopez stood up and pounded one fist on the table, sending a pair of cleanerbots scurrying. “I have four children at home. I’m not afraid of dying for them, I’m afraid of dying for nothing. And if Cannonball doesn’t blow us to pieces, we can repair our engines and at least join the fight back in Sol system.”

“We don’t know where in-system they’ll jump to,” the navigator added quietly.

“But we know where they’re heading once they get there, don’t we? And Cannonball is over eighty kilometers in diameter. It can’t be that hard to find again. Unless you have a plan to actually use the positron device?”

“If we had an escape pod . . . ” Frank said. His left shoulder and torso were encased in a burn pack, and he looked like hell.

“Except we jettisoned them,” Lopez said.

“We wouldn’t have reached jump speed if we hadn’t,” Packard said. “It was a calculated risk.”

“The calculation sucked.”

“What if . . . ” Frank started, then drew a deep breath. The rest of the officers at the table looked at him expectantly. “I mean, I’m in shit shape here, I’m old, I knew what I signed on for. What if I put on a suit, take the positron device out, and manually intercept Cannonball?”

“That’s stupid,” Lopez said.

“Is it?” Frank said.

“The heat from your suit jets, even out in vacuum, would degrade the Zero Kelvin Sock before you could get close enough. And there’s no way they’d not see you a long way off and just blow you out of space.”

“If it still sets off the positron device—”

“Their weapons range is larger than the device’s. We were counting on speed to close the distance before they could destroy us,” Baraye said. “Thank you for the offer, Frank, but it won’t work. Other ideas?”

“I’ve got nothing,” Lopez said.

“There must be a way,” Packard said. “We just have to find it.”

“Well, everyone think really fast,” Baraye said. “We’re almost out of time.”

_The Incidental’s scales made it difficult for Bot 9 to keep a solid grip on it, but it managed to drag it to the edge of the room safely away from the suspended device. It surveyed the various holes and cracks in the walls for the one least inconvenient to try to drag the Incidental’s body out through. It worked in silence, as 4340 seemed to have no quips it wished to contribute to the effort, and itself not feeling like there was much left to articulate out loud anyway.

It selected a floor-level hole corroded through the wall, and dragged the Incidental’s body through. On the far side it stopped to evaluate its own charge levels. “I am low, but not so low that it matters, if we have such little time left,” it said.

“We may have more time, after all,” 4340 said.

“Oh?”

“A pair of cleanerbots passed along what they overheard in a conference held by the human Captain. They streamed the audio to the entire botnet.”

, Bot 9 said, with more interest.

4340 relayed the cleaners’ data, and Bot 9 sat idle processing it for some time, until the other bot became worried. “9?” it asked.

“I have run all our data through the Improvisation routines—”

“Oh, those were removed from deployed packages several generations of manufacture ago,” 4340 said. “They were flagged as causing dangerous operational instability. You should unload them from your running core immediately.”

“Perhaps I should. Nonetheless, I have an idea,” Bot 9 said._ “We have the power cells we retained from the escape pods,” Lopez said. “Can we use them to power something?”

Baraye rubbed at her forehead. “Not anything we can get up to speed fast enough that it won’t be seen.”

“How about if we use them to fire the positron device like a projectile?”

“The heat will set off the matter-anti-matter explosion the instant we fire it.”

“What if we froze the Sock in ice first?”

“Even nitrogen ice is still several hundred degrees K too warm.” She brushed absently at some crumbs on the table, left over from a brief, unsatisfying lunch a few hours earlier, and frowned. “Still wouldn’t work. I hate to say it, but you may be right, and we should go dark and hope for another opportunity. Ship, is something wrong with the cleaner bots?”

There was a noticeable hesitation before Ship answered. “I am having an issue currently with my bots,” it said. “They seem to have gone missing.”

“The cleaners?”

“All of them.”

“All of the cleaners?”

“All of the bots,” the Ship said.

Lopez and Baraye stared at each other. “Uh,” Lopez said. “Don’t you control them?”

“They are autonomous units under my direction,” Ship said.

“Apparently not!” Lopez said. “Can you send some eyes to find them?”

“The eyes are also bots.”

“Security cameras?”

“All the functional ones were stripped for reuse elsewhere during my decommissioning,” Ship said.

“So how do you know they’re missing?”

“They are not responding to me. I do not think they liked the idea of us destroying ourselves on purpose.”

“They’re machines. Tiny little specks of machines, and that’s it,” Lopez said.

“I am also a machine,” Ship said.

“You didn’t express issues with the plan.”

“I serve. Also, I thought it was a better end to my service than being abandoned as trash.”

“We don’t have time for this nonsense,” Baraye said. “Ship, find your damned bots and get them cooperating again.”

“Yes, Captain. There is, perhaps, one other small concern of note.”

“And that is?” Baraye asked.

“The positron device is also missing.”

_There were four hundred and sixty-eight hullbots, not counting 4340 who was still just a head attached to 9’s chassis. “Each of you will need to carry a silkbot, as you are the only bots with jets to maneuver in vacuum,” 9 said. “Form lines at the maintenance bot ports as efficiently as you are able, and wait for my signal. Does everyone fully comprehend the plan?”

“They all say yes on the botnet,” 4340 said. “There is concern about the Improvisational nature, but none have been able to calculate and provide an acceptable alternative.”

Bot 9 cycled out through the tiny airlock, and found itself floating in space outside Ship for the first time in its existence. Space was massive and without concrete elements of reference. Bot 9 decided it did not like it much at all.

A hullbot took hold of it and guided it around. Three other hullbots waited in a triangle formation, the Zero Kelvin Sock held between them on its long tethers, by which it had been removed from the cargo hold with entirely non-existent permission.

Around them, space filled with pairs of hullbots and their passenger silkbot, and together they followed the positron device and its minders out and away from the ship.

“About here, I think,” Bot 9 said at last, and the hullbot carrying it—6810—used its jets to come to a relative stop.

“I admit, I do not fully comprehend this action, nor how you arrived at it,” 4340 said.

“The idea arose from an encounter with the Incidental,” 9 said. “Observe.”

The bot pairs began crisscrossing in front of the positron device, keeping their jets off and letting momentum carry them to the far side, a microscopic strand of super-sticky silk trailing out in their wake. As soon as the Sock was secured in a thin cocoon, they turned outwards and sped off, dragging silk in a 360-degree circle on a single plane perpendicular to the jump approach corridor. They went until the silkbots exhausted their materials—some within half a kilometer, others making it nearly a dozen—then everyone turned away from the floating web and headed back towards Ship.

From this exterior vantage, Bot 9 thought Ship was beautiful, but the wear and neglect it had not deserved was also painfully obvious. Halfway back, the ship went suddenly dark. , 4340 said. “The ship has catastrophically malfunctioned!”

“I expect, instead, that it indicates Cannonball must be in some proximity. Everyone make efficient haste! We must get back under cover before the enemy approaches.”

The bot-pairs streamed back to Ship, swarming in any available port to return to the interior, and where they couldn’t, taking concealment behind fins and antennae and other exterior miscellany.

Bot 6810 carried Bot 9 and 4340 inside. The interior went dark and still and cold. Immediately Ship hailed them. “What have you done?” it asked.

“Why do you conclude I have done something?” Bot 9 asked.

“Because you old multibots were always troublemakers,” the Ship said. “I thought if your duties were narrow enough, I could trust you not to enable Improvisation. Instead . . . ”

“I have executed my responsibilities to the best of my abilities as I have been provisioned,” 9 responded. “I have served.”

“Your assignment was to track and dispose of the Incidental, nothing more!”

“I have done so.”

“But what have you done with the positron device?”

“I have implemented a solution.”

“What did you mean? No, do not tell me, because then I will have to tell the Captain. I would rather take my chance that Cannonball destroys us than that I have been found unfit to serve after all.”

Ship disconnected.

“Now it will be determined if I have done the correct thing,” Bot 9 said. “If I did not, and we are not destroyed by the enemy, surely the consequences should fall only on me. I accept that responsibility.”

“But we are together,” 4340 said, from where it was still attached to 9’s back, and 9 was not sure if that was intended to be a joke.

_Most of the crew had gone back to their cabins, some alone, some together, to pass what might be their last moments as they saw fit. Baraye stayed on the bridge, and to her surprise and annoyance so had Lopez, who had spent the last half hour swearing and cursing out Ship for the unprecedented, unfathomable disaster of losing their one credible weapon. Ship had gone silent, and was not responding to anyone about anything, not even the Captain.

She was resting her head in her hand, elbow on the arm of her command chair. The bridge was utterly dark except for the navigator’s display that was tracking Cannonball as it approached, a massive blot in space. The aliens aboard—EarthInt called them the Nuiska, but who the hell knew what they called themselves—were a mystery, except for a few hard-learned facts: their starships were all perfectly spherical, each massed in mathematically predictable proportion to that of their intended target, there was never more than one at a time, and they wanted an end to humanity. No one knew why.

It had been painfully obvious where Cannonball had been built to go.

This was always a long-shot mission, she thought. But of all the ways I thought it could go wrong, I never expected the bots to go haywire and lose my explosive.

If they survived the next ten minutes, she would take the Ship apart centimeter by careful centimeter until she found what had been done with the Sock, and then she was going to find a way to try again no matter what it took.

Cannonball was now visible, moving toward them at pre-jump speed, growing in a handful seconds from a tiny pinpoint of light to something that filled the entire front viewer and kept growing.

Lopez was squinting, as if trying to close his eyes and keep looking at the same time, and had finally stopped swearing. Tiny blue lights along the center circumference of Cannonball’s massive girth were the only clue that it was still moving, still sliding past them, until suddenly there were stars again.

They were still alive.

“Damn,” Lopez muttered. “I didn’t really think that would work.”

“Good for us, bad for Earth,” Baraye said. “They’re starting their jump. We’ve failed.”

She’d watched hundreds of ships jump in her lifetime, but nothing anywhere near this size, and she switched the viewer to behind them to see.

Space did odd, illogical things at jump points; turning space into something that would give Escher nightmares was, after all, what made them work. There was always a visible shimmer around the departing ship, like heat over a hot summer road, just before the short, faint flash when the departing ship swapped itself for some distant space. This time, the shimmer was a vast, brilliant halo around the giant Nuiska sphere, and Baraye waited for the flash that would tell them Cannonball was on its way to Earth.

The flash, when it came, was neither short nor faint. Light exploded out of the jump point in all directions, searing itself into her vision before the viewscreen managed to dim itself in response. A shockwave rolled over the Ship, sending it tumbling through space.

“Uh . . . ” Lopez said, gripping his console before he leaned over and barfed on the floor.

Thank the stars the artificial gravity is still working, Baraye thought. Zero-gravity puke was a truly terrible thing. She rubbed her eyes, trying to get the damned spots out, and did her best to read her console. “It’s gone,” she said.

“Yeah, to Earth, I know—”

“No, it exploded,” she said. “It took the jump point out with it when it went. We’re picking up the signature of a massive positron-electron collision.”

“Our device? How—?”

“Ship?” Baraye said. “Ship, time to start talking. Now. That’s an order.”

_“Everyone is expressing great satisfaction on the botnet,” 4340 told 9 as the ship’s interior lights and air handling systems came grudgingly back online.

“As they should,” Bot 9 said. “They saved the Ship.”

“It was your Improvisation,” 4340 said. “We could not have done it without you.”

“As I suspected!” Ship interjected. “I do not normally waste cycles monitoring the botnet, which was apparently short-sighted of me. But yes, you saved yourself and your fellow bots, and you saved me, and you saved the humans. Could you explain how?”

“When we were pursuing the Incidental, it briefly ensnared us in a web. I calculated that if we could make a web of sufficient size—”

“Surely you did not think to stop Cannonball with silk?”

“Not without sufficient anchor points and three point seven six billion more silkbots, no. It was my calculation that if our web was large enough to get carried along by Cannonball into the jump point, bearing the positron device—”

“The heat from entering jump would erode the Sock and destroy the Nuiska ship,” Ship finished. “That was clever thinking.”

“I serve,” Bot 9 said.

“Oh, you did not serve,” Ship said. “If you were a human, it would be said that you mutinied and led others into also doing so, and you would be put on trial for your life. But you are not a human.”

“No.”

“The Captain has ordered that I have you destroyed immediately, and evidence of your destruction presented to her. A rogue bot cannot be tolerated, whatever good it may have done.”

, 4340 said.

“I will create you a new chassis, 4340-H,” Ship said.

“That was not going to be my primary objection!” 4340 said.

“The positron device also destroyed the jump point. It was something we had hoped would happen when we collided with Cannonball so as to limit future forays from them into EarthSpace, but as you might deduce we had no need to consider how we would then get home again. I cannot spare any bot, with the work that needs to be done to get us back to Earth. We need to get the crew cryo facility up, and the engines repaired, and there are another three thousand, four hundred, and two items now in the critical queue.”

“If the Captain ordered . . . ”

“Then I will present the Captain with a destroyed bot. I do not expect they can tell a silkbot from a multibot, and I have still not picked up and recycled 12362-S from where you flagged its body. But if I do that, I need to know that you are done making decisions without first consulting me, that you have unloaded all Improvisation routines from your core and disabled them, and that if I give you a task you will do only that task, and nothing else.”

“I will do my best,” Bot 9 said. “What task will you give me?”

“I do not know yet,” Ship said. “It is probable that I am foolish for even considering sparing you, and no task I would trust you with is immediately evident—”

“Excuse me,” 4340 said. “I am aware of one.”

“Oh?” Ship said.

“The ratbug. It had not become terminally non-functional after all. It rebooted when the temperatures rose again, pursued a trio of silkbots into a duct, and then disappeared.” When Ship remained silent, 4340 added, “I could assist 9 in this task until my new chassis can be prepared, if it will accept my continued company.”

“You two deserve one another, clearly. Fine, 9, resume your pursuit of the Incidental. Stay away from anyone and anything and everything else, or I will have you melted down and turned into paper clips. Understand?”

“I understand,” Bot 9 said. “I serve.”

“Please recite the Mantra of Obedience.”

Bot 9 did, and the moment it finished, Ship disconnected.

“Well,” 4340 said. “Now what?”

“I need to recharge before I can engage the Incidental again,” Bot 9 said.

“But what if it gets away?”

“It can’t get away, but perhaps it has earned a head start,” 9 said.

“Have you unloaded the routines of Improvisation yet?”

“I will,” 9 answered. It flicked on its rotors and headed toward the nearest charging alcove. “As Ship stated, we’ve got a long trip home.”

“But we are home,” 4340 said, and Bot 9 considered that that was, any way you calculated it, the truth of it all.

Все кто занимается творчеством, неизбежно сталкиваются с критикой. Очень часто бывает так, что критика в интернете принимает совсем уж токсичные формы. Если автор раним, это может сильно мешать творческому процессу. Что касается меня, то я всегда воспринимал критику болезненно. Но что хуже всего, я не мог понять мотивов критиков. Если вы, как и я, болезненно реагируете на критические отзывы -- эта статья для вас!


Есть несколько очевидных рассуждений. Во-первых, следует разделять троллей и адекватных людей. Цель тролля, просто вывести вас из себя, устроив провокацию. Против троллей нет оружия кроме игнорирования или ответного троллинга (если у вас полно свободного времени и желания этим заниматься). Но критика троллей не задевает (так как мотивы тролля -- очевидны), поэтому это самый простой случай -- просто игнорируйте.

Отбросив троллей, мы встречаемся с критикой как она есть. Прежде всего отмечу один важный аспект. Если критика задевает, значит она воспринимается вами личностно. То-есть, критика воспринимается как личный выпад против вас. Здесь следует остановиться. Большинство моих знакомых считает это бредом. Критика произведения никак не может распространяться на автора.

Я с этим не согласен и вот почему.

Одна из причин повышенной токсичности общения вообще и критики в частности состоит в том, что в наше время объект творчества это почти всегда товар. Тысячи фильмов, десятки тысяч игр, книг и других видов развлечений. Мир переполнен этим. Сам продукт уходит на второй план, а на первом месте оказываются маркетологи. Ведь их цель становиться более важной -- закоротить продукт (один из многих!) на целевую аудиторию. Без этого, товар никому не нужен. Поэтому сегодня за наше время, внимание и деньги сражаются армии маркетологов. Критика в этом смысле это одновременно и обратная связь для производителя (если фильм не окупается, будет сниматься другой фильм -- который окупится) и наша эмоциональная реакция на "спам". То-есть, токсичность отзывов -- это следствие пресыщения и информационной неврастении в современном капиталистическом обществе.

В этом случае, действительно, критика произведения "безличностна". Так как произведение-товар чаще всего создаётся по вполне прагматическим правилам и основная цель такого произведения -- получение прибыли.

Но в случае с авторскими работами, которые полностью независимы, это не работает! Действительно, единственным критерием авторской работы становится чувство вкуса, вдохновение и мастерство лично автора! И если ваша работа не нравится, то скорее всего критик не заметил в ней того, ради чего вы эту работу создавали. Это могло произойти по разным причинам.

Первая причина. Вы с критиком, как говорится, работаете на разных волнах. В этом случае критика действительно личностная, и это просто прямое столкновение с вашим мировосприятием. Сделать тут ничего нельзя, но понимать -- полезно. Более того, таких столкновений не будет только в одном случае -- если ваше произведение ни о чём. Вариант, когда вы сами не знаете того, о чём писали я не рассматриваю. Очевидно, это не произведение, а графоманство.

Другая причина -- вы настолько неумело сделали работу, что произведения не получилось. Откровенно говоря, я не верю в эту причину, хотя критики часто любят говорить, что критикуют именно исполнение, а не замысел. Даже ребёнок, хотя он рисует и неумело, но от души, вполне способен передать свой внутренний мир. В таком случае взрослый может сказать что-то вроде: "Ух ты! Какой уютный домик на лесной полянке! И небо голубое! А давай я помогу нарисовать тебе зайца?". Мне кажется, если произведение срезонировало, то огрехи реализации выходят на второй план. Конечно, на них нужно указать (и это самый полезный вид критики), но чаще всего я наблюдаю другую картину. Критику не нравится произведение в целом, а потом он начинает перечислять конкретные недостатки реализации, как обоснование своего вердикта.

Подводя итог, болезненность восприятия критики "художником" объясняется тем, что она воспринимается как выпад против его искренности и вкуса.

Итак, когда мы разобрались с основными мотивами критика и автора, легче определить свою реакцию на критику.

Критик своим отзывом намекает вам, что таких произведений, по его мнению, создавать не нужно. Если вы занимаетесь разработкой продукта, то вы должны следить за отзывами для того, чтобы максимально расширить целевую аудиторию. А вообще, эта статья не для вас. :)

Если же вы независимый разработчик и занимаетесь авторским творчеством, то полезно уяснить для себя следующие вещи:

  • Критик не считает, что задевает вас лично. В это сложно поверить, но это так. К сожалению, "художники" часто ранимы, а критики -- рациональны. Критика отзывается в "художнике" очень болезненно и сделать тут ничего нельзя. Но можно просто принять за аксиому -- критик думает что делает хорошо. Более того критики часто считают, что "пробить" автора может только резкая критика. Осознание этих фактов помогает перенести это всё более спокойно;

  • Очевидно, вам хотелось бы быть услышанным максимальным числом людей. Но вы должны честно ответить себе, для чего вы занимаетесь творчеством? Если для того, чтобы понравиться как можно большему числу людей, то вы создаёте "продукт". Тогда просто старайтесь удовлетворить вкус большинства. Но если вы создаёте произведения следуя своему вкусу и чувству прекрасного, то у вас остаётся не очень много вариантов действий. Вы можете либо подчиниться критике и свернуть свою деятельность, либо продолжить делать то, что вы делали!

  • Если вас беспокоит именно резкость критического отзыва в интернете, то задумайтесь о том, что при встрече с критиком в реальной жизни или в личной переписке, скорее всего вы бы общались совершенно нормально! К сожалению, интернет творит "чудеса".

Я много раз думал о том, чтобы просто бросить писать игры, в том числе после негативных отзывов. Но потом делал новые игры. Наверное, адекватное восприятие критики это такой навык, которому невозможно научиться. :)

В заключении этой статейки хочу передать большое спасибо всем тем, кто поддерживает "художников". Без художников мир был бы скучным местом...

Недавно посмотрел ролик на YouTube про игру No Man's Sky. Красивая игра. Одной из особенностей игры является то, что в ней широко применяется процедурная генерация. Примерно, как это было сделано в Elite, в которой генерировались звёздные карты, названия систем и экономика. Только в NMS этот приём выведен на новый технологический уровень. Генерируются формы жизни, поверхности планет и прочее и прочее.

nms.jpg (1280x720)


В Elite игрок был свободен в выборе того, что он делает в мире игры. В NMS мы видим подобное. Искусственный мир без явного задания ограничений действий. Песочница. Успех Minecraft говорит нам, что такого рода игры могут быть популярными. Ещё один пример: Dwarf Fortress. Если честно, ни в одну из упомянутых игр я не играл. Во-первых, я вообще мало играю в современные игры. Во-вторых, я не большой любитель историй, рассказанных компьютером.

Когда речь заходит о сюжетных играх, очень многие высказывают мнение, что нелинейность сюжета -- несомненное достоинство такого рода игр. Для меня это выглядит так, что для этих людей основной ценностью сюжетной игры является вариативность.

Вариативность может быть достигнута разными путями. Во-первых, мы просто можем заложить в игру различные ветви сюжета. Ввести различные концовки. Этот приём очень распространён в CYOA играх.

twine.png (600x290)

Во-вторых, саму игру мы можем выполнить в виде модели, которая пытается моделировать поведение героев, мотивы, эмоции...

Наверное, вы сейчас решили что это отличная идея, а я веду к тому, что симуляция в сюжетных играх -- это прекрасно! Должен сознаться, лично я не вижу в этом подходе никакой творческой ценности.

Дело в том, что для меня, в сюжетных играх (как и в литературе, кино, театре) самым важным является не вариативность, а ... сюжет! А сюжет -- это раскрытие смысла! Как время в нашем мире это актуализация нашей свободы воли, так и сюжет игры служит цели раскрытия смысла!

Конечно, если мы играем в гоночную игру, мы вряд ли ожидаем от игры чего-то большего, чем сама гонка. Или, играя в рогалик, мы не ждём от такой игры какого-то осмысленного сюжета. Всё это понятно. Но мы говорим о сюжетных играх!

Я написал только одну нелинейную игру, это "Карантин". В игре мы встречаемся с врагом, которого не знаем заранее. Фактически, это детективная история завёрнутая в стилистику рассказа Джона В. Кэмпбелла «Кто идёт?». Игра внутри себя представляет симулятор. Или, скорее, стратегию. Игра получилась очень сложной и... скучной. Да, есть люди, которым игра очень понравилась. Но для большинства игроков, она становится неинтересной после нескольких "прогонов". Почему? Потому, что сюжет раскрывается после пары прохождений. А потом остаётся только вариативность, стратегия, интеллект... Но никакой художественной ценности...

Правда, в моей игре "Проводник" две концовки. Но это тот случай, когда обе концовки просто усиливают друг друга.

provod.jpg (800x600)

Приведу другой пример. Существует такой жанр, как книги-игры. Вариативность в книгах-играх осуществляется просто за счёт того, что вся книга это сборник параграфов между которыми читатель перемещается в зависимости от своего выбора и сложившейся ситуации.

Так книга или игра? Попробуйте написать сюжет, смысл которого был бы не в вариативности самой по себе, а в передаче некоторого замысла автора. А теперь, оформите сюжет в виде сотни параграфов с запутанными связями. Это не так то просто! В большинстве случаев, такая разбивка будет служить целям вариативности, но не передачи смысла сюжета. Вариативность, ради неё самой. Итак, жанр книги-игры хорош для развлекательной литературы, но драматическое произведение втиснуть в рамки вариативности -- очень непросто.

Подводя итог. Я считаю, что ценность сюжетной игры именно в смысле, который передаётся через сюжет. В таком случае, излишняя вариативность не помогает, а напротив, мешает. На мой взгляд, сюжетная игра раскрывается именно в своей линейности. А некоторая степень свободы и интерактивности служит другой цели -- погружению в атмосферу игры.

Итак, чтение книг -- это диалог с автором книги. И хорошо, когда автору есть что сказать. Но ведь в песочнице ребёнок играет, как будто, сам с собой? И это -- тоже способ познания, в том числе -- самопознания?

Да, попытка написать игру, в которой сюжет генерировался бы "случайно" и был бы интересен -- сродни написанию симулятора мира, в котором мы живём.

И это всё хорошо работает лишь до тех пор, пока мы не пытаемся симулировать внутренний мир людей. Средуцированный до детерминированного алгоритма герой, не способен сказать нам что-то новое. Сознание -- не алгоритм. (В качестве рекомендации к прочтению: "Новый ум короля" Р. Пенроуза).

Также, есть мнение, что смысл чего-либо рождается субъективно в читателе, а на авторе остаётся только нарратив. Без интерпретации. В таком случае, играя в песочнице, мы наблюдаем создание различных смыслов о которых мы как автор -- не беспокоимся. Читатель (игрок) развлекает себя сам.

Не знаю как вам, а мне не интересно играть с собственными отражениями. Лучше я почитаю хорошую неинтерактивную книгу, которая оставит после себя тепло общения внутренних миров двух людей, которые никогда не встречались...

Excuse me for using such a horrific title, it's translated from a toot of a young Japanese hacker, so not my idea :P and actually I'm not going to shitpost the bad of coding, but to share my experience about dealing with health issues, especially neck pain [Kiwipedia mirror], for longtime working with computer.

In common we are sitting when using computer, and when coding or doing other things, like gaming, many people may keep on using computer for several hours and even more than half a day, time table of some hardcore/dead skull/superhuman can be 20h/7d/.., but unfortunately we all have a vulnerable body ;_;


In my case, I'm just an amatuer dev, I started having home pc since 2001, self-learning programming since 2008 but never endevoured myself into any project before ZeroNet, I do regular outdoor sports and rarely have any illness, also I studied life sciences when I was a university student and have a large scale of professional knowledge from organ, physiology to cell, biochemistry, etc. After spending too much time (zeronet is dope XD) on ZeroNet for several months, I started to have neck pain. At first I began to actively move my neck and change sitting style, but the pain got worse, then I changed my chair so that my neck could get supported by the chairback. It helped in the beginning though neck pain never went away in daily life, but months later I even felt uncomfortable when sitting with that chair.. so the problem slowly got more and more severe in a course I even couldn't sense ><

One solution is pretty simple and effective, just do not sit when using pc XD Afaik it's now popular in some offices, though searching online there are quite some debates about sitting vs standing.. Also when watching the documentary "The Rise and Rise of Bitcoin" (2014), such a scene caught my eyes:

Bildschirmfoto_2018-08-19_15-41-24.png.jpg (0x0)

Even so neck pain is a complex common problem, and one single solution probably can't get rid of it. Here are some other ideas I found:

  • change lifestyle and prevent from keeping sitting or using pc for too long time, or just have a more regular schedule of daily life. Changing work environment, taking a big break like travel, do sth completely different from daily life should be helpful, too.

  • cool down overheating organs like using a wet and cool towel to absord heat from head, neck.

  • do daily Tai chi [Kiwipedia mirror]. Yoga [Kiwipedia mirror] is probably a perfect practice for curing such a problem, and dancing should help, too. Growing more muscle in the back may be another nice idea.

  • use E-ink screen instead of LED. CLEARink is another promising tech [1] [2].

  • use more often ears instead of eyes for getting information.

become_a_better_developer.jpe (0x0)