Как Я "воскрешал" старую FMV-игру...
Я взялся за реинкарнацию этой игры в феврале 2025 года, на тот момент у меня уже был опыт в подобной разработке, поэтому Я рассчитывал что нынешний проект Я сделаю гораздо быстрее. Но Я ошибся.
Только 5.05.26 мою раздачу наконец-то одобрила модерация теперь моя игра лежит в открытом доступе и каждый может с ней ознакомиться.
В качестве игрового движка Я сразу выбрал Ren'Py - он был идеальным решением для моих задач. А для того, чтобы реализовать этот проект нужно было иметь две глобальные составляющие - текст и логику игры, и сам контент в виде видеороликов. Обе задачи Я пытался решить параллельно, но быстро понял что лучше всего сосредоточиться на чём-то одном. Справедливо рассудив, что без доступа к самому контенту разрабатывать, по сути нечего, Я решил начать с него...
Если экран имел 8 предметов для подбора, то оригинальные разработчики создали отдельный файл для КАЖДОГО состояния экрана.
Все видеоролики игры были в формате .cmk и "зашифрованы", по крайней мере, мне так казалось - они были абсолютно не читаемы всеми известными и малоизвестными проигрывателями и всеми доступными мне кодеками(Codec Tweak Tool, AVIcodec, VirtualDub, Light Alloy, DivX и т.д. и т.п.). Я считал, что должен быть алгоритм, который сможет расшифровать содержимое контейнера и поэтому начал открывать каждый такой файл в HEX-редакторе и проверять начальные строки-заголовки. Было что-то такое:
В то время как открывая нормальный файл, Я видел такую картину:
RIFF и подобные названия служат служебной информацией, благодаря которой система понимает структуру файла и может корректно прочитать видео и звук
По итогу, Я пришёл к идее, что, возможно, хитрые разработчики из начала нулевых сместили в записях 1-2 бита в каждом блоке, а декодер просто возвращает всё обратно. Я честно пытался повторять заголовок, но результатов не было. Не помогла даже нейросеть, её алгоритмы перебивки тоже не дали результатов. Я думал о простой логике XOR (это когда работает "исключающее ИЛИ". Если биты разные - то 1, если нет - то 0). Но как понятно, попытки подобрать ключ тоже провалились. Я уже был на грани отчаяния. Я даже использовал реверс-инжиниринг, когда пытался открыть исполняемый файл через Гидру, но там такая муть, что лучше туда вообще не лезть.
Но неожиданно Я наткнулся на программу-декодер, которая как раз работала с этим типом файлов и благодаря уже ей и ffmpeg (набор утилит для работы с видеофайлами), мне удалось открыть все файлы, а после использовать Any Video Converter Ultimate, чтобы пересобрать видео в доступный формат .avi. Итак, одна проблема закрылась - на это ушло около месяца...
Что касается второго главного столпа - логики и текста, то проблема заключалась в защите StarForce, которая добавляла свои драйверы в корневую папку Винды system32. И если Вин ХР относилась к этому ещё терпимо, то современные ОС просто выдавали синий экран. Мне даже пришлось переустанавливать свою ОС 11...
Поэтому пытаться запустить старую игру на современном железе Я перестал и сосредоточился на эмуляции Вин ХР, мой выбор пал на VMware Workstation 16 Player. Однако и там пришлось искать старые версии Daemon Tools из rutracker чтобы они могли там работать. Как только игра была установлена, меня снова ждала неудача - чёртов StarForce видел эмуляцию и отрыто посылал меня, а ещё и до кучи все мои усилия, нахер. Он мотивировал это тем, что моя ОС не удовлетворяет базовым потребностям игры.
Но мне повезло: оказалось что на данную игру, энтузиасты выпустили кряк, который выключает защиту StarForce, однако работает он только для Вин ХР. По крайней мере, запустить игру с этим кряком на моей ОС Вин 11 не получилось.
И вот игра наконец-то запустилась и процесс официально пошёл вперёд.
Я взял таблицу Excel и пошагово переносил всю логику переходов, реплик и видеофайлов.
Ещё со старта переноса Я определил для себя, что постараюсь создать маршрут прохождения при котором игрок сможет увидеть весь доступный контент за одно прохождение. И для этого нужно было создавать переходы, которых в оригинальной игре не было.
Понятно, что качество видеороликов с расширением 512х384 выглядит слабо, но такое качество решало сразу две проблемы:
1. Мне не нужно было апскейлить видео для лучшего качества, тратя время ещё и на это (сохраняя дух оригинала?)
2. Потенциальные игроки не будут качать 8+ ГБ игру 2006 года, где контента и так особо не много. Они лучше пойдут играть порно-пародии Genshin Inpact
Была конечно идея перевести игру на английский язык, просто добавив субтитры, но Я посчитал это уже перебором - просто потому что потребовалось ГОРАЗДО больше моего времени, а закончить хотелось побыстрее.
Уже где-то к началу лета Я полностью закрыл логику и текст игры и наступал тот самый интересный этап разработки, который идёт сразу же после сбора ассетов - сама РАЗРАБОТКА.
Прописываем переменные, обнуляем их, пишем стартовые параметры, логику, реплики и т.д.
Мой рабочий стол 1 выглядел так. Слева уже финальный продукт. Скринов из процесса разработки, к сожалению нет.
Как по мне, текстовый редактор Atom хорошо справляется с задачей, хоть РенПи и ругается, что поддержка его отключена, ну да ладно. Подсветка, удобность и возможность работы с разными языками программирования убедили меня остаться именно в нём, о чём Я не жалею.
Чат GPT меня тоже полностью устраивает, оформив платную базовую подписку, Я закрыл все свои вопросы, о чём тоже не жалею ни разу.
Именно с ГПТ моя работа вышла на новый уровень, если в своём первом проекте Я опирался на руководство и метод "тыка", используя только базовый арсенал функций Питона, то с ГПТ, активно в работу стали включаться пользовательские экраны, пользовательские функции, кнопки и так далее. Мой проект стал лучше в логике и ярче в интерфейсе. Хотя на момент лета-осени 2025 об интерфейсе речь ещё не шла, т.к. выполнялась основная задача - перенос логики игры и тестирование.
Где-то уже глубокой осенью этот замечательный процесс был закончен и пришло время добавления альтернативных экранов, а также примитивной системы инвентаря. Допустим, ты подбираешь предмет на экране, но сам использовать его не можешь, в нужный момент тебе открывается реплика в которой ты можешь "применить" данный предмет.
На моменте создания альтернативных экранов мне пришлось осваивать Photoshop, чтобы лучше вписать наличие/отсутствие предмета на экране. Если раньше для меня это делала моя знакомая (каюсь, мне было лень разбираться), то в этот раз ради качества картинки, Я взял и эту работу в свои руки. Для этого мне с головой хватило Adobe Photoshop 2026.
После проб и ошибок, получилось что-то такое:
Коньяк на месте не выделен, коньяк при выделении и экран уже без него. Обратите внимание на тень от бутылки, Я пытался сделать её естественной
Я не могу сказать, что получилось идеально, однако, в целом, Я доволен результатом.
Именно на моменте работы над предметами и альтернативными экранами, мой энтузиазм заметно просел и у меня уже во второй раз упали руки.
Альтернативные экраны заняли у меня непростительно большое количество времени. Все они лежали у меня в одном отдельном файле, в котором они компактно и удобно размещались.
А вот функции, которые нужны были для адекватного и удобного воспроизведения видео было очень много. Если бы мне сказали со старта про их количество, Я бы может и не начинал бы всё это.
Самые разные функции на которых всё держится - от случайной очереди реплик в меню диалога, до скрытия/отображения боковых панелей во время мини-игры
Каждая функция это не просто моя прихоть - Я исходил из двух вещей - как было в оригинале и как будет сегодня удобнее во всё это играть. Некоторые вещи из оригинала Я намеренно не внедрял (как невозможность пропуска некоторых катсцен), некоторые вещи убрал из функционала РенПи (такое как обратный скроллинг через колёсико мыши), а некоторые добавлял с нуля (как удобный пропуск катсцен из отдельного меню, совершенно иной подход к мини-игре).
Время шло, логика переходов нуждалась в обновлении, для этого нужно было редактировать логику и сами видеоролики. Для редактирования роликов Я использовал Vegas Pro 17. Без русификатора было сложновато, но тем не менее, мне удалось сделать примитивные переходы, которые худо-бедно вписываются в игру и в общую логику повествования. Там были тоже свои заморочки - например, нужно было правильно рендерить видео, чтобы оно не расходилось с расширением остальных видео, для этого Я создал отдельный сценарий рендера:
И скажу сразу про звук, по моему мнению, для такого вида работ вполне хватит редактора Audacity, он закрывает все базовые потребности.
Я сделаю небольшое отступление и скажу, что чем сильнее Я погружался в разработку на РенПи, тем сильнее понимал, что данный движок хорошо подходит под классические Визуальные новеллы, а для работы с видео и форматом FMV игры он имеет ряд особенностей, которые могут перетекать в практические проблемы. Например, пришлось создавать отдельные функции для воспроизведения видео, звука в них, положение на экране, создание условий пропуска, остановки воспроизведения и так далее. Скажу, что это было, мягко говоря, изнурительно и затруднительно. Но Я как чайник - пыхтел как мог.
Ну а мы потихоньку приближаемся к отдельному этапу разработки - созданию мини-игры в шашки. Я специально оставил её на конец разработки, т.к. понимал, что это отдельная работа, на которую можно переключиться тогда когда предыдущая работа будет выполнена. И вот, когда логика игры была выстроена на 95-97% Я приступил к шашкам...
Оригинальные шашки не блистали инклюзивностью и разнообразием графики. Но надо отдам им должное - ИИ оригинала мог дать фору сегодняшнему, разрывал мои шашки только так.
Я начал с визуала - воплотить для начала саму сетку, сами шашки и просто положить их в клетки. У меня не было идей и виденья как это сделать в РенПи, но ГПТ мне помог и с этим - именно ему принадлежит идея разбить сетку на значения и просто менять их в зависимости от её статуса.
Оригинальная сетка уже была кривой сама по себе и наша прямоугольная сетка упрямо не хотела ровно ложиться на неё - постоянно наши поля съезжали
Мучаясь с оригинальной сеткой пару дней Я решил создать с нуля новую и после поиска в интернете нашёл нормальную ровную сетку:
Перенеся шашки/дамки и их статусы в игру, Я приступил к логике ходов. Поначалу, тестируя ходы, итоги игры и общий вывод логики в основную ветку, Я играл сам с собой, доводя вид шашек, ходов, звуков ходов, вывод текста-статуса до нормального состояния. В итоге получилось вот так:
На половине реализации, играя всё время белыми, Я обнаружил, что в игре мы должны играть чёрными....
И опять Я стал переделывать, уже в который раз - теперь обозначение в логике шашки w - на визуале чёрные, а b - белые...
Закончив с этим, Я перешёл к тому, чего раньше делал - написанию простого бота для игры. Его создание и полировка тоже потребовала много времени, но как бы Я не старался, мне не удалось создать сильного противника. Дело в том, что Я искал золотую середину - чтобы бот не был таким жёстким как в оригинале и чтобы не был полным профаном. Получилось на самом деле, так себе - бот всё-равно использует случайную тактику, но если ему повезёт и игрок зазевается, то он сможет одержать победу. Поэтому если нельзя усилить логику бота, Я решил продлить сам матч - серия до 2 побед хорошо под это подходит.
Как мне кажется, результат получился удовлетворительным, особенно на РенПи.
Закрыв уже полностью логику игры, пофиксив баги, очапятки, создав дополнительное меню, и финал, Я решил переходить в новое для себя пространство - оформление интерфейса.
Оригинальный интерфейс был очень примитивным, но свою задачу выполнял хорошо. У меня же, из-за РенПи появилось огромное количество экранов и пустого места, которое надо было чем-то заполнить. Каждый экран Я переделывал, у меня почти не осталось стандартных экранов. Например, экран Настройки Я обрезал, оставив только нужные функции
Как видно, внизу было неприлично много места, поэтому Я решил добавить одного из персонажей. Об этом чуть ниже
Тоже самое касалось и других экранов, например Сохранение:
Закончив с этими экранами, мне надо было добавить туда контент, иначе они выглядели бы как-то пустовато... И для этого Я снова вышел в область, в которой вообще не разбирался и там уже у меня снова упали руки, уже в 3й раз...
Рисовать Я не умею, создавать модели в 3Д, это вообще треш, поэтому единственный для меня вариант был создание изображений через нейросеть. Я стал копаться в этом вопросе, чтобы она соответствовала моим критериям - создание изображений реалистичных людей на основе загруженных фото, например Image-to-Image (img2img) или Stable Diffusion, и создание контента 18+. Однако, Я быстро понял, что контент 18+ не так-то просто создавать на основе загруженного материала - все доступные нейронки уже сильно ругались на то, чтобы создать человека женского рода в плавательном костюме, поэтому создание такого контента Я отложил уже до следующих проектов, мне удалось, однако, создать всего 2-3 изображения, которые были внедрены в игру, остальные тестовые изображения не прошли по разным причинам, и мне жаль, что так получилось - там были неплохие картинки. На удивление, более лояльная к таким запросам была именно Sora, помянем этот сервис.
Каждый элемент главного меню кликабелен и имеет свою анимацию, которая пересекается с областью других кнопок, было много заморочек, но использование маски смогло закрыть косяки. Маска - это когда под твоим изображением есть зона, которая показывает курсору что именно здесь можно кликать. Именно эта зона называется маской.






Изображения и их маски
Для редактирования курсора Я использовал RealWorld Cursor Editor - очень простая программа и хорошо реализована.
Всё это продолжалось до апреля 2026 года, когда был построен первый рабочий билд Я отдал его своим друзьям для тестирования, но за пару недель они нашли только одну опечатку - существенных багов не обнаружилось или вообще не искалось.
Также Я пытался получить добро на рекламу комплекса, который был в оригинале, но администрация, увидев контент игры, отказалась. Ну да ладно.
А что сейчас? На данный момент мне удалось создать свой блог на Бусти и выложить этот и мой предыдущий проект туда, а также выложить его на pornolab.net , где его на 9.05.26 скачало 33 пользователя. Есть версия также и для МАС.
В завершение хочу сказать самое главное - если ты разработчик, то не опускай руки. Сегодня есть много инструментов которые могут существенно облегчить тебе путь, например мне очень сильно помог ГПТ. Да, это изнурительно, тяжело и муторно, болит голова и есть желание бросить, но таков путь, особенно если делаешь всё в одиночку. Также нужно держать в голове схему логики, схему последовательности работ над проектом и двигаться по реализации одной задачи, не распыляя ресурсы сразу на 5-10. Всё у тебя получится, ведь получилось и у меня, хотя Я ни разу не профессиональный разработчик.
Я хочу поблагодарить всех тех кто играл в мои проекты - сам этот факт говорит о том, что моя работа не была проделана зря. Я открыт для конструктивной критике и предложениям. Спасибо что дочитали.
Ссылка на игру для Вин https://gofile.io/d/Ul2ssj
Для МАС https://gofile.io/d/peQiLd

















































