История разработки сборки. Каков был смысл для меня и для вас?
Зима. В школе ещё не объявили карантин и несколько бедных, ещё не заболевших старшеклассников, сидят во время перемены и занимаются каждым своим делом. Один из них угрюмо листает ленту в телефоне, его товарищи не пришли в школу и кое-как он коротает время. В ВК школьник видит в ленте запись группы. Это запись каких-то студентов, что делают моды на новеллу для "задротов". Себя они прозвали "Endless Horizons". Они уже выпустили два дня "Одиночки", "Лимб" и уже готовят третий, завершающий историю день этой самой "Одиночки". Школьник, конечно, обрадовался. "Лимб" был хорош, но уже долгое время он всё же ждёт завершение истории для одного из самых жестоких и атмосферных модов в мастерской Бесконечного лета.
Где-то узнали себя? Ну, тогда у нас больше общего чем кто-то из вас мог полагать.
Так вот, когда всё улеглось, новости уже прекратились, то довольно неожиданно появилась локальная новость о другом моде, куда глобальнее и с развитием всех тех аспектов, что меня когда-то зацепили. Я уже сам студент и как-то хотелось отблагодарить ребят за подаренные эмоции, и в голову стукнула интересная мысль. Сергей, у тебя же самого зреют ростки какой никакой истории для новеллы, почему бы тебе не получить практические навыки и не сделать "подарок" этим мододелам, м? А подарок такой был: я делаю сборку модов и оформляю их как отдельную игру от мастерской и, правда без букета, преподношу разработчикам или скорее комьюнити в целом. Плюсов несколько, я изучаю код-базу этих модификаций и получаю практические навыки в ренпае, заодно подтягиваю знания по пайтону, которые мне нужны для универа. В ноябре прошлого года я пишу о задумке, главе проектов Александру, куда более известному по его же фамилии Русак, о планах. Мне говорят: давай, парень, ради бога, делай. С огромным энтузиазмом я сел за компьютер, скачал ренпай и...
Я забил.
Ничего я не знал в том, как мне претворить мысль в какой-то продукт. Звучит не сказать сложно, но путей было столь много, что я в итоге потерялся. Начинал с того, что хотел с нуля переписать код, да так, чтобы работало. Плохое решение по причине, что мод настолько плотно взаимодействует с материалами и кодом игры, что выковыривать механики по одной и их переписывать займёт неприлично много времени. Тогда я решил взять все исходники "Бесконечного лета" с гитхаба, всунуть в них моды и заменить главное меню игры на простой выбор модификации. Так куда лучше, однако...
Ничего не заработало.
Игра банально не запускалась, была какая-то проблема с поисками материалов: картинок, музыки и других бинарников. Я так и не решил проблему и трусливо бросил затею.
Позже я поиграл в игру и решил для неё сделать смешной мод. Игра была на движке Unity, однако обучающих материалов не найти. Всё было мало-помалу или на английском и мало, или надо заниматься действием со своим крутым термином - Reverse Engineering. Только весной я одёрнулся и реально вернулся к идее сборки.
К тому моменту я понял причину проблемы: надо переписать пути для всех файлов, так как они хранятся уже не в мастерской, а внутри игры.
Так было:
Так надо:
Уж после этого я обрёл смелость заниматься сборкой. Только вот работа уже сделана, а я даже никаких навыков толком и не получил. Я всего слегка изменил главное меню и вставил моды в исходники. Выглядело тогда это примерно так:
Согласитесь, как-то мало работы. Мне было как-то даже стыдно говорить, что я что-то сделал и начал думать над реальными изменениями.
Ну и что я могу сделать?
Пока я сосредоточился на вопросе, пришлось открыть текстовый документ и начать записывать:
1. Тебе необходимо нормальное главное меню, а не это позорище.
2. Пофикси проблему с курсорами, они раньше менялись, а сейчас нет.
3. В прологе "Одиночки" появляется странная фраза: "Ну и как?". Надо её убрать.
4. Добавь элементы внутриигрового меню, которых нет. Да добавь всё, чтобы и следа от исходников Бесконечного лета не осталось. У нас как бы серьёзные моды от серьёзных ребят.
5. Игрокам нужна старая музыка, ты это знаешь. Сделай выбор между новой музыкой из лимба и старой, ради которой ты даже фильмы смотрел, где есть эти саундтреки (фильмы хорошие, кстати).
6. Нужно перефотошопить и переписать дисклеймер, чтобы всё было официозно и по-взрослому.
7. Измени логотип "Бесконечного лета" на логотип "Endless Horizons". И не забудь про название окон игры!
Примерно так и выглядел чеклист по сборке. Оригинального документа не осталось, мне программа по лабораторной работе тогда почти весь жёсткий диск съела) (Не делайте менеджер файлов с рекурсивным удалением папок без тщательных тестов, не будьте как я)
Ох, как же всё круто поменялось. Тогда меня было не остановить от разработки. Я вставал не выспавшийся, ходил до универа и обратно, садился за комп и делал дела по сборке, по порядку решал описанные задачки и глубокой ночью ложился спать. Круг замыкается. Длилось так почти месяц? Из-за такого графика появились проблемы с учёбой (о режиме сна можете не переживать, он и так находился в глубокой заднице, ему и там нормально), ведь я не занимался дома. Только вот в тот момент меня это как-то не парило.
Угумс, пора расписать как всё реализовывалось по этому чеклисту.
1. Тебе необходимо нормальное главное меню, а не это позорище.
Хорошему главному меню нужна хорошая музыка. Мало кто поспорит, что в "Одиночке" и "Лимбе" была плохая музыка, но нужно что-то по настроению. Так-с, подожди... А какое настроение для моего меню? Кровавое настроение меню как в одиночке? Атмосфера "Матрицы", лёгкого футуризма как в лимбе? Не, это уже есть. Нужно что-то их объединяющее. В двух модах, как мне кажется, прослеживается тонкая тема меланхолии. Меланхолия по невозможности вернуться домой, стать вновь нормальным для социума человеком и жить, правда, человеческую жизнь. Завести семью, возможно путешествовать и видеть что-то кроме сраных ворот лагеря после каждого витка и тупой, как пробка, помощницы вожатой. Интересно, а что такое пробка? Или меланхолия из-за проживания в иллюзии, тщетной попытки выйти за границы, обретя волю. Как итог, ты не только её не обрёл, но и вертишься в калейдоскопе однотипных сценариев с однотипными актёрами. Сценарии бессознательно берёшь из просмотренных фильмов, книг, аниме ещё прямиком из давних пор, когда ты жил как паразит в своей однушке и ждал изменений. От такого хочется лишь всплакнуть.
...
Эврика! У меня в главном меню будет серый фон перекошенных ворот, а ещё идти дождь. Ворота будут символизировать начало из двух историй, а дождь и серость вопят о своей меланхолии. Кнопки я как раз сделаю на манер новеллы "Когда плачут чайки", где при наведении на них появляется серое окошко с текстом. Ну, Серёга! Пора открыть фотошоп для куда более глобальных идей, нежели создания однодневных мемов и делать материалы для меню. А вообще, я же написал в начале про выбор музыки, так что с ней? После прослушивания всех саундтреков модификаций я остановился на этой:
Unfamiliar Ceiling
Good Morning, Morgan
0:00
3:33
Если аудио бусти не открывает, то откройте видео в ютубе по подсвеченной ссылке. Из всех саундтреков оно должно выбрать нужный таймкод.
Как я писал выше о настроении меню, то "Unfamiliar Ceiling - Good Morning, Morgan" отлично ему соответствует, заодно и звучит как промозглая, серая погода. При том спокойная и цикличная - то, что надо для главного меню. Так что добавляйте саунд в свой плэйлист, будем унывать вместе. Во времена разработки мне слишком часто приходилось её слушать, однако до сих пор не надоела, что удивительно.
Одно это меню уместилось в 450 православных строк, в него входят меню загрузки, сохранения, настроек, выхода и всего-всего, в общем. Итоговый результат приложен в видео:
Окно с информацией потом дополнительно расписывали с Сашей. Туда в аккурат влезла ссылка на коротенькую новеллу "С Днём Рождения!".
2. Пофикси проблему с курсорами, они раньше менялись, а сейчас нет.
Тут отдельная хохма и танцы с бубнами. Эпопея длиной в целый день с глупой и совсем не интуитивной концовкой. Думаю вы заметили, кто играл в модификации до обновления Лета, что с курсорами какая-то лажа. Где они? Объясняю: инструкция, которая добавляет какой-то курсор в "словарик" неправильно использовали. Её применяли в функциях, которые отвечали за замену игровых меню, когда вы тыкали на какую-то из двух модификаций, и, соответственно, меняли всё обратно, когда из модификации выходили. Неправильное использование заключалось в переопределении этого "словарика с курсорами" прямо во время игры.
А так нельзя делать.
В начале запуска ренпай инициализирует все используемые материалы и записывает в ячейки оперативной памяти информацию о материалах, чтобы во время исполнения инструкций добраться до них и задействовать. Стандартный курсор прямо во время игры много раз перезаписывался на курсор из "Лимба" или "Одиночки". Почему так раньше работало? Ребят, я не знаю, правда, это какая-то эзотерика. Никогда не переопределяйте материалы для инициализации в своих скриптах во время выполнения кода игры. Если ваш компьютер бу-бух после этого, то пеняйте на себя.
За смену курсоров отвечает глобальная переменная default_mouse. В неё вы и должны записывать какой курсор вы хотите отображать, но все курсоры и путь до них вы должны прописать заранее, чтобы вся информацию записывать в момент инициализации и усё. Какой колодой играть надо решить заранее и боле не подтасовывать. Для инициализации собственных материалов я заранее подготовил свой файл с кодом, который назвал init.rpy.
Теперь всё будет нормально: я переопределю словарик со всеми курсорами и буду их менять, перезаписывая названия курсоров в переменную default_mouse. Так я тогда сделал и запустил игру.
Только вот ничего не поменялось и проблема с курсорами не исчезла. Долго я потом соображал в чём дело-то. Сначала подумывал, что причина в старом меню. Оно возможно и так, до сих пор не выяснил и сейчас нет желания выяснять. И всё же одно я точно понял: при переходе на экран любого из меню курсор менялся на стандартный от Лета. Однакож курсоров ещё два и одновременную смену курсоров в разных меню с таким подходом я организовать не могу. Я переставлял код местами, что-то дописывал, где-то удалял, много искал информации по решению.
Да как-то без толку. Танцевать подустал, а бубны заржаветь успели.
Знаете как я решил эту проблему? Те решения, которые не задуманы разработчиками движка считаются костылями. До такого нормальный разработчик ну просто не догадается: я создал пайтоновскую функцию, описал, что там будет изменяться глобальная переменная и, вы не представляете, меняю переменную подстать на название курсора, которую я указываю в параметре. Переменная под шубой. Пожалуйста, костыль собственного приготовления на жопном огне.
Но блин, ты же и так эту переменную менял, что поменялось? Да в том и хохма, что всё поменялось. Кто-то верит во что-то потустороннее или магию, пока не поймёт причину, идею произошедшего, чтобы заполнить этот вот страх неизвестности. Во всех сферах есть такой интересный аспект. Программирование тут, пожалуй, не то, что не исключение, скорее лидирует. Для меня это пока так и осталось магией. Буду и дальше верить, что Пайтом ниспослал благословение бедному разработчику, который понимает, что ничего он не понимает. Блаженное неведение ласково застилает глаза от всего того хтоничего ужаса, что происходит на адской кухне ренпая.
А вот и спасительная функция в самом конце, можете ей в мыслях спасибо сказать, даже не мне. Конец эпопеи.
3. В прологе "Одиночки" появляется странная фраза: "Ну и как?". Надо её убрать.
Кто-то под подкастом про сборку от Саши написал, что рад, так как убрали эту назойливую надпись. Пожалуйста, бро, я всего лишь зажал кнопку бэкспейса на одну секунду.
Подозреваю, что тег с надписью существовал вплоть до старого доброго 2007 года, а потом вдруг перестал выполнять свою функцию и просто нагло отображается текстом в самом начале мода.
4. Добавь элементы внутриигрового меню, которых нет. Да добавь всё, чтобы и следа от исходников Бесконечного лета не осталось. У нас как бы серьёзные моды от серьёзных ребят.
Одиночке не хватало своего меню с настройками и истории диалогов, я это знал. Как-то чудно, что всё остальное заменено, а про это забыли. Ну и я принялся что-то с этим делать. Мне понравилось как были реализованы меню с сохранениями и загрузкой, а именно их визуал. Концептуально оно всё подходило проекту: тускло-серый арт с парком и такой же, но уже прозрачный с видом автобуса изнутри и тенями множества пионеров. Всё это может указывать на "тлеющие" воспоминания о мире снаружи и внутренней неосознаваемой тяжестью грехов постоянных убийств невинный подростков (хотя давайте закроем глаза и сделаем вид, что всем персонажам по 18 лет как того хочет сценарист).
Энивей, нужно что-то вот такое, но для меню настроек, не будем ломать концепт. Сел я за фотошоп и вышло у меня вот что:
Ну... Прикольно, только в чём замысел, ты просто будешь всё повторять, лишь обесцветив случайную картинку из лета?
Да.
Только не эту, она, как кажется, здесь неуместна, лучше переделать вот в это:
Во, другое дело, этот фон более подходящий. Как думаете, почему?
Хотелось бы предоставить оригинал фона без этой рамки, но вспомните, что я писал в начале? Напоминаю, у меня программа большинство старых исходников съела.
*Омномном*
Осталось лишь дорисовать иконочки и написать код, чтобы меню функционально работало и делало своё предназначенное дело - менять настройки.
Во...
С историей диалога всё было проще: я перекрасил материалы из Лимба в цвета "Одиночки" и переписал код. Дальше пошли эксперименты над "Лимбом".
У него нет: меню с сохранением и загрузкой, ну и меню с настройками. Посидел, почесал репу, сидя в фотошопе, и из имеющихся материалов вышли такие варианты:
Третья картинка представлена как материал по причине... Ай, сейчас скажу. Когда я презентовал проект Саше, ему не особо понравилось меню настроек, впоследствии пришлось перебрать несколько вариантов, пока итоговым не стал этот:
Та-дам! Цвет ничего не напоминает? У кого случилось воспаление СПГС? Все полосочки и иконки взяты из исходников "Лимба", честное пионерское (а иконки для "Одиночки" из частиц для генератора, которые используются в ночах и главном меню).
Одиночка боле не тоскует по нехватке меню, а звук скримеров от Царицы можно выключить теперь уже в тематическом меню.
5. Игрокам нужна старая музыка, ты это знаешь. Сделай выбор между новой музыкой из лимба и старой, ради которой ты даже фильмы смотрел, где есть эти саундтреки ("Синистер" страшный, блин, фильм).
Чтобы найти старую музыку мне не надо было лезть в старые скважины и искать ископаемые. Мне тут повезло: музыка "Одиночки" у меня уже была легаси, так как ещё давно был озадачен её возвращением в моё Лето (однако, для желающих играть именно в мастерской, есть это обсуждение на странице мода по возвращение старой музыки).
В проекте я создаю две папки музыки: для старой и новой. Между ними и будем переключаться.
В вопросах переключения есть загвоздка: не забываем, что я говорил про инициализацию файлов в игре. Просто так в игре заменить одну музыку на другую нельзя, однако просто нельзя - это не есть невозможно. Исправить это недоразумение можно каждый раз проводя новую инициализацию файлов после переключения "режима" музыки в меню настроек главного меню. В этом поможет эта команда ренпая:
renpy.reload_script()
Causes Ren'Py to save the game, reload the script, and then load the save.
This should only be called during development. It works on Windows, macOS, and Linux, but may not work on other platforms.
Как написано из документации, она перезапускает процессы в игре и заново инициализирует файлы. Использовать её в готовом продукте ой как не рекомендуется (но я использую и всё работает в рамках приличия).
Помимо этого нужен переключатель - им будет наша постоянная булева переменная ed_old_music. Кто знаком с разработкой на пайтон уже догадывается, что она делает, но я скажу наверняка и для всех. Её задача запоминать состояние музыки в "Одиночке". Она имеет два состояние - True или False. True будем считать за включение старой музыки, а за False - оставление новой музыки. Такие переменные нужны для любых переключателей в вашей новелле, ну например включение/выключение 18+ сцен. Потом, в зависимости от значения подобных переменных, вы создаёте условия в своём сценарии или коде. Хентай патч в БЛ как раз представляет собой файл со скриптом, где мы игре говорим задать значение переменной hentai в True, так как изначально она в игре присутствует, но стоит в значении False).
Так что хентай в БЛ не появляется магический образом из одного файлика, он там просто заложен изначально. Ликбез окончен, двигаемся к юридической теме.
6. Нужно перефотошопить и переписать дисклеймер, чтобы всё было официозно и по-взрослому.
Я знал, что игре нужен дисклеймер, пусть у оригинальной игры и не такая страшная лицензия - Creative Commons всё-таки. Чтобы более точно мне знать, что я могу делать, пришлось обратиться к инициалам лицензии - CC BY-NC-SA. Советую прочитать кто думает или разрабатывает модификации для Лета (надевайте галстуки, у вас так-то серьёзная работа).
Кое-что нужно было дописать после наших совместных, с Сашей, правок, чтобы у всех-всех авторов не было претензий (хотя я сомневаюсь, что кто-то из авторов, кроме старой команды, поиграл/поиграет в сборку). Всю эту ситуацию можно сравнить с тем, что проект надел галстук и жилетку, но в остальном так и сидит голый в трусах.
7. Измени логотип "Бесконечного лета" на логотип "Endless Horizons". И не забудь про название окон игры!
Когда игра готовится к релизу на ПК или андроид, то ей нужна своя иконка, на которую вы тыкнете и запустите игру. У всех она должна быть, чтобы выделялась на рабочем столе или где вы вообще там храните ярлыки игр.
Для смены иконки новеллы со стандартной на свою надо эту иконку, во-первых, иметь при себе. Во-вторых, назвать её icon и задать формат файла .ico, а после кинуть в директорию проекта (не в папку game!). Последний шаг - создать дистрибутив. Теперь в вашей новеллы есть своя иконка. У макинтоша свой формат для иконок - .icns. Название остаётся тем же.
За название окна и его иконку отвечает этот участок кода:
config.window_title - название окна.
config.name - не особо важно, это для трейсбеков нужно.
config.window_icon - иконка окна.
config.windows_icon - почти то же самое, что и команда выше.
Итог разработки по чеклисту и дальнейшие правки.
Я остался доволен результатом и по сей день, классный опыт. Те дни у меня ассоциируется с тёплой и солнечной весной, когда я шёл весь в мыслях о том, как я решу задачки по сборке, когда вернусь домой.
Когда все пункты закрыл и потестил, что вышло - пошёл писать во ВКонтакте сценаристу и главе этих двух проектов, Саше. Я ожидал многое, но больше был страх, что мой труд просто не примут или не расскажут о нём на общую аудиторию. Страх оказался иррациональным, ведь всё говорило об обратном:
1. Тебе уже дали согласие.
2. Ты вложил в это силы и всё не так, как было в начале.
3. Автор добр к своим фанатам и к их творчеству на тему его работ.
После принятия работы мы стали готовить проект к его выходу. Были правки цветов в меню настроек "Лимба", дописывание дисклеймера, добавление ссылок. Это всё мелочи, хотелось поговорить подробнее лишь об одной правке - погода в главном меню.
История одного костыля.
Сейчас, когда имеется возможность поиграть, помимо ещё музыки, в главном меню идёт дождь с грозой, у него есть звуковое сопровождение. Раньше был просто дождь, без звуков и эффектов. Добавить такой интерактив была инициатива Саши. Когда приступил всё это добавлять, то выяснил одно но - звуки дождя не проигрываются вообще. А теперь, ребятки, готовьтесь слушать лекцию о том, как работают экраны в ренпае.
Экраны в ренпае - это часть архитектуры движка. Они нужны для создания отображаемых интерактивных объектов, такие как внутриигровое меню, главное меню, диалоговое окно и меню выбора. Экран по сути контейнер для разного рода сущностей, которые мы хотим отображать. Выдыхайте, лекция окончена.
А нет, ещё рано, я кое-что вспомнил. Если метки сценария в новелле работают больше в парадигме событийно-ориентированного программирования, когда код выполняется только после щелчка мыши и переходит к следующей фразе сценария, то экраны - это больше про игровой цикл. Название говорит само за себя. Тот экран, код которого вы написали, будет выполняться, в теории, бесконечное кол-во раз, пока этот экран не закроется. Диктуется это частотой кадров в игре (сколько кадров в игре, столько код и будет выполняться в секунду). Помните как физика старых игр вела себя неадекватно при высоком FPS? Частота кадров в ренпае диктуется вашей герцовкой монитора и что в игре вообще происходит. Если это статичное меню без действий, то отрисуется только один кадр. Если это меню с эффектами и генераторами частиц - будет отрисовываться столько кадров, сколько ренпаю надо (обычно герцовка монитора).
В меню 144 FPS из-за эффекта падающего дождя (чтобы обеспечить его плавное падения, ренпай использует на полную герцовку моего монитора)
Идёт прокрутка текста. Это динамическое действие, поэтому вы видите информацию о 144 кадрах в секунду.
Ну и тут отображается 5, так как ничего не происходит в игре. 5 кадров ему надо, полагаю, из-за каких-то своих внутренних процессов под капотом.
Всё это педантство было, чтобы показать как я вообще к решению-то пришёл в итоге. Так я себе и доказывал, что экраны - это бесконечный цикл и надо что-то с этим делать. Ведь из-за этого факта звуки не проигрывались по причине, что они так часто начинают проигрываться, что не могут начаться. Это всё равно, что вы 144 раза в секунду включаете на самое начало свою любимую песню.
Исправил я это таким кодом:
Нас интересуют 8-ая и 11-15 строки (на остальное можете особо не обращать внимание).
default flag = renpy.sound.is_playing(channel="ambience")
Строка кода объявляет переменную, которая может в случае чего меняться. Она проверяет, играет ли эмбиент дождя у меня. При первом запуске меню - у неё значение false.
if flag == False:
renpy.sound.play(sound_rain, channel="ambience", loop=True)
else:
NullAction()
Это условие впервые включает звук дождя, если до этого он не включался. В случае, если звук дождя включён - ничего не делаем.
После первого прохода по циклу экрана (то есть по всему его коду), он уже не будет включать звук дождя. Флаг просто перейдёт из значения False в True. Любуйтесь, такая вот история у одного из нескольких костылей в проекте.
Релиз.
Всё то, что стоило отполировать, теперь отполировано и мы оба думали как же представить релиз. Мысль была провести стрим, но остановились на подкасте, где будет обзор основных изменений в сборке с ответами на вопросы по сюжетам и постом в группе Осени. После я хотел тактично дать себе от ворот поворот, ведь больше мне особо нечего делать и я со всем закончил. Да и тем более моя малёхенькая мечта пообщаться с главой проектов осуществилась и мне ответили на мои вопросы по проектам в подкасте.
Ну а потом мне сказали не разбредаться и, по желанию, заниматься дальнейшей поддержкой сборки. От чего я сильно обрадовался, ну прямо клише из фильмов.
Дальнейшее обновление.
Когда летом пришла пора продолжать заниматься сборкой, то в скрипте я сразу выставил версию в значение "1.05". Саша предложил мне кое-что переделать и добавить, а именно:
1. Использовать фанарт Тихони от неизвестного мне художника.
2. Связаться с этим самым художником, чтобы что-то новое было нарисовано для "Одиночки". У него как раз была такая потребность.
3. Корректировки сценария под стать артам. В этот пункт вошло и камео Ульянки-гнома из фэнтези ветки "Лимба".
Как я люблю, давайте по порядку с первого.
Вашему вниманию, первый фанарт Тихони. Как я и Саша думаем, эта работа определённо стоила того, чтобы добавить в сценарий "Одиночки". Хм, а только вот куда? Ну, этот вопрос решился позже, а пока надо связаться с художником и вымолить какой-нибудь арт.
Художника, как оказывается, зовут Виталий. Привет тебе!
Тогда мною было предложено нарисовать Тихоню для сцены костра на пляже. Той сцене не хватало конкретики образа Тихони: большую часть сцены у неё был или затемнённый, или обычный спрайт. Прошло какое-то время, арт был готов и стало ясно, что он как-то не подходит для той ветки сценария. Были обе попытки, мои и Саши, его вставить посредством магии фотошопа, но как-то тщетно.
Сделали мы потом вот как: первый фанарт вставили на место нового, как раз в ту ветку с пляжем, а новый перенесли на романтическую ветку с игрой на гитаре. Клацания мышек, использование сочетаний клавиш и немного рисования на графическом планшете сделали своё дело.
Вот мои результаты:
А вот результаты Саши:
Одних артов было мало и я слегка подкорректировал сценарий для сцены с пляжем, чтобы не создавалось логических ошибок из-за внедрения новых артов.
Бонус:
С артами по "Одиночке" всё, надо и "Лимбу" внимания уделить. В бородатые времени разработки "Endless Horizons" не только забыли сделать кое-какие свои внутриигровые меню, но и ввести персонажа, который появился уже гораздо позже "Лимба". Этим персонажем была бородатая Ульяна-гном.
Мне дали волю самому вписать её в сценарий фэнтези ветки, но я сдрейфил и дал "Отцу" самому "готовить". Чуть погодя, выслали фрагмент сценария и я написал для него скрипт. Сценарий для Ульянки оказался маловат, впрочем как сами гномы, и я всё же дописал часть сам. Если дёрнет ностальгия и вы вернётесь в "Лимб", то должны встретить данную сценку, если у вас стоит версия сборки "1.05".
Помимо артов и сценария я вспомнил ещё один технический косяк. Косяк с фреймами безумия.
Такое дело, что они никак не хотели пропадать вплоть до конца третьего дня, хотя такой необходимости позже в них нет (лишь раздражают глаза). Эффекты фреймов имели смысл только в начале второго дня, где для них были прописаны условия, при которых герой начинал выдавать "безумные" фразы, но не после, когда его уже "отпустило". Механика крайне старая, ещё когда только вот-вот второй день вышел и видение концепта, скорее всего, было чуть другим, нежели что мы имеем сейчас.
Исправление не представляло труда: мне нужно найти момент, где в них отпадает необходимость и прописать их выключение, когда этот момент наступает. Этот фрейм считается экраном, а для отключение экранов в ренпае есть отдельная команда - hide screen 'название экрана'.
Вся работа проделана и вышел второй подкаст про обновление. В нём тоже были вопросы по сюжетам, но уже не мои, а подписчиков. Такие дела.
Планы, которым не суждено было свершиться.
Никто, кроме нас двоих, не знает, но должна была выйти версия сборки "1.1". Хотел я сделать эти вещи:
1. Упрощение геймплея "Одиночки".
2. Сделать для неё свою карту прохождения.
3. Добавить ещё артов от Виталия.
Я в курсе, что геймплей "Одиночки" для любителя. Кто-то хвалит, кто-то ругает. Это не пик геймдизайна, скорее всего поспешное решение, но что-то в этом есть, не считаете? В круговерте повторяющихся веток в попытке дойти до третьего дня, ты теряешься и забываешься (ну прям как главный герой). Чтобы как-то сгладить углы ты, игрок, скорее всего использовал сейвы в момент выборов и откатывался обратно после концовки 1-2 дня. Это грамотный подход, он не давал тебе затерять какую-то концовку и идти дальше по сюжету. Однако мне не кажется это всё правильным. Сохранения, по моим личным взглядам, нужны лишь, чтобы вернуться к своему прогрессу, а не чтобы не теряться в ветках сценария. В "Лимбе" грамотно тогда сделали, что добавили карту прохождения. А раз у них схожий геймдизайн, то и "Одиночке" нужна своя карта.
Эта идея перекликается с другой, более главной: упрощение/изменение геймплея игры. Смысл хорошо передает этот проект в фотошопе, который я не доделал и так и не перенёс в код.
Карта игрокам была бы доступна всегда в главном меню мода, а выбор режима прохождения надо было выбрать обязательно в начале прохождения. В той карте вы бы знали, где искать буквы для секретной концовки и как выйти в те или иные концовки (без помощи каких-либо обсуждений в стиме, разумеется). Если вы читаете статью, то я уже создал руководство с блок-схемами карты прохождения "Одиночки". Вот ссылка, используйте на здоровье. Дополнительно к этому создам ещё обсуждения в двух модах с ссылками на данную статью и саму сборку (кто знает, сколько людей впервые наткнутся на это вот всё).
По поводу артов. Виталий к тому времени ещё нарисовал фанартов для "Одиночки" и меня попросили внедрить в неё контент.
Этого я так и не сделал. Виталий, ты на меня не зол? 🥺
В моментах, когда я этим занимался - произошла катастрофа. Я устанавливал Arch Linux как вторую операционную систему, но неправильно разметил жёсткий диск, вследствие чего операционка форматнула мой жёсткий диск и заняла место моих ныне покойный файлов. Потёрся не только проект Сборки, но и мои собственные наработки и планы сценария. Теперь всё важное храню на облачных дисках. Работа по обновлению была утеряна, так как я не делал мелкие коммиты в проект, хотя стоило бы.
Внимательнее размечайте пространство для второй ОС, если хотите, чтобы она стояла на одном диске, где у вас лежат остальные файлы.
F.
Послесловие.
Первая статья по пайтону и ренпаю была довольно мала по размеру, так что держите статью побольше. Второй части всё-таки не будет, ведь я написал почти всё и отметил всех. Визуальной информации тут куда больше, надеюсь я прыгнул выше себя прежнего в плане поддержания высокого интереса во время чтения статьи.
Предлагаю такой челлендж в комментах: напишите маленькую историю как вы в своё время познакомились с двумя модификациями и в какой период разработки (начало, середина, релиз). За него вам, конечно, ничего не будет, но мне и остальным, особенно авторам, покажется интересной ваша история.
И да... Ты играл в сборку?
Да.
6 votes
Не-а.
2 votes
8 users voted