Допустим, кто-нибудь накосячил. Серьёзно. Его вышестоящее руководство (или родители ) начинают ругать. Что же он может сделать? Оправдываться, например. Или сказать:
-- Больше не повторится.
Это звучит хорошо. Убедительно.
Если это сказано твёрдо, честно и уверенно, руководство может даже принять этот "аргумент". Однако на самом деле смысл этой фразы -- точно такой же, как и детского ответа "я больше не бу-у-уду!". Но разница формулировок -- и разница интонаций -- многое изменяют.
Все хотели посмотреть в микроскоп на одну фигню, но начальник никак не мог установить образец ровно. Все ждали.
Коллега по имени, допустим, Петя, задолбался. Говорит -- Ладно, я попозже зайду... и начал уходить. Уже полкомнаты прошёл!
Я решил над ним приколоться. Кричу ему -- Петя, Петя! Иди сюда скорее! (хотя смотреть было пока не на что)
Я рассчитывал на то, что он под влиянием моей интонации и эмоциональности повернёт обратно. Однако этого не случилось. Он не обратил на мой призыв никакого внимания и ушёл из комнаты окончательно.
Коллега сделал схему для подключения к микроконтроллеру. Со светодиодом. Подключаю -- светодиод сгорает.
Несу ему -- говорю -- в твоей схеме горит светодиод. И тут я понимаю, что из моей фразы непонятно, в каком смысле он горит.
Я поясняю: "горит" в смысле "burn", а не "light".
***
С мультиметром творятся удивительные чудеса. Он меряет напряжение в диапазоне от -3 до 3 вольт, а если подать 5 вольт (проверяется другим мультиметром), показывает ноль.
В Pixel Dungeon Remix добавили новый свиток -- свиток проклятья. Он проклинает все надетые на игрока вещи, так что тот не может их снять (зачарование, слава богу, с них не слетает).
В связи с этим я стал снимать с себя все вещи, прежде чем читать незнакомый свиток. Но об'ём инвентаря в Pixel Dungeon ограничен 24 предметами. 20 на обычные предметы и 4 -- на надетые. Если предмет снять, он попадает в обычные, а слот для надетого становится пустым.
У меня не было места в инвентаре, куда можно было снять предметы. Поэтому я снял с себя оружие, броню, кольца и выложил их на пол. Так они не пострадают. И прочитал незнакомый свиток.
Это оказался свиток телепортации!
И я оказался на другом конце уровня без брони и оружия...
Только когда разрабатываешь проприетарный софт, начинаешь понимать, что свободная лицензия типа GPL на самом деле вовсе несвободная. Она как болезнь заражает различный софт, принуждая распространять его вместе с исходниками.
Или не использовать библиотеки, которые под ней распространяются.
По-настоящему свободная лиценизя только одна. Public Domain.
Our reports showed a massive anomaly in the timespace continuum. Timelines jumping left and right, stopping and starting... (C) Sans из Undertale
Это -- интерактивное кино. Детектив. С возможностью отмотки времени назад. Ничего особенного в этой возможности бы не было, если бы не два дополнения: 1) Положение главной героини в пространстве остаётся неизменным при перемотке, 2) Предметы, которые она добыла, остаются при ней.
Собственно говоря, написанного выше, мне кажется, достаточно, чтобы определить для себя, стоит в это играть или нет. Для меня, как любительницы путешествий во времени и визуальных новелл (а визуальная новелла и интерактивное кино близки как жанры), показания были однозначные.
Игра на самом деле простая как валенок и рельсоподобная. Почти нет ничего скрытого и неочевидного, что можно было бы обнаружить только облазивая каждый угол и пробуя все возможные комбинации действий.
Играю я за девушку со странным именем Максина. Изначально она у меня вызывала неприязнь. Это э... педовка? хипстерша? с ОБВМ и ТКП. На уроке трясущимися руками делает селфи на поляроид. Над ней ржут. Выходит на переменку, надевает наушники и отключается от общества. Социофобия. Но потом мне дают управление (хотя не настолько свободное, как я хотела бы) и дальше я уже сживаюсь с ней. Кроме того, она становится всё круче и круче, что может вызвать только положительное отношение.
"Вы полили цветы" "У ваших действий будут последствия"
Вот тут я испугалась...
Данная игра вызвала у меня ассоциацию с целым рядом игр. Обычно ассоциации у меня возникают только с парой-тройкой, а тут целая куча: Farenheit, Silent Hill, Master Reboot, The Path, Ib (которую я прошла, но отзыв ещё не написала), Ever17 (!), To the Moon, Max Payne.
Вживание в персонажа вызывало во многих местах лютый восторг, как будто это бы Я спасла кого-то/добилась чего-то, а не главная героиня. Особенно во втором эпизоде, если вы понимаете, о чём я. Первые четыре эпизода были просто шикарными, а вот пятый подкачал. Сначала я думала, что эпизод просто хуже, чем предыдущие, но теперь я думаю, что эпизод тоже очень клёвый, но концовка слита. Обе концовки.
Авторам перед созданием игры следовало ознакомиться с таким жанром, как визуальные новеллы. Тогда бы игра могла получиться гораздо, гораздо круче. И уж что точно следовало им взять от визуальных новелл -- так это возможность проматывать ВСЕ кат-сцены, а не только уже виденные. Или сделать глобальное сохранение просмотренных кат-сцен, чтобы если начать новую игру, можно сразу было проматывать то, что видел в других играх.
А теперь о таком явлении, как фотография. Эта игра хорошо показывает, что надо ловить момент и ракурс, чтобы снять что-нибудь интересненькое, хотя фотографии Макс, в основном, меня не впечатляют. Я не фотограф. Но иногда я всё же вижу какие-то вещи, которые можно снять и будет круто. Но вижу я их очень редко и плохо. А даже если вижу, могу не сфоткать по каким-либо причинам (лень, холодно руки из карманов доставать). И тут, мне кажется, действительно надо ориентироваться на мистера Джефферсона, который сказал -- always take the shot.
(спойлеры) Осторожно, далее хардкорные спойлеры. Осторожно, спойлеры.
Да, Джефферсон мне всё же немного симпатичен, хотя то, чем он занимается, является формой насилия. Он говорил, что любит смотреть на то, как innocence turns into corruption. И если в тёмной комнате поговорить со связанной Викторией, можно увидеть именно этот момент. И смотреть на это действительно интересно. И фоточки у него прикольные.
Кроме того, в игре есть экзистенциальный момент. С некоторыми людьми там происходит нечто похуже, чем смерть. Они не просто умирают, их никогда и не существовало. Допустим, сама Макс. Она делает прыжок в прошлое, потом возвращается в настоящее. Памяти о прошлых событиях в промежутке у неё нету. Что случилось с той Макс, В КОТОРУЮ она вернулась? она пропала бесследно. Умерший человек остаётся в том, что он сделал. Переписанный человек остаётся только в памяти Макс и то, если она лично его пронаблюдала в этот момент. Страшно.
Я опоздал на автобус. Но за ним шёл другой. Он мне не подходил, но часть маршрута у него совпадала. И, кроме того, он шёл позже, чем должен был идти по расписанию. То есть, опаздывал сам.
Я сел на него. Через 3 остановки он обогнал тот, на который я опоздал. Я вышел и пересел! Очень классное ощущение.
Ошибка в документации. Написано, что устройство должно в качестве конца сообщения присылать сигнатуру 0xA5A4A3A2. И особо указано, что менять порядок байт запрещается!
Хорошо, что приведён пример пакета. В пакете указано: байт 60: 0xA5 байт 61: 0xA4 байт 62: 0xA3 байт 63: 0xA2
Однако и устройство и контроллер используют обратный порядок байт (это известно по описанию некоторых команд). То есть, с обоих точек зрения это число 0xA2A3A4A5. А я думаю, почему это оно не реагирует.
Я написал о проблеме, которая может возникнуть из-за неожиданного выравнивания полей структуры, но не написал, что же с этим делать.
Сначала несколько важных замечаний:
Встретил я указанную проблему в компиляторе GCC под ARM.
По документации результат #pragma pack распространяется на упаковку полей структуры, описание которой идёт сразу после директивы. То есть, по идее, значение упаковки не должно было переноситься на дальнейшие структуры. Однако оно переносилось.
#pragma pack -- микрософтовская штучка и была добавлена в GCC для совместимости. В компиляторах от микрософт она может работать несколько иначе. В GCC есть более мощный аналог -- __attribute__((packed(...)))
Решение такое. Надо просто принудительно при описании каждой структуры перед ней прописывать желаемую упаковку. Однако тут появляется проблема -- если после нашей структуры будут другие структуры, они получат уже новую упаковку, что потенциально попортит жизнь библиотекам, заголовочные файлы которых включены после нашего. Попортят тем же способом, каким кто-то попортил жизнь нам. Однако разработчики предусмотрели на этот случай возможность сохранения и восстановления значения упаковки. Итак, вот что надо делать при описании каждой структуры:
pack(push) в начале сохранит, а pack(pop) в конце восстановит старое значение упаковки (вдруг оно будет кому-то нужно?).
pack() без параметров установит значение упаковки по-умолчанию, которое можно настроить перед началом компиляции (подробнее тут), что позволит гибко настраивать упаковку для различных архитектур. Если же нужна конкретная упаковка для данной структуры, можно написать #pragma pack (N), где вместо N должно стоять число 1, 2 или 4 (компиляторы микрософт для 64-битных систем также поддерживают 8 и 16). Идентификатор, сделанный через #define, вместо N подставить нельзя.
Обнаружил, что на множестве магазинов и иных учреждений появились таблички с надписью "2017". Удивительного тут мало, кроме того, что они почти все одинаковые. Красные с узорчиком. И кроме "2017" ничего не написано, типа все и так знают (а в некоторых местах написано). Когда об'явления о дне города были одинаковыми -- это было понятно. А про новый год что, тоже централизованно распространяют?
Постоянно иду с обеда -- навстречу мне ходит женщина с ребёнком (ведёт его из школы?). В очках. Ребёнку лет 7-8. Женщина всегда идёт уткнувшись носом в землю, а иногда у неё в руках телефон, и тогда она идёт уткнувшись носом в него.
А ребёнок идёт в 10 шагах сзади и немного сбоку. Обычно тоже уткнувшись носом в землю.
А сегодня она вела его за ручку и разговаривала с ним!
Если на вопрос, почему ты туда-то и туда-то не придёшь, ответ "не хочу" собеседник не принимает или начинает допытываться "почему не хочешь", можно сказать, что у тебя на это время назначен приём у психиатра.
Удивительную вещь встретил. Передаю в функцию указатель на экземпляр структуры, а приходит вместо исходных значений -- мусор.
Смотрю, адреса в памяти совпадают, т.к. указатель передался правильно. Смотрю значения в памяти -- не меняются. Так почему же я передаю одни значения, а получаю другие?
Значит, они по-разному интерпретируются! Но структура одна же. Я включил её определение в .h файле в два .c файла -- в главный файл и в файл с определением функции, которую я вызываю.
Я попробовал поменять типы данных с однобайтных на двухбайтные. И оказалось, что теперь половина значений доходит правильно, но располагается в других переменных!
Короче говоря, дело было в выравнивании данных в памяти. В главном файле где-то в начале (или в одном из заголовков) было установлено #pragma pack(2), а во втором файле -- #pragma pack(4). И уже ПОСЛЕ этого был включен мой заголовочный файл и описанием структуры. В итоге главный файл думал, что выравнивать поля надо по 2 байта на переменную, а второй файл, что по четыре! Т.е. структуры имели одинаковое имя, но были несовместимы двоично! Я непосредственно перед описанием структуры в заголовочном файле поставил #pragma pack(4) и всё стало зашибись.
#pragma pack(2) struct A1 { char a; short int b;//sizeof(short int)==2 int c;//sizeof(int)==4 };
#pragma pack(4) struct A2 { char a; short int b;//sizeof(short int)==2 int c;//sizeof(int)==4 };
struct A1 *a1=0x1000; struct A2 *a2=0x2000; // пусть мы уверены, что в памяти ничего нет и мы можем располагать данные по произвольным адресам
/* теперь: &(a1->a) == 0x1000 &(a2->a) == 0x2000
&(a1->b) == 0x1002 //a занимает только 1 байт, но у нас выравнивание по границам слов, поэтому b имеет смещение 2 байта от начала, а не 1 &(a2->b) == 0x2004 // (!) а тут 4 байта смещение от начала
&(a1->c) == 0x1004 // b занимает 2 байта и располагается в памяти вплотную к c &(a2->c) == 0x2008 // b занимает ВСЕГО 2 байта, поэтому нужен промежуток, т.к. у нас условие, что выравнивание по двойным словам (4 байта), поэтому c получает смещение 8. */
Стратегические и тактические советы по оригинальному Pixel Dungeon. По большей части подходит для Remix. На различия указано отдельно. Сказочки о том, как я проходил за разные классы.
Отзыв на оригинальный PD после введения в него деградации, отзыв на Shattered Pixel Dungeon 0.3.0e, Remixed Pixel Dungeon 18.4 beta 1. Советы по боссам оригинального Pixel Dungeon с поправкой на Remix. Боссы, особенные для Remix, не рассмотрены. Советы по игре за эльфа.
Описаны нововведения Pixel Dungeon Remix за версии 18.4-25.5. Советы по боссам "Королева Пауков", "Лич". Советы по новому игровому классу "Некромант"+о том, как использовать питомцев. Описание механики работы предметов Хаоса. Описание различий уровней сложности игры (лёгкий, обычный, эксперт).
Надо было сделать одну статью по новому Ремиксу и описать в нём трёх боссов -- этого, Королеву Пауков и Лича, но этот босс достоин отдельной статьи.
Наконец-то я познакомился с данным гражданином. Данный босс в ремиксе расположен на 25 уровне, где раньше был Йог-Дзева. Таким образом, подземелье продлевается ещё на 5 уровней, а Йог-Дзева теперь тусуется на 30.
Надо сказать, что Владыка Теней -- это лучшее, что было придумано создателями ремикса. Очень крутой босс. Он, кстати, сильнее, чем Йог-Дзева. Но это не значит, что если вы его одолели, то вы "почти прошли" игру. Дело в том, что новая локация на 27-29 уровнях это лютый треш. Там водятся очень сильные и очень толстые монстры. И избежать схватки с ними не всегда выходит.
Ниже я подробно опишу, что я обнаружил по поводу Владыки Теней, и как его можно убить. Если у кого-либо есть альтернативные методы -- предлагаю описать и их. Замечания, дополнения приветствуются.
Вам потребуется: 1. 10 лечилок. Может потребоваться меньше, но лучше иметь запас. 2. Хорошее оружие. Броня значения почти не имеет по причинам, описанным далее. 3. Кольцо каменной крови, потому что из-за бага уровень может сгенерироваться так, что без кольца не пройдёшь в некоторые комнаты. 4. Желательно: палочка скачка, зелья жидкого пламени.
Итак, вы начинаете на лестнице в довольно большой комнате. Обзор ограничен, поэтому Владыка Теней может быть сразу не виден. Если вы не готовы к схватке (а битва будет долгой), у вас есть шанс смотаться обратно (в демоническую зону, но всё равно это легче, чем Владыка). Первое, что надо сделать -- нанести ему хотя бы 1 очко урона. Потому что пока это не сделано, он будет стрелять в вас дальней магией, которая сносит по 45 (!) очков за выстрел. И броня не спасает. Стрелять лучше всего какой-нибудь палочкой, т.к. ей больше всего шанс попасть. Зелье жидкого пламени должно подойти (а после зоны гномов их должно быть дофига). Если Владыки в зоне видимости нету, он всё равно будет в вас стрелять. Хорошо, что он стреляет не каждый ход. Да, Владыка генерируется спящим, но может проснуться при вашем хождении. В последние пару раз при входе на уровень я пил зелье ясновидения и дальше сразу бил палочкой. Можно и вплотную к нему подойти и фигачить обычным оружием. Это не очень опасно, даже если будете редко попадать, т.к. если вы стоите к нему вплотную, он не использует магию, как и большинство монстров, которые "стреляют" лучами. В этом случае для перемещения по уровню оптимально использовать Палочку Скачка (wand of blink), как и в других случаях, когда надо быстро подбежать в Владыке или наоборот -- быстро убежать от него.
После получения урона, Владыка преобразует свою комнату. Теперь она состоит из 9 маленьких комнаток (сетка 3 на 3), в каждой из которых есть постамент. Постаменты пока пусты. Комнатки соединены дверями в случайном порядке. Владыка начинает случайным образом бродить по помещению.
Первое правило схватки: нельзя встречаться с ним очно. До определённого этапа встречаться с ним смысла нет вообще, т.к. при получении урона он телепортируется в случайное место и там лечится. Избегание встречи с ним осложняется тем, что он ходит сквозь стены, поэтому вы в любой момент можете получить его в той комнате, где находитесь. Но бояться тут рано -- дело в том, что то место, где находится Владыка, каждый ход подсвечивается перекидывающимися костями (не кубиками, а как кости животных). Это, однако, происходит только в тех комнатах, где кристалл вы уже убили. В тех же, где кристалл есть, но он ещё не убит, вы будете видеть красные плюсы: это Владыка лечится. Также, когда Владыка генерирует призраков, в той комнате, где он находится, видна характерная анимация телепортации. Всё это позволяет прогнозировать, когда он может появиться в текущей комнате, и вовремя смыться в соседнюю. Если у вас есть Палочка Скачка, это не так критично, т.к. смыться всегда можно очень быстро.
Второе правило схватки: если вы всё-таки встретились с ним очно, надо как можно быстрее нанести ему урон. Потому что пока вы в зоне видимости, он может наносить упомянутые выше 45 очков урона за ход. А после того, как он сам получит урон, Владыка телепортируется в случайное место на карте, как обычно, и перестаёт представлять для вас угрозу. К счастью, урон от Владыки при контакте вплотную гораздо ниже, чем на дистанции. Учтите, если Владыка находится в стене, в него нельзя попасть стрелами или палочками, только ближний бой, только хардкор. Не уверен, можно ли атаковать древковым оружием через клетку, если Владыка в стене. Надо проверить. Призванные Владыкой кристаллы, призраки и прочее -- наносят гораздо меньше ущерба, чем сам Владыка, поэтому на всех них надо временно забить. Никаких "я только этого призрака мочкану, чтобы не мешался, а потом уже Владыку прогоню". Это может стоить жизни. Я так флакончик с росой (dew vial) потратил.
Рано или поздно Владыка сгенерирует в одной из комнат Кристалл. Когда Владыка в одной комнате с Кристаллом, он лечится. Кристалл надо уничтожить. Чтобы определить, где кристалл, можно воспользоваться зельем ясновидения, но это больно дорогое удовольствие. Проще побегать. Иногда Владыка говорит "Приготовься", это означает, что он вызвал призраков. При этом, как я уже писал выше, можно увидеть эффект телепортации на уровне, даже если зоны, где расположен Владыка, нету в прямой видимости. Владыка призывает простых чёрных призраков как из могил, и серых, как в стенах. В отличие от обычных призраков, попасть по ним очень легко, бояться их не следует.
Третье правило схватки: кристаллы надо убивать только если вы в форме! Кристаллы генерируются по одному на комнату, причём в той комнате, где вы кристалл уже убили, новый кристалл не создаётся. Кристаллы не двигаются, но стреляют магией (послабее, чем Владыка, но тоже серьёзно). Эта магия иногда накладывает дебафф "Ослаблен" (Weakened). Это очень фигово, т.к. пока он на вас есть, вы не сможете по кристаллу попасть (точнее, сможете, но шанс будет низким). Да и когда его на вас нет, попасть тоже довольно сложно. Поэтому если вы получили дебафф, либо если у вас осталось мало здоровья, ОТСТУПАЙТЕ в соседнюю комнату и отсиживайтесь там. После убийства кристалла текущая комната превращается в "Сад", давая вам временную невидимость, которая сохраняется ещё пару ходов после выхода из Сада. Это полезно, т.к. пока вы ВНЕ комнаты, кристалл спит, а значит если новый кристалл сгенерирован в комнате, соседней с Садом, вы можете подкрасться к нему невидимым (он не проснётся) и устроить ему критическую атаку, которая гарантированно по нему попадёт (surprise attack), как в случае с дверями. Если кристалл не спит, то критическая атака тоже сработает. Если невидимость прекратилась раньше, зайдите обратно и повторите попытку. Учтите, что Сад активен, только если в нём никого нет, кроме вас, а Владыка генерируют призраков, которые могут ваше уединение нарушать. Призраков, естественно, надо убивать.
Также, если флакончик росы уже израсходован, следует лечиться, если осталось меньше, чем 45+20=65 хп. Иначе есть шанс умереть в один ход, если И кристалл И Владыка, находящиеся в одной комнате, по вам попадут. Если флакончик ещё живой, то можно и погеройствовать.
Всего кристаллов будет сгенерировано 9 штук, по числу комнат. Я читал, что может быть сгенерировано 6 кристаллов, но неясно, что может помешать Владыке сгенерировать ещё. Закладываться надо на все 9.
Минорная тактика: если вам хорошо знаком алгоритм Брезенхема, то в некоторых случаях можно немножко облегчить схватку с кристаллом. Для этого надо стоя в саду каким-либо предметом метнуть в дверь, которая открывает комнату, где стоит кристалл. Далее можно встать так, чтобы попадать дальними атаками в кристалл, оставаясь на территории сада. Проще всего это сделать, если дверь расположена в середине стены. Потом можно метнуть в кристалл, к примеру, зелье жидкого пламени -- он немножко погорит. При этом, поскольку вы невидимы, ответной атаки не последует.
Четвёртое правило схватки: ждите! Когда Владыка проходит по комнатам, где кристалл был уничтожен, он теряет по 1 очку здоровья за ход (а может и по 3). Поэтому если вы убили все 9 кристаллов, нет никакой нужды вступать с Владыкой в открытую конфронтацию. Можно просто бегать от него и ждать, пока он сам умрёт. Я думаю, можно даже не все кристаллы уничтожать, а ограничиться, скажем, шестью, тогда он будет больше терять здоровья, чем приобретать, но это требует проверки. С восемью замоченными кристаллами я его замочил, но после этого последний кристалл остался торчать на уровне и пол под ним не превратился в сад. Это добавило проблем.
Если ресурсы позволяют, то можно за ним и побегать, но это опаснее.
О призах. В интернете написано, что каждый кристалл имеет 1/9 шанс дропа боевой палочки, заряженной на +25, что очень пригодится на следующих уровнях, да и в текущей битве поможет. Я, однако, эту палочку не получил, убив все 9 кристаллов 4.5 раза (4 раза Владыку победил и один застрял из-за того, что не во все комнаты мог попасть), кроме того, судя по исходному тексту, при создании кристалла шанс дропа устанавливается равным нулю. Кроме того, Владыка имеет 1/2 шанс дропа Свитка Улучшения Оружия (Scroll of Weapon Upgrade). Этот свиток добавляет +1 к текущему оружию и даёт ему случайное зачарование. Если зачарование уже есть, то этот свиток его гарантированно сохранит. Я убил Владыку 4 раза и этот свиток получил дважды.