Австралия: музеи компьютеров, аркады и магазины олсдкульной техники и игр (Old-Hard SX, видео)
Посмотреть можно или на ютубе:
Или на Boosty (бесплатно):
Посмотреть можно или на ютубе:
Или на Boosty (бесплатно):
Маленьким штуковинам из Австралии и Японии - маленький Old-Hard SX 😉
Видео можно посмотреть на Youtube
Или на boosty, тоже бесплатно:
Моё скромное мнение о трёх книгах:
"Икона DOOM. Жизнь от первого лица" (Джон Ромеро)
"Консольные войны" (Блейк Харрис)
"Не виноватая игра?" (Василий Овчинников)
Также можно посмотреть на ютубе
И на Boosty (бесплатно)
Полтора года работы. 30 историй с кучей концовок в каждой + подобие глобального сюжета. И наконец то я могу сказать «ОНО ЖИВОЕ»!
Ну и не могу не поделиться титрами из игры… Не смотря на то, что проект авторский во всех возможных смыслах, без этих людей игра выглядела бы, звучала и игралась хуже. Дорогие мои, огромное спасибо всем вам за помощь! :)
Продолжаю рассказывать о разработке своей интерактивной книги в формате «симулятора поддержки людей, столкнувшихся с аномально-криповым». В этот раз поговорим о локализации, но почти исключительно с технической точки зрения. Т.е., посмотрим что и как переводить или не переводить, а не «где нанять переводчика / какой ИИшкой лучше переводить».
Diclaimer: в эту задачку я погрузился с места в карьер, вообще не изучая готовые решения и инструменты, со словами «я программист или как?» Итак...
Шаг 1. Заводим CSV-файлик для хранения айдишников и строк для каждого языка.
Шаг 2. Генерируем CS-файл из него с enum-ом и собственно строками текста.
Шаг 3. Используем в коде как-то так с помощью класса-менеджера, который подставит нужную строку в зависимости от языка.
Да-да, я буквально одной консолькой, написанной на C#, генерирую второй файлик, написанный на C# и включённый в другой проект. При этом я генерирую его тупо как текст, без каких-то хитрых библиотек и валидаций. И работает же! Ну а чего бы ему не работать то?)
Да, в случае с озвучкой я сразу решил, что не буду делать озвучку на других языках, но сделаю субтитры в роликах…
...и расшифровку голосовых сообщений.
Причём, как видите, обе фичи получились полезными и для русскоязычных игроков — как для имеющих ограниченные возможности, так и для тех, кто просто терпеть не может голосовые сообщения.
Да-да, часть присылаемых по сюжету картинок таки требуют перевода! Там, где я картинку делал сам — то просто перевёл в редакторе и подставил текст в новую вёрстку. В более сложных же местах я просил ИИ-шку перерисовать картинку, и там она справилась на ура.
Самая болезненная часть, для понимания которой вам просто необходимо изучить мой пост про скрипты, хранящиеся в Obsidian. Прочитали? Вернулись? Отлично, тогда продолжаем: после обработка obsidian-файла у меня получаются файлики с такой структурой.
Т.е., в них хранится прямо текст вопросов и ответов, а не ID-строчек. Поэтому мой пайплайн из нескольких маленьких консолек выглядит так:
загрузить json-файл, распарсить его и работать уже с понятной структурой
вытащить все строчки в пары «ID – текст», где ID является хэшем от содержимого строки
сохранить эти пары в CSV-файл, одноимённый файлу с диалогом
перевести содержимое файла
другой консолькой сделать копию квеста с суффиксом, соответствующим имени квеста, например для английского будет очевидное «_en»
игра знает, какой язык выбран и в зависимости от этого загружает файл с нужным суффиксом
Причём консольки получились достаточно умные: например, если файл уже существует, он не перетирается с нуля, а дополняется и обновляется. Если я отредактировал строку в русском файле — у неё сменится хэш, и нужно будет заново перевести только такие строки. Удобно? Вполне)
Игра релизнится 14 июля, и через месяц-два я вернусь с рассказом о том, насколько (без)успешно она продалась, как я выводил деньги из Steam, платил за всё это дело налоги и т.п. Если интересно — подписывайтесь, чтоб не пропустить ;-)
Для своей интерактивной книги в формате «симулятора поддержки людей, столкнувшихся с аномально-криповым» в качестве редактора рассказов я выбрал… Canvas внутри Obsidian. И даже без каких-либо дополнительных плагинов. Было ли это плохим решением? Ну как вам сказать…
Начнём с простого вопроса: а что вообще игромеханически представляет из себя интерактивный рассказ, если не учитывать всю обвязку в виде глобального сеттинга, атмосферы, оформления и т.п.?
Есть набор из нескольких вопросов. Задаём вопрос — получаем ответ и выставление в true одной или нескольких булевых переменных и/или увеличение одного или несколько счётчиков на единицу. Новые вопросы и доступ к концовкам истории появляются в случае сочетания выставленных или не выставленных триггеров и счётчиков. ВСЁ! Внимание, вопрос: на какой платформе можно написать такую штуку?
Ответ очевиден: НА ЛЮБОЙ. Такие взаимосвязи хоть табличками в экселе можно описать или в INI-файле))) Но естественно, существует и тьма тематических редакторов. Ren'Py, изначально созданный для визуальных новелл, Twine – для текстовых квестов, мегапрофессиональный редактор диалогов Articy Draft… Но у всех были свои недостатки. Где-то в интерфейсе не хватало фич, или он наоборот, был сложным как пульт управления космолётом. Где-то визуализация подкачала и скорее мешает, чем помогает в разобраться в хитросплетении вопросов и ответов...
В итоге я пришёл к забавному выводу: если уж все инструменты неидеальны, почему-бы не соорудить свой? Да, он тоже будет, понятное дело, неидеальны. Но он будет своим, а значит я смогу максимально детально контролировать его поведение и допиливать под свои нужды. Он будет не универсальным, но удобным лично для меня. Так что никакого NIH-синдрома, чистая рациональность...)
В качестве основы для редактора, как я уже сказал выше, взял Obsidian, который позволяет красиво и удобно рисовать блоки и связи между ними, а также искать по содержимому такого файла.
По структуре же canvas-файл является банальным JSON’ом, парсить который для последующего наполнения собственной структуры — одно удовольствие. Впрочем, самый главный вопрос тут в том, а что же именно я пишу в этих блоках для работы с упомянутыми триггерами? Ну… лучше один раз увидеть. И я надеюсь, у вас крепкие нервы)





Что, страшно?) На самом деле да, решение получилось спорным, но конкретно для меня — на удивление удобным. Таким образом я написал 45 диалогов (31 история + сюжетные вставки) с минимальным количеством багов, и ни разу формат таких «скриптов» меня не тормозил. Моя скорость придумывания историй оказывалась на порядки ниже, чем скорость наполнения таких вот файлов. Так что… я конечно не утверждаю, что это путь которым стоит идти, но тем не менее, право на жизнь он имеет ;-)
В игре также есть встроенный справочник, и он тоже сделан с помощью Obsidian! Но в данном случае я использовал его просто как редактор пачки связанных между собой ссылками Markdown-файлов. Потом эти файлы моя самописная консолька потом собирает в единый JSON-файл, и вуаля! Вышло, на мой взгляд, довольно удобно)
В общем, берите на вооружение: Obsidian может стать неплохой основной для игрового редактора ;-)
Ну а в следующий раз я думаю рассказать о том, как на коленке делал локализацию игры и что пошло не так уже там. Что же по игре в целом - релиз запланирован на 14 июля 2026 года, но посмотреть демо-версию вы можете уже сейчас ;-)
Продолжаю тему разработки своей игры формата «симулятор поддержки людей, столкнувшихся с аномально-паранормальным». В прошлом я уже затронул тему первых граблей и (не)использования ИИ, сегодня же хотел поделиться одной идеей. Идеей наверняка очевидной, но для меня она стала чем-то новым, так что…
Итак, у нас есть преимущественно текстовая игра, в который таки нужны какие-то иллюстрации, причём как в итоге выяснилось — в количестве около 100 штук. Нарисовать их я сам не могу, скилла нет, желания его нарабатывать — тоже. Заказать художнику — можно, но нужен бюджет, плюс это время и итерации для получения качественного результата. Генерировать в ИИ — можно, но всё-равно часто получается нечто «не совсем то, что хотел». Думал я об этом, думал… и решение пришло внезапно.
Фотографии! Ну вот например для истории про «выполнение странных правил» нужна бумажка с этими самыми правилами. Без проблем! Придумал, набрал текст в LibreOffice Writer, распечатал, почеркался ручкой, помял, сфотографировал телефоном. Даже никакая обработка не нужна)
По сюжету требуется раковина, полна кро красной густой жидкости? Сфотографировал дома свою раковину, обработал ИИ-шкой, готово.
Обращающийся доигрался с лифтом и попал в иное измерение? Погулял по району, сфотографировал подходящий вид, попросил ИИ-шку перекрасить небо в «невообразимые цвета». Добавил сверху помех в графическом редакторе (это имеет смысл по сюжету), профит! И да, т.к. по сюжету большинство клиентов связываются с нами с мобильного телефона — то и фото в основном вертикальные. Эх.
Требуется фото того, что видит герой через дверной глазок? Распечатал бумажку, попросил жену выйти в коридор с ней, сделал фото телефоном буквально через дверной глазок, ИИ-шка опять не нужна. Да, с определённой попытки у меня таки получилось фото, на котором текст легко читается, но тут я его показывать не буду, ибо сюжетные спойлеры ;-) Ну и аналогичным образом решилась задача «нужен кадр, по которому можно угадать город» - как говорится, да без проблем, «я тут живу»!
В смысле «не узнали город»? Вы никогда не слышал о «памятнике клавиатуры»? o_O
Понятное дело, что не во всех случаях нужен именно чистый реализм — для тех же слайдшоу в начале и концовке я использовал некоторую стилизацию. И стилизацию это мне создавал ИИ, но вот референсы я опять таки собирал на улице сам. Простой пример, до и после.
И естественно я не вывалю тут всю сотню изображений из игры, но идею, я думаю, вы уловили. Универсальна ли она? Определённо нет. Позволила ли она мне своими силами довести игру до релиза, который состоится в Steam 14 июля 2026 года? Определённо да. Ну а демо-версия доступна там уже сейчас :)