В Питоне один из возможных синтаксисов инициализации словаря такой:
b=dict(key1='value1',key2='value2')
После этого создаётся такой словарь: {'key1':'value1', 'key2':'value2'}
Такой способ инициализации для меня выглядел непонятно. Смотрите, ключи не являются строками, но преобразуются в строки. Написать же так:
b=dict('key1'='value1','key2'='value2')
нельзя. Всё это выглядело очень странно. Я понимаю, когда для выполнения определённого действия вводится особый синтаксис, но синтаксис должен быть как-то об'яснён и иметь смысл. Если для инициализации словарей введён специально такой синтаксис, то ключи должны быть любого типа. В данном же случае... а какой тип у ключей в первом примере? Это не строки (хотя потом они превращаются в строки). Это выглядит как имена переменных, но переменные не создаются после выполнения этой строки.
Я открыл Лутца. Прямым текстом ответ написан там не был, но там была важная подсказка: там было написано, что тип ключей ограничен при таком синтаксисе строковым типом, а сама инициализация это инициализация по "ключевым аргументом".
И тогда я понял, как это работает. Поскольку в Питоне нет строгих ограничений на количество позиционных и именованных аргументов, то я могу посылать их сколько угодно, что я и делаю, передавая эти аргументы в том количестве, в каком надо, по одному на каждый элемент словаря. Поскольку аргументы именованные (keyword argument), то при вызове функции автоматически создаётся словарь kwargs, который в точности идентичен тому, который мы хотим получить при инициализации.
То есть это оказался не специальный синтаксис, а общий.
По опыту я уже знаю, что если за рулём настигает сонливость -- то надо не вести машину изо всех сил, а останавливаться и спать 20 минут. Я часто так делаю.
И вот я решил поспать. Остановился на парковке, сплю. Мне стучит в окно мужик.
Ну и в общем он мне рассказал, что нельзя спать с заведённым двигателем, а то можно задохнуться. А если очень надо -- то чтобы я приоткрыл окно. Я ему сказал спасибо, а потом задумался. Его слова имели смысл, но лишь частичный. Задохнуться можно, но для этого надо, чтобы выхлопные газы попали в салон. А как они туда попадут? А если они туда попадают, то задохнуться можно и на ходу. А если приоткрыть окно, то это спасёт от задыхания при излишне герметичном салоне, но от выхлопных газов не спасёт.
Я погуглил. Однозначного ответа я так и не нашёл. Тем не менее, соображения следующие: 1. Находиться рядом с заведённой машиной в гараже, внутри или снаружи от неё, не следует. Случаи задыхания очень даже бывали. 2. Задохнуться в машине можно от отсутствия кислорода, если машина слишком герметичная. Впрочем, это не про Жигули. И для этого нужно больше времени, чем 20 минут. 3. Задохнуться от выхлопных газов тоже можно, но для этого надо, чтобы они попадали в салон. Это или неисправность выхлопной системы, или дыры в дне машины, через которые газы попадают в салон. 4. На руку играет то, что выхлопные газы имеют ярко выраженный запах. Но надо выяснить, не может ли происходить утечка каких-либо газов без запаха. Если может, то в едущей машине водитель также находится в опасности.
Проблема в том, что не спать гораздо опаснее. А спать с выключенным двигателем -- холодно. Пока что пытаюсь использовать комбинированный вариант -- разогретый двигатель выключаю, а вентилятор салона включаю. Тем не менее, пока ощущение, что теплообмена двигателя с радиатором печки не происходит, если двигатель выключен. Какое решение в этом случае верное -- пока не знаю.
Если у вас большие каналы, то вам всё равно, плюс сто просмотров у вас или минус сто просмотров.
Если же каналы маленькие, то каждый просмотр может иметь значение. Иногда не только моральное.
Например, у меня есть приватные каналы на одного человека, куда я складываю то, что должно быть доступно только мне. Это распространённая практика. Я уже знаю, что просмотры считаются по одному на устройство, а не на пользователя, поэтому если я туда что-то пощу с компа, а потом открываю с телефона, то я увижу, как 1 просмотр заменяется на 2.
Загвоздка в том, что если начать отматывать такие каналы далеко назад, то можно с удивлением обнаружить, что у старых постов бывает и 4, и 5 просмотров. Столько устройств у меня нету. Это может значить, что кто-то неведомым образом смотрит в мой приватный канал, а это очень, очень плохо.
Но, по-видимому, дело не в этом. Текущих рабочих гипотезы у меня две, и возможно они обе существуют совместно: 1. Просмотр с конкретного устройства через какое-то время "забывается", поэтому повторные просмотры старых постов увеличивают отображаемое число. 2. Просмотры считаются не на каждый пост отдельно, а используют значение просмотров соседних постов или среднее значение по больнице.
Косвенное подтверждение первому пункту -- это как раз просмотры приватных персональных каналов.
Что касается второго пункта, вот какие ситуации я наблюдал.
1. Сделал к себе в публичный канал репост с другого публичного канала. Из-за глюков десктоп-версии у меня периодически такие репосты сохраняют число просмотров с оригинального канала. Оригинальное число просмотров было около 8000. Число просмотров у меня -- ну, 20. Так вот, следующий пост в моём канале стал показывать на десктопе тоже 8000 просмотров, хотя это было невозможно, потому что этот следующий пост не был репостом. 2. Были посты А, Б, В. Открываю канал, вижу, что число просмотров у поста В выросло на 3 (цифра мигнула у меня на глазах). Листаю вверх -- у поста А цифра выросла тоже на 3. А у поста Б осталась прежней. Это тоже невозможная ситуация.
В совокупности всё это показывает лишь одно: просмотры отображаются неточно. Ориентироваться на них можно только с известной долей скепсиса.
Специалистам приходится контактировать с новичками. Новички задают специалистам сотню вопросов. Эти вопросы часто бывают одними и теми же. В честь этого я даже написал статью о типовых вопросах про NetHack.
Почему же я её написал? NetHack не единственная тематика, где я имею дело с новичками. А в других областях новичком являюсь я сам. Новички и их вопросы вызывают у меня одну из двух реакций. Первая -- доброжелательная, я хочу помочь, всё об'яснить человеку. Вторая реакция -- это раздражение. У меня пока нет чёткого критерия того, когда новички вызывают раздражение. Приблизительный же критерий таков:
Новичок вызывает раздражение, когда складывается впечатление, что он сам на самом деле не хочет разбираться, не хочет думать. Он хочет, чтобы ему всё рассказали.
Сейчас я думаю над тем, как побороть раздражение от таких новичков, или как себя с ними вести не борясь при этом с раздражением. Пока мыслей нет.
Надо было перестроиться вправо. Движение быстрое и плотное -- ТТК. Видимость плохая. Вечер. Смотрю в зеркало -- какое-то марево. Фонари горят, но чьи и где -- неясно.
Подношу товар на кассе самообслуживания, раздаётся писк. А чек не начинает оформляться -- вижу стартовый экран.
Охранник говорит -- эта касса не работает. Я -- а остальные работают? Охранник -- Вы что, не видите? Эта касса фиолетовым подсвечена, а остальные -- зелёным. Я -- И что значит фиолетовый? Охранник -- Что эта касса... не такая, как все.
Да, сверху над каждой кассой светится фонарь. И да, у всех он был зелёным, а у этой кассы фиолетовым. Но для клиента это абсолютно не информативно. Фиолетовый -- нормальный цвет. Общеизвестных предупреждающих цвета два: жёлтый и красный.
Но главное даже не это. У кассы есть огромный экран. На этом-то экране и надо текстом писать о том, что касса не работает. А не зажигать загадочные фонари. Зажигать фонари -- это для производства.
***
А потом я пошёл на соседнюю кассу, пробил один товар три раза (потому что у меня было три штуки), и тут охранник говорит -- а у вас только два раза пробилось.
Это вообще треш, потому что я отчётливо слышал три писка. Писка три, а экземпляров два. Офигеть.
Раньше мой основной канал потери читателей был простой -- отписка. Кому-то я надоел или написал что-то нехорошее -- и вот результат.
Сейчас я заметил, что таких отписок стало мало. Но читатели всё равно пропадают. Куда? Открываешь Recent Actions в телеграме -- а там пусто.
Короче говоря, дело в удалённых аккаунтах. Какое-то время они висят в подписчиках, а потом, если не удалить их вручную, пропадают сами. В дайари такой проблемы нет. Там надо очень постараться, чтобы аккаунт у тебя удалили. А в телеге это случается постоянно. Иногда читатели заводят новый аккаунт и подписываются заново. Но это редкость.
Снова я решил написать заметку для новичков, а точнее -- даже для тех, кто в NetHack никогда не играл, а только кое-что слышал. Я не буду писать про то, как играть. Об этом уже и так порядочно написано. Я хочу коснуться ряда общих вопросов, которые часто возникают у только начавших или даже не начавших игроков.
Q: Каким образом при помощи NetHack можно взламывать сети? Это сканер портов? Или это сниффер? А может быть NetHack -- это руткит?
(читать дальше)A: NetHack не предназначен для взлома компьютерных сетей. NetHack -- это компьютерная игра! Это компьютерная ролевая игра. Пошаговая, для одного человека.
Почему же она тогда так называется? Официальные разработчики сообщают следующее:
"Net" обозначает, что разработчики во время работы над игрой общаются друг с другом по сети. Многие из них никогда не виделись друг с другом.
(The "Net" in NetHack refers to the way the developers, many of whom have never met in person, organize the work on the program. )
Что касается Hack, то была игра с таким названием. Это один из предков NetHack. Слово Hack в данном случае обозначает не взлом компьютеров, и даже не программирование. Hack здесь переводится как "разрубать на куски" (монстров), чем и занимается игрок большую часть игрового времени.
Отдельно хочу обратить внимание на то, что сюжет и сеттинг NetHack также не имеет отношения ни к сетям, ни к взлому. Это не киберпанк. NetHack -- "классическая" фэнтезийная игра с эльфами, файерболлами и кольцами всевластья.
Q: Играю в Pathos Nethack Codex. Это же нетхак! Почему нетхакеры шлют меня нахуй?
A: Патос -- не плохая игра. Но это не NetHack. Что же это? Автор Патоса взял основные механики, наборы предметов и монстров из оригинального нетхака и сделал с ними свою игру, назвав её Pathos Nethack Codex. Игра получилась упрощённой, но довольно удобной и симпатичной. Почему же к ней так плохо относятся?
Потому что плохо относятся не к ней, а к игрокам, которые в неё играют.
Дело в том, что Патос изначально делался под смартфоны, а кроме того, с самого начала допускал возможность перевода на другие языки. И русский язык есть. Мобильные платформы + русский язык = огромное количество случайных игроков. Они пока ещё понятия не имеют о том, что такое рогалики. Английский язык не стоит перед ними культурным и интеллектуальным барьером. Это приводит к ситуациям, когда в чаты заходят невежливые, высокомерные люди, которые с ПАФОСНЫМ выражением задают вопросы в духе "ну чо, почём тут рыбу продают? а это чо? а это?"
Русскоязычное сообщество (t.me/runethack) довольно камерное, поэтому после нескольких таких заходов все становятся очень нервными. Игрок спрашивает что-то про Пафос? Это уже наполовину красный флаг.
Будьте вежливыми и скромными -- и к вам будут нормально относиться. Хотя на вопросы по Патосу в основном чате мы всё равно не отвечаем, потому что основной чат посвящён исключительно классическому NetHack. Для обсуждения других рогаликов у нас есть отдельный оффтоп-чат, t.me/DnDnOther .
Q: Я не понимаю, что означает буковка на экране, в инвентаре и т.п. Q: Я нашёл, что означает буковка! Это была statue of a grid bug! И что это?
A: NetHack -- рогалик, поэтому для игры в него надо очень много знать, а то, чего вы не знаете, надо уметь искать. Вы можете задавать вопросы в сообщество, однако вопросы начального уровня очень быстро перестают возбуждать других игроков. Вы должны с самого начала учиться разбираться во всём самостоятельно.
Итак, прежде, чем задать свой первый вопрос в сообщество, подумайте, прочитали ли вы официальное 50-страничное Руководство? Если нет -- то прочитайте разделы 1-7. Ответы на многие вопросы вы найдёте там.
Отправлять новичка сразу читать руководство может показаться жестоким, но именно такова суровая реальность нетхака: информация из Руководства жизненно необходима для игры. Вам всё равно придётся её откуда-то узнать, так что лучше узнать её всю целиком оттуда, где она есть, а не собирать по кусочкам из ответов других игроков, статей NetHackWiki и реддита.
Но ладно, давайте всё-таки вернёмся к изначальному вопросу, как узнать что значит буковка на экране?
Есть команда -- ;. Вы должны нажать точку с запятой на клавиатуре (это одна кнопка, а не две). После этого стрелочками можно подвести курсор к непонятному объекту, монстру и т.п. Далее надо нажать точку (и это тоже одна кнопка). В верхней строке вы увидите, как называется то, на что вы навели курсор. Можно забить это название в NetHackWiki и прочитать подробнее о том, что вы нашли.
Тем не менее, такие действия не всегда могут приводить к полезным результатам. Рассмотрим два типичных случая, которые могут сбить с толку начинающего игрока.
Пример 1. statue of a grid bug. Попытки поиска ни к чему не приводят, энциклопедия не содержит такой статьи. В этом случае попробуйте поискать части названия. Например, статья Statue очень даже есть. И в этой статье указано, что статуи обязательно имеют указанный тип монстра, к которому они относятся. Т.е. statue of a grid bug это просто статуя решёточного жука. Искать информацию о ней надо в статье Statue. Если статуя оживёт (или вы её оживите), то искать информацию надо будет в статье Grid bug.
Пример 2. emerald ring. Если попытаться найти это кольцо в энциклопедии, то вы увидите только полный список колец, но не поймёте, которое из них что делает. Если вас это смущает, то вы не поняли концепцию "случайный внешний вид вещей" (randomized appearance). Это одна из ключевых концепций в NetHack. Если коротко, в каждой игре emerald ring делает разные вещи. Вы должны явно или косвенно идентифицировать, что за кольцо у вас на руках. Энциклопедия в данном случае вам поможет лишь частично. Опыт и смекалка могут решить проблему.
Q: Есть ли перевод игры на русский? Q: Когда выйдет перевод игры на русский? Q: А давайте сделаем перевод игры на русский!
3. Есть несколько частичных переводов на русский, но ни один из проектов сейчас не активен. В ближайшее время ожидать полного перевода на русский не следует.
NetHack написан очень давно, когда никто не задумывался о переводах. Игра написана так, что хотя сделать перевод и возможно, но это очень объёмная задача. Можно довольно легко сделать перевод меню, названий предметов и некоторых встроенных текстов. Сделать же качественный перевод, то есть такой, чтобы все фразы хорошо читались и были составлены грамматически правильно -- очень и очень сложно.
Подробнее о том, в чём заключается проблема, и о том, как дела шли у частичного проекта, можно прочитать тут:
4. А давайте! Вы прочитали всё, что было по ссылкам выше? Вы готовы организовать систему, позволяющую делать грамматически правильные предложения со склонением названий всех предметов? Вы уже представляете, как будете это делать? Что ж, тогда я в деле. Я буду младшим помощником и чернорабочим -- если вы возьмётесь делать полноценный перевод.
Видите ли в чём дело, попытка перевода уже была, и не одна. Все переводчики берутся в первую очередь переводить то, что легко, то есть -- готовые предложения внутри текста. Но этот подход ошибочен, потому что он упирается в тупик. Важнее создать саму возможность полноценного перевода. Сейчас этой возможности нет. А конкретные люди, которые переведут конкретные строчки -- найдутся.
Q: Есть ли нормальная графика у игры? Или так и придётся вглядываться в картиночки 16 на 16 пикселей? Или придётся учить буквы?
A: "Графика" у NetHack существует нескольких типов.
I. Почти все игроки-ветераны играют в "буквенный" вариант, который называется "игра в ASCII" ("ASCII-графика"). Это выглядит вот так:
Такой вариант имеет следующие преимущества: 1. Буквы и цвета букв стандартизованы. В какую бы версию и на какой платформе бы не играли, "читаться" экран будет одинаково. 2. Поскольку графика отсутствует, у игроков включается воображение, благодаря которому они могут сами представлять себе игровую ситуацию. 3. Благодаря схематичности восприятие и анализ игровых ситуаций также упрощается. Подобно тому, как видя положение стрелок на стрелочных часах, вы сразу знаете, сколько времени, так и в игре, видя россыпь букв, вы сразу понимаете, что происходит. 4. Можно выбрать любой размер и тип шрифта -- и игра всё равно будет прилично выглядеть. Это актуально для очень больших и очень маленьких мониторов. На очень больших стандартный шрифт может быть слишком мелким, а на маленьких игровое поле может не помещаться на экран.
Тем не менее, у игры есть несколько графических версий.
II. Игра, при которой буквы заменяются на квадратные картинки, на каждой из которых нарисован монстр, предмет, или какой-либо элемент окружения, называется "игра с тайлами" (tile). Тайлы -- это как раз квадратные картинки, из которых состоит игровое поле. В комплект поставки игры входит так называемый "тайлсет" (tileset), с которым игра выглядит вот так:
Это стандартная возможность, и почти все версии игры могут быть переведены в такой графический режим. Не всем, однако, он по душе. На современных компьютерах с экранами FullHD такое игровое поле становится слишком мелким. В этом случае вам могут помочь альтернативные тайлсеты. Для FullHD мониторов я рекомендую тайлсеты минимум 32x32 пикселя (стандартный -- 16x16). Если вы играете на смартфоне, то несколько тайлсетов уже имеются в вашем распоряжении. Если вы играете на компьютере, то тайлсеты придётся установить самому. Подробнее об этом можно прочесть здесь:
Если коротко: большинство альтернативных тайлсетов существуют только для версии 3.4.3. Сейчас эта версия считается устаревшей. Если вы играете в более новую, то выбор у вас будет более ограничен.
III. Игра с тайлами -- не самый крутой вариант. Есть игра в изометрии, подобной Fallout 2 (хоть и без анимации). У такого варианта графики только один "тайлсет", плюс надо ставить специальную версию игры. Раньше эта версия называлась Falcon's Eye, сейчас она называется Vulture's Eye. Falcon's Eye был бесплатным, но проект бросили. Vulture's Eye (а ныне просто -- Vulture) сделан на его базе и является платным. Вот так выглядит интерфейс данной версии:
IV. Но и это ещё не всё. Существуют "настоящие" трёхмерные версии NetHack, в том числе с видом от первого лица. Одна из них, NetHack 3D, продолжает находиться в активной разработке. Немногие смогут в неё поиграть, поскольку она доступна только под Mac OS X. Тем не менее, вот репозиторий в гитхабе:
Резюмируя всё, что я написал выше: современной графики в NetHack нету. И не будет. Почему? NetHack схематичен по своей природе. Вполне возможно сделать графику, анимацию, звук на современном уровне, но в этом нету смысла. Красивая графика будет только отвлекать и мешать концентрироваться на главном.
Q: Есть ли в NetHack мультиплеер? А когда будет?
A: Вопрос очень больной. Мы не знаем, почему игроки хотят видеть мультиплеер, но этот вопрос возникает постоянно.
NetHack -- пошаговая игра. Поэтому любой мультиплеер предусматривает, что игроки ходят по очереди. После каждого своего хода вам надо будет дождаться, пока сходят все остальные игроки. Каждый ход. Когда вы играете сами, вы можете тратить на один ход как одну секунду, так и несколько минут. Все остальные монстры ходят "мгновенно". Если вы будете играть с другими людьми, то никакого "мгновенно" не будет. Ожидание может затянуться. А если вы отвлечётесь на чашечку кофе, то другие игроки будут ожидать уже вашего хода.
И тем не менее, мультиплеерный вариант игры есть! Он называется AceHack. Как и многие другие варианты, он давно не развивается. Прочитать о нём можно тут:
Что ещё в смысле мультиплеера может предложить NetHack? Многие игроки играют "на сервере". Это означает, что вы не ставите NetHack к себе на компьютер, а подключаетесь к серверу, на котором игра установлена. Вы играете "по удалёнке". Для вас, как для игрока, всё выглядит так же, как будто бы вы запустили у себя на компьютере текстовую версию игры. Однако на самом деле вся игра происходит на сервере! Главное преимущество такой игры заключается в том, что другие игроки могут в режиме реального времени наблюдать за вашей игрой. Подробнее про игру на публичном сервере можно прочитать тут:
Обращаю внимание, что при такой игре не происходит взаимодействия с другими игроками, то есть у каждого своё подземелье. Но есть одно важное исключение -- так называемые "кости" (bones). Если вы играете на публичном сервере или на общественном компьютере, то вы можете встретить останки других игроков. Если вы играете только у себя, то вы встречаете только свои останки. Встретить чужие -- это гораздо интереснее.
В чём суть? Умершие игроки оставляют свой след в подземелье. Не каждый раз, но довольно часто уровень, на котором они умерли, сохраняется где-то на сервере. На этом уровне также сохраняется сам игрок в виде призрака, зомби, мумии или кого-нибудь ещё. Сохраняется весь его инвентарь, преимущественно проклятый. И, что самое главное, сохраняется то, что его убило.
Другой игрок, попадая на ту же глубину, с определённым шансом получает вместо нового уровня -- вот этот, уже игранный. Со всеми его плюсами и минусами. Хотя уровни с костями могут быть очень ценным ресурсом, поскольку содержат в себе инвентарь прокачанного игрока, одновременно с этим такие уровни очень опасны. Убийца всё ещё ходит где-то рядом. Нередки случаи, когда из-за этого создаются тройные или даже четверные кости.
Кости не являются полноценным мультиплеером, но это однозначно является взаимодействием игроков.
Q: NetHack сделан неправильно. Его надо дополнить, переделать, либо переписать с нуля на другом языке программирования. Q: NetHack сделан настолько неправильно, что надо сделать другой рогалик. И я этим займусь.
A: Людей, которые хотели переделать NetHack, было много. Преуспели в этом единицы. Переделанные версии игры называются "форки" или "варианты". Всего таких вариантов было более 20 штук. Активно развиваются 5-10. Подробнее о них можно прочитать тут:
Почитайте про эти варианты. Возможно, они удовлетворят ваши потребности. Если же вы хотите сделать именно свой вариант игры, то вы довольно амбициозны.
Чтобы сделать свой вариант, надо, как минимум: 1. Великолепно знать язык Си (и ещё придётся учить Lua, но это меньшая проблема). 2. Знать английский на уровне чтения документации + nethack-лексика. 3. Иметь представление, что вы конкретно будете делать.
Си -- это язык, на котором написан NetHack. Весь геймплей, все сообщения зашиты в исходный код на Си. Поэтому никакого простого способа переписать игру на другой язык, или использовать другой язык для модификации, не существует. Использовать другой язык -- это значит переписать NetHack с нуля. Эта работа ещё более сложная, чем перевод на русский. А самое главное -- эта работа бессмысленная. Язык Си полностью обеспечивает потребности геймплея.
Английский язык -- это язык комментариев, язык всех игровых сообщений, язык документации к компилятору и т.п. Без знания английского разработка вариантов NetHack невозможна. Разработка собственного рогалика -- возможна, но среди кого вы будете его распространять? Русскоязычное сообщество любителей рогаликов довольно маленькое, а кроме того все сидят по своим углам. Мало кто интересуется рогаликами вообще.
"Иметь представление..." -- с одной стороны, это требование очевидно, но с другой нередки ситуации, когда у будущего разработчика есть только обрывки концепции. Их необходимо додумать. То, что NetHack -- хороший рогалик, не является случайностью. Это заслуга разработчиков, очень умных людей, которые продумывали каждый аспект игры. Не все аспекты появились сразу. Иногда значительная часть геймплея возникала в одном из вариантов, а потом вливалась в основную игру. И тем не менее, геймплей нетхака имеет структуру и имеет осмысленность. То, что вы добавляете, должно как-то гармонировать с тем, что уже существует. А ещё оно должно вносить что-то новое и интересное. Это непростая задача. Ещё сложнее придумать концепцию рогалика с нуля.
Почему я акцентирую внимание на этих трёх пунктах? Потому что почти все участники наших чатов, которые хотели сделать свой вариант/рогалик, не удовлетворяли этим требованиям. И ни один из тех, кто заявлял о своих намерениях, до реализации задумки так и не дошёл.
Тем не менее, не стоит опускать руки! Если вы действительно хотите сделать свой вариант/рогалик, то у вас вполне может получиться. Вот вам пара полезных ссылок.
В следующей статье (на английском языке) изложены основы редактирования исходного кода NetHack. Руководство давно устарело (95 год!), но прочитать его всё же полезно, поскольку там изложены базовые концепции и общая идеология исходного кода. За последние 25 лет они не изменились: https://nethackwiki.com/wiki/Beginner's_guide_to_NetHack_sources
Также изучите внимательно следующую статью Josh Ge. Этот перец -- один из тех, кто смог создать собственный рогалик, и рогалик стал популярным (Cogmind):
Josh Ge не только пишет, что он сделал в своей игре, но также описывает: -- почему он сделал именно так, -- какие ещё варианты были, -- и почему пришлось от них отказаться.
Изучите всю эту информацию, продумайте всё как следует и приступайте. Удачи!
Продолжая цепочку хорроров, решил, что надо узнать что там, во второй части.
Ну и сразу надо сказать, что игрокам в первую часть надо играть и во вторую тоже. Это не сиквел, это, судя по всему, наоборот -- приквел. Но при этом конец второй игры не совпадает с началом первой. Сеттинг Little Nightmares всё ещё таит в себе много загадок.
Лучше вторая часть первой или хуже? Где как. Сюжет второй части меня очень впечатлил. Он сравним с сюжетом первой части по интересности и страшности. Возможно, даже круче. Эта игра -- про полузаброшенный город, все сохранившиеся жители которого прошли через ужасную метаморфозу. Теперь они жить не могут без телевизора!
Что мне не понравилось во второй части -- так это геймплей. Может быть, я плохо помню первую часть? Может, там тоже такое было?
Короче говоря, во второй части геймплей слишком сложный. Тайминги для ударов слишком короткие. Сраные манекены в больнице достали. К концу игры резервное время для выполнения заданий на скорость становится всё меньше и меньше. Эта игра для того, чтобы наслаждаться атмосферой, а не для того, чтобы показывать ловкость пальцев.
Мой уровень как геймера довольно средний. Я прошёл все эти ваши пидорские эстафеты и распугал всех сраных манекенов, да-да. Даже когда они наваливались на меня по шесть штук за раз. Но как же я ругался!
Начинается сразу за упокой. В одной из первых же комнат нас встречают куклы, которые, хвала богам, не шевелятся.
И мёртвые детишки в клетках. Надо сказать, что мёртвых детей тут гораздо меньше, чем в первой части.
Одна из страшных вещей в этой игре (как и во многих хоррор-играх и книгах) -- это не то, что показано, а то, что НЕ показано. Куда делись трупы большинства горожан? Почему осталась лишь одежда? И почему она не упала, а висит?
Учительница. Одна из частых локаций в хоррор-играх -- это школа. Ещё больница, но больница это и вправду страшно, так что ей самое место в хоррорах. Но почему школа -- это страшно? Не всех же чморили?
Красиво.
Меня впечатлил момент с рентгеном. Я смог и себе сделать, и Шестой. Результат однозначный: мы люди. В мире, который населён куклами и мутантами, это очень важно.
Об'яснений про эти маски, к сожалению, нету.
Шестая и в первой части была асоциальна, но всё равно этот момент меня напряг. Шестая греется у догорающего трупа врага.
Глядя на такую скамейку, я вспоминаю про Hollow Knight. Не думаю, однако, что это отсылка, т.к. Little Nightmares не склонны к отсылкам куда-либо кроме самих себя (это там есть).
Что-то у меня последние посты сплошь технического толка. И вот ещё один.
На работу пришёл датчик. Его надо подключить. Коллега подключил -- не работает. Я спрашиваю -- а разводка правильная? Дал ему свой. Мой датчик (другой модели, но такого же типа) работает. Коллега говорит -- я такими же цветами подключаю.
Но кто же сказал, что разводка нового и старого датчика использует одинаковые цвета, особенно с учётом того, что и модель, и изготовитель разные?
Инструкция есть, но на китайском. Я её долго изучал, и обнаружил, что разводка там всё-таки есть. Да, я не знаю китайского, но кое-что мне известно. Сигнальные провода были обозначены 信号 без изменений с японским. Провода питания были обозначены 電源, но первый иероглиф был упрощённый. Его я тоже знал (именно в упрощённой китайской форме). А цвета были простые. Зелёный, чёрный, красный, белый. Эти иероглифы лишь немного отличаются от японских форм.
Как правильно делать список для выбора языка -- вопрос очень сложный. Главное, на что надо ориентироваться -- что пользователь может переключить язык случайно, и потом ему надо как-то понять, как вернуться обратно. Не все настолько опытные, чтобы помнить расположение галочек и вслепую настраивать корейскую винду заказчику.
То, что я напишу ниже, я видел один раз в качестве опечатки, когда название одного языка перевели не на тот язык, на который надо. А вот в качестве системы встречаю впервые.
Зашёл через Тор на какой-то сайт. Эндпоинт оказался, по-видимому, в Мексике. Ну, сайт мне отобразили на испанском. Я стал искать список языков -- и я его нашёл. В выпадающем списке было написано Mexico. Я открыл список, стал искать что-нибудь более понятное для меня, и понял, что в этом списке кое-что не то. А именно -- названия всех языков были написаны по-испански! Некоторые были узнаваемы, но ни английского, ни русского, ни даже японского я опознать не смог.
А потом я узнал, что Великобритания по-испански это Reino Unido...
Я как компьютерщик привык разбираться в том, как всё работает. Не всегда досконально, но хотя бы в общих чертах.
В соответствии с внутренней кухней телеграма сообщения (в каналах, чатах) бывают просто текстовыми, бывают картинками (с подписью), бывают музыкальным треком, бывают опросом. Есть ещё какие-то, которых я не помню.
Комбинировать типы медиа, кроме как в случае подписи к картинке (и, по-видимому, к музыке), нельзя. При этом максимальный размер подписи отличается от максимального размера текста, если картинки в сообщении нет.
Подпись всегда располагается под картинкой. Я решил просветить на этот счёт опытных телеграм-админов, а мне говорят, вообще-то картинку под текстом тоже можно!
Ну, и я выяснил, как это делается.
Есть боты, которые помогают оформлять посты. Они действительно позволяют сделать картинку под текстом. Но боты всё равно должны использовать Telegram API для постинга. Неужели у поста-картинки есть опция "подпись сверху"/"подпись снизу"? Нет.
ОКАЗЫВАЕТСЯ
Боты закачивают картинку на telegra.ph, а потом добавляют в текст сообщения невидимую ссылку на эту картинку. В случае, если в тексте поста есть гиперссылка на картинку, телеграм генерирует превьюшку этой картинки. И располагает эту превьюшку ПОД текстом. Особенностью является то, что слева от картинки будет видна вертикальная зелёная полоса.
Короче говоря, сообщение, в котором картинка расположена под текстом, это обычное текстовое сообщение с превьюшкой. В этом случае применяется лимит на длину для текстового сообщения, а не для подписи к картинке (в бесплатной версии это 4 кб и 1 кб соответственно).
При поиске неисправностей в технике, в том числе в компьютерах, дифференциальная диагностика применяется часто. Мы заменяем детали на заведомо рабочие и проверяем -- исчезла проблема или нет? Если исчезла, значит виновата была та самая деталь, что мы заменили.
Но вот какой казус у меня случился.
Начал троить двигатель. Судя по кодам ошибок -- проблема была в четвёртом цилиндре.
Первое, на что я подумал -- свеча зажигания. Во-первых, это очень хрупкая запчасть, а во-вторых, её довольно легко менять. Я уже менял свечи зажигания чуть больше года назад. У меня остался старый комплект, который я извлёк из двигателя в рабочем состоянии. Я взял одну из этих свечей, самую чистую, и поставил. Не помогло.
Дальше я стал думать на высоковольтные провода. Заменил провода. Толку нет.
Всё, что глубже -- сам я сделать не мог, поэтому повёз на автосервис.
Мужик посмотрел и сказал -- давайте вместо этой свечи поставим что-нибудь нормальное. Нашёл у себя что-то. Поменял мою свечу на свою.
И всё заработало!
ТО ЕСТЬ
Я заменил одну нерабочую свечу на другую нерабочую.
-- Постойте, как же так?! Та свеча, которую поставил я, была извлечена из машины в рабочем состоянии и просто лежала в коробочке! -- Я даже комментировать это не буду. Вы можете купить новые свечи, и они не заработают. Что уж там говорить о старой свече, которая где-то там лежала.
Поэтому в данном случае более правильным действием было бы не заменить новую свечу на старую, а поменять свечи местами. Это дало бы минимальный шанс отказа только что извлечённой свечи. А если бы она всё же отказала, то нерабочих свечей оказалось бы две. Это было бы легко определить, поскольку на двух рабочих свечах двигатель работает очень, очень плохо.
С детства при установке винды я следовал следующей стратегии: часть места я выделаю под ОС, остальное под данные. Делаю два раздела. Я не помню, откуда я это взял, может быть даже из Фигурнова. А может быть, меня папа научил.
Смысл такого разделения был в том, что можно переустанавливать систему, не беспокоясь о данных. Кроме того, если системный диск повредится, данные затронуты не будут.
Практика показала, что этот подход ошибочен, по крайней мере для меня. Сейчас у меня на всех моих компьютерах используется эта стратегия. Никаких преимуществ я от неё не получаю, потому что система у меня живёт долго, по пять и более лет. Когда же дело доходит до переустановки, то это чаще всего делается одновременно с переходом на другой накопитель, поэтому, опять-таки, данные не страдают.
Какая же у меня основная проблема? Большое число установленных программ (по работе) или игр (дома). Бинарники со временем перестают влезать в свой раздел. Тогда у меня появляется папка D:\Program Files. Но не все программы до сих пор успешно работают, если установлены не на системный диск. А некоторые программы ставятся в програм файлз лишь частично. В общем, сплошной геморрой.
С другой стороны, часть данных всё равно оседает в Моих документах, Моих рисунках, на Рабочем столе и т.д. Поэтому при переустановках я всё равно забираю часть папок с системного диска. Так что в этом смысле облегчения я тоже не получаю.
Есть одно частичное решение -- у GPT-дисков можно менять размер "на лету", а у не-GPT-дисков -- при помощи Акрониса. Но это всё очень страшные операции, которые проводить на живых данных нежелательно. Делать же полный бэкап (куда?) -- долго и нудно.
Короче говоря, все пути ведут к страданиям.
С основным десктопом я ничего не сделаю, потому что там SSD под систему, и там разбивка принудительная, а вот на других своих компах при следующей переустановке попробую монолитные диски, с одним разделом под всё. А данные могут быть выделены просто при помощи папки. Папка -- гораздо более гибкий инструмент в этом смысле.