исходный код бесконечного лета
Лето, Советы и (не)много кода
Блог по моддингу Бесконечного Лета Официальный новостной портал мода «Советские будни»
Страницы
Гайды по моддингу
Команда «init:» создаст наш блок.
Пришла пора назвать наш мод и сделать запуск из меню «Моды и пользовательские сценарии».
Чтобы наш мод шёл плавно и без проблем, необходимо, чтобы из каждого блока можно было попасть в следующий. Для кинетических модов (моды, которые не имеют выбора и движутся по одной сюжетной линии) вообще не обязательно иметь более одного блока, но можно использовать несколько для красоты.
После этого урока ты уже сможешь написать кинетический мод со встроенными материалами.
Создаём наш запускаемый блок:
Едем дальше. Теперь ты можешь писать любой текст, включать любую музыку и вставлять любые картинки. Как? Очень просто!
Выглядеть это будет так:
Комментарии в коде можно оставлять с помощью #. Движок игры пропускает всё, что написано после этого символа и сразу переходит на следующую.
Ты уже достаточно потренировался с линейным моддингом, но хочется чего-то большего?
Добро пожаловать во второй урок!
Но до этого надо исправить парочку недочётов: остановим музыку.
После указания персонажа, эмоции и типа одежды указываем, за кем должен стоять персонаж. В данном случае на экране у нас только Славя, поэтому пишем behind sl. Если ты используешь far или close, то команда behind должна стоять после. Но обязательно перед with-командой (или at, если она есть).
Исходный код бесконечного лета
Подожди, писать заклинания еще рано, сначала нужно понять, как правильно расставлять слова для эффекта
Структура файла выглядит примерно так:
Команды в блоке ВСЕГДА имеют отступ в 4 пробела относительно команды говорящей нам о начале блока.
Есть несколько команд начинающих блок, пока стоит лишь запомнить то, что после команды, начинающей блок всегда ставится двоеточие (:)
На данном этапе создания мода нам понадобится лишь одна блоковая команда
Существует 2 варианта перейти от одного блока к другому
В этом варианте сначала выполняется первый блок, а затем второй. При этом используется команда
Вот уже знакомый нам пример:
В этом случае если написать в блоке vasya_mod_d1 что либо после jump’a, то игра просто пропустит это
В отличии от прыжка, при использовании этого варианта после полного выполнения блока на который переходит игра, она вернется в первоначальный и продолжит его выполнение после команды. Команда для этого:
Ну и как же без примера:
Окончание блоков, переход к которым осуществляется именно этим методом имеет некоторые особенности, о которых можно узнать дальше
Если к этому блоку ведут jump’ы, то конец блока можно ничем не выделять, если только это не последний блок в вашем моде (Последний блок 1/x концовки). В ином же случае последней командой блока должна быть команда return. Зачем? В случае если это последний блок, чтобы игра могла закончить обработку мода и вернуться в главное меню. Если же на блок привела команда call, то игре просто необходимо знать, когда вернуться в предыдущий блок.
Получается что наш пример call не будет работать и нам придется привести его к такому виду:
Благодаря движку игры, это было реализовано донельзя просто.
Просто в виде команды пишем следующий текст
Все просто, этот ID говорит нам о том, с кем же сейчас ГГ разговаривает
Для текста от автора ID не нужен
Остальных говорящих вы можете увидеть на прикрепленной картинке да, картинка копипаст
Для примера мы попросим поздороваться каждого из основных говорящих
В игре вы встречались с тем, что некоторые слова во фразах персонажей были как-то выделены или вовсе были в ковычках. Для этого используются специальные теги.
Как мы уже знаем, ковычки ограничивают реплики персонажей, так как же нам использовать их внутри этих реплик?
Чтобы ковычки не учитывались игрой, перед ними нужно поставить \
В самой игре при смене местоположения нашего ГГ меняется и картинка на фоне (bg)
Так как же нам показать где сейчас наш герой?
А делается это при помощи команды scene bg
Так же в архиве приложен текстовый файл из которого сразу можно скопировать нужную строку
Вызываются все спрайты командой show
Имя спрайта обычно состоит из нескольких слов, разделенных пробелами
В оригинальной игре имя персонажа совпадает с ID говорящего из предыдущего раздела этого руководства
Если персонаж уже на экране, то повторное использование show будет менять эмоцию и/или одежду
При простом использовании show он будет появляться просто по центру, это можно исправить добавив в конец at
Всего в игре 7 позиций где может находиться спрайт:
fleft, left, cleft, center, cright, right, fright
На приведенном скриншоте были использованы команды:
Так же можно показать персонажа ближе\дальше. Для этого можно воспользоваться атрибутом close/far
На втором скриншоте как раз были использованны эти атрибуты. Команды:
Для того, чтобы убрать персонажа воспользуйтесь
Если вы хотите вслед за этим сменить декорации, то прописывать hide для каждого персонажа не обязательно, команда scene сама их уберет
Тут принцип как и с bg, только надо использовать scene cg
Примеры думаю не нужны.
Мы можем показать спрайты, bg и cg с некоторым замедлением, плавно
Так же есть еще несколько эффектов, о которых речь пойдет далее, некоторые из эффектов можно применить не только к изображениям, но и даже друг к другу!
Чтобы показать наши картиночки более красиво для человеческого глаза, мы можем использовать специальный атрибут. Это будет выглядеть примерно так:
Так же можно группировать несколько обьектов для одновременного начала эффекта
В приведенном примере мы попадем в ночной автобус и перед нами предстанет улыбающаяся Славя, и все это с задержкой в 2 секунды.
Так же атрибут плавности может применяться к другим эффектам.
Если все вышеприведённые примеры Вас не устраивают, можно добавить свой атрибут плавности. Для этого, пропишите его в блоке init.
После этого мы можем использовать наш переход, так-же, как и все остальные.
Я более чем уверен, что вы видели эффект того, как иногда ГГ моргает или вовсе закрывает глаза. Мы можем реализовать подобную возможность!
Будьте осторожны: blink и unblink это разные эффекты, они не могут отменить друг друга
При назначении позиции координаты pos и align можно комбинировать.
Давайте, для примера выведем спрайт улыбающейся Мику слева экрана.
Очень и очень многое. Допустим, анимации.
Вот стоит у нас слева на экране Мику, объявленная в прошлом блоке, но вдруг появилась Ульяна, и Мику из вежливости решила подвинуться чуть правее. Как мы это сделаем? Можно просто задать координаты положения, и Мику «телепортируется» туда, но разве это красиво? Не. У нас другие методы.
Смена положения.
Для смены положния существует 4 метода: linear, ease, easein, easeout. Для начала нам понадобится только linear. Как он работает? Очень просто. После linear мы пишем время в секундах, а после новые координаты в системе ATL.
Пример. Созданим перемещение к правому краю экрана:
Теперь добавим это в наш код.
И импортируем её в код:
Наверное вы и сами слышали, что в «Совенке» никогда не бывает тихо, где-то играет приятная музыка, иногда мы слышим стуки в двери, три раза в день, звук горна собирает всех обитателей у столовой.
Послушать эту музыку можно прямо в игре, зайдя в раздел Галерея
Для проигрывания прочих звуков нам понадобится все та же команда play, только немного в другом виде
Увы, подобрать нужный звук вам поможет лишь базовое знание Английского языка и «метод научного тыка»
Все что мы узнали раньше позволяет нам писать лишь статичные моды, в которых от игрока ничего не зависит. Теперь же нам пора добавить игроку возможность выбора
Если вы хотите, чтобы игра запоминала каждый выбор игрока, то без переменных нам не обойтись.
Объявление переменных происходит в специальном блоке init. Имена и значения у переменных могут быть любые, но рекомендуется использовать короткие английские слова или цифры (цифры только в значении)
Изменение значения переменных будет выглядеть так:
После выполнения данных команд переменная «choice» будет иметь значение «True», а переменная «Count» увеличит свое значение на единицу.
Если вы хотите дать игроку выбор, то вам необходимо использовать специальный блок menu:
В приведенном примере Ольга Дмитриевна попросит нас взять мешок с сахаром, мы же можем как подчиниться и увеличить переменную «good» на 1, так и отказаться, причем в зависимости от нашего выбора события в игре могут измениться
Будьте осторожны: Варианты ответа тоже открывают блок, и если мы не поставим после каждого двоеточие, мод может не запуститься
Поясню данный отрезок. Если значение переменной «good» больше нуля, то игра продолжится на метке «good», если же нет, то мы переходим на метку «bad»
Теперь же мы постараемся реализовать выборы, в которых в зависимости от прошлых выборов персонажа будут добавляться или убираться различные варианты ответов
Иногда по нуждам сюжета необходимо дать игроку выбор куда ему пойти, использование для этого обычного меню выбора выглядит несколько не эстетично, так давайте же научимся ориентироваться в «Совенке» при помощи карты!
Чтобы дать игре понять. когда развернуть перед игроком карту необходимо всего несколько простых команд.
т.е. чтобы при нажатии на клубы мы прыгали на лейбл mymodlabel2 (название, примера ради) нужно реализовать такую конструкцию:
И в конце, выводим саму карту командой:
Показываю пример полностью. Допустим нам нужны три зоны. Сцена, Муз. клуб и Пляж, и каждая ведёт к совим лейблам label1, label2 и label3, для этого мы делаем всё то, что я уже описал выше:
Вполне возможно, что вашем моде вам понадобится персонаж, которого по какой-то причины разработчики не стали заселять в лагерь, что же делать в этом случае? Правильно создать его!
Далее мы присваиваем переменной свойство Character().
Для примера создадим Вашего покорного слугу:
define vladya = Character(u»Владя»)
(прим.: Символ u используется, для отображения русского текста у людей, у которых он не установлен в системе.)
Теперь мы можем использовать переменную vladya в своём моде. Давайте, я поздороваюсь с Вами:
vladya «Привет»
define vladya = Character(u»Владя», color=»#008000″, what_color=»#f1d076″)
И давайте я вновь поздороваюсь с Вами:
vladya «Привет»
Намного лучше, не правда ли?
Окей, окей. Без проблем.
Допустим наш персонаж пересмотрел Ваномаса и теперь после каждого предложения говорит «ёпты блин» (пардоньте, в Стиме цензура, оригинал не работает), можно конечно прописывать после каждой строчки это замечательное словосочетание, а можно использовать команду what_suffix. Давайте дополним переменную:
define vladya = Character(u»Владя», color=»#008000″, what_color=»#f1d076″, what_suffix=u», ёпты блин.»)
Для начала реализуем перед именем вот такую конструкцию:
И после начала нашего мода прописываем:
show screen scr123
Этой командой мы будем обновлять значение переменной vano, каждую 0.1 секунду.
И что-же будет теперь:
И вот уже весь лагерь, включая нашего подопечного уснул. Несомненно вы видели, как в оригинальной игре о начале нового дня нас оповещали даже. не будящие нашего протагониста лучи солнца, а простой монитор компьютера, показывающий нам сколько времени мы провели в этом дивном месте. Чем же мы хуже, давайте сделаем себе такой же монитор!
Для выведения на экран монитора, необходимо прописать две команды:
Вы 100% видели, как в оригинальной игре да и некоторых модах, при прохождении концовок появляется картинка а-ля «Achivement Complted» И хотели бы в свой мод такую же.
Для этого в нужном вам месте вставьте следующие команды
К слову, в БЛ вывод ачивок реализован именно так, но оригинальная функция нам не подойдёт, ибо она подогнана только под уже заложенные ачивки «Лета», так что нам нужно немного её переделать, под более универсальные нужды.
Для этого, реализуем следующую конструкцию в блоке питона.
Теперь, в месте вывода ачивки, надо прописать лишь обращение к функции, и в скобках прописать картинку с Вашей ачивкой в кавычках.
Старайтесь в своем моде задавать уникальные имена блоков и функций, иначе игра не будет знать куда же ей переходить и что выполнять, что зачастую черевато вылетом
Большинство модов, сценарий которых пишется одним человеком-разработчиком мода, да еще и в процессе написания самого мода, забрасываются на очень ранних этапах. Не советую вам начинать писать мод, не имея сценария, иначе это может ударить по вашей самооценке.
Если вам прямо не терпится создать мод, а сценария нет, загляните на «Книгу Фанфиков [ficbook.net] «, там вы вполне сможете найти себе сюжет по душе, только свяжитесь с автором фанфика и узнайте, согласен ли он на создание мода по его творчеству или нет
Вполне возможно, что во время написания мода вы могли что-то где-то не так сделать и теперь у вас выдает ошибку, давайте разберемся в самых частых ошибках.
Решение: Проверьте свой мод на то что везде у вас отступ не Tab, а 4 пробела
Решение: Обычно при этой ошибке еще и указан номер строки, проверьте, закрыли ли вы ковычки на этой строке
Решение: Проверьте, везде ли отступ по 4 пробела
Решение: Проверьте команду в указанной строке
Решение: Проверьте label и jump/call на наличие опечаток
Пишите возникающие у вас ошибки и решения будут добавлены сюда
Для того чтобы игра увидела ваш мод просто обьявите в init: блоке следующую переменную
Проверьте, что ваш мод начнется с метки с тем же названием, что и Mod ID
Раздел был написан Автором руководства, с использованием контента от Владя, с его личного разрешения.
Данное руководство еще не завершено, на данный момент в нем есть все необходимое для создания небольшого мода. Руководство будет дополняться.
Задавайте в комментариях свои вопросы, в процессе ответов на них, руководство будет дополняться
Исходный код бесконечного лета
Есть ли прохождение?
Содержание
Как выйти на рут ЮВАО?
Надо пройти все хорошие руты и Мику
Игра вылетает при запуске, что делать?
Запустить её от имени администратора, снять атрибут «только для чтения», или разобраться с правами на файлы.
Игра перестала запускаться после установки графического патча, как быть?
Сперва нужно удалить распакованные файлы. Для этого зайдём в каталог игры и из папки «game» удалим папку «_release»..
Чтобы корректно установить сам патч, нужно открыть скачанный с ним архив и распаковать содержимое папки «_release» в папку «games» в каталоге игры.
Как включить хентай?
В версии 1.2: включить в меню настроек.
Для Steam-версии нужно лишь скачать [[1]] и поместить файл в папку «%Steam%\SteamApps\common\Everlasting Summer\game\».
Для Android-версии нужно распаковать архив с патчемна карту памяти в папку «su.sovietgames.everlasting_summer\files\». Её местонахождение зависит от используемого устройства.
На Android полностью не работает хентай.Даже после распаковки архива.
На Android патч установил, а хентайных сцен нет, что делать?
И как вообще ввести код на андроиде? Ведь в вашем ответе нужно ввести код,но как?
Какие в игре есть горячие клавиши?
[Стрелка вверх]+[Enter]-меню просмотра прочитанного (можно вернуться на прошлые диалоги и выборы)
Где посмотреть полученные ачивки?
Нажать на сову в главном меню.
Почему у персонажей нет сосков на некоторых артах?
Это особенность игровых иллюстраций.
Подскажите, можно ли как-нибудь изменить размер окна? А то на планшетке полностью не влезает из-за scaling`а.
Кто такой Толян?
Одинокий пионер, выглядящий лет на 40, сидит в самом дальнем правом углу столовой. Пришёлся по нраву анонимусу, который придал ему личность и характер.
3. Переместить распакованные файлы в папку game бесконечного лета.
4. Создать ярлык к unrpyc.py и перетащить на него нужный тебе rpyc файл
5. Вместо rpyc появляется rpy, который открывается любым текстовым редактором.
6. Так же есть видео урок на Youtube, где подробно объясняют и показывают примеры.
Как устанавливать моды?
Есть ли сейв со всеми открытыми артами и концовками? И как его устанавливать?
Для перехода к конкретным концовкам можно воспользоваться модами.
А где найти ноты/табы?
Где скачать саундтрек?
Почему нет трека sparkles?
Его автором не является ни один из двух основных авторов музыки, поэтому он не входит ни в светлую, ни в тёмную сторону альбома.
Как запустить под OS X или GNU/Linux?
В терминале перейти в директорию с игрой, например:
Как установить моды на Android?
Есть несколько способов установки модов на Android версию игры. Обязательное условие: необходим официальный порт игры от Soviet Games (скачать его можно как из Google Play, так и со сторонних ресурсов).
— Скачать последнюю версию загрузчика по ссылке.
— Выбрать понравившийся мод и нажать на зеленую стрелочку загрузки.
— Скачиваем архив с модом со стены группы.
— Разархивируем содержимое в папку «Android/data/su.sovietgames.everlasting_summer/files/».
После завершения установки он появится в пункте «Моды» в настройках игры.
При возникновении ошибок или вылетов пишите сюда.
Как установить моды на iOS?
Есть так же несколько способов установки модов на iOS версию игры.
Обязательное условие: на вашем устройстве должен быть произведен Jailbreak.
— Скачать последнюю версию загрузчика по ссылке.
— Выбрать понравившийся мод и нажать на зеленую стрелочку загрузки.
— Скачиваем архив с модом со стены группы.
После завершения установки он появится в пункте «моды и пользовательские сценарии» в настройках игры.
Первая версия Бесконечного Лета (2008) уже в Steam Мастерской!
В моде добавлены спрайты, которые могли быть в последствии данной версии, если бы разработчики не пересмотрели свою работу.
Всем привет! Большое кол-во людей нашли свой фанатизм в известной отечественной визуальной новелле про пионерский лагерь, таинственный автобус 410-го маршрута. Но я более чем уверен, что КРАЙНЕ мало людей знают вообще про существование первой неофициальной билдовской версии «Эроге с маскотами» (знакомого названия «Бесконечное лето» ещё попросту не существовало в проекте). Данная версия вышла где-то в конце 2008 года, первого в разработке новеллы, чисто случайно, инициатором слива которого был некий Сорк, участвовавший в разработке игры. Данный слив в Рунете попросту невозможно найти почти, лишь картинки или скачать архив со старыми файлами. Благо, существует сборник IIchan Classic Fond, где были собраны различные игры анонимусов с имиджбордов от визуальных новелл до аркад. В том числе и были 2 версии старого «Бесконечного лета». В открытом доступе можно скачать публичную Демо версию, однако поиграть в репозиторий 2008 года можно в выше описанном сборнике, создатель которого Lolbot, он также был причислен к числу разработчиков «Бесконечного лета». Сам репозиторий несёт в себя совсем другой сюжет, старые спрайты персонажей, а местами в большинстве совсем другие фото, тем удивительней, ещё были кое где простые реальные фотографии, прототип лагеря. Весьма интересно было взглянуть на то, как полюбившийся продукт образовывался со временем, какой он был изначально планировавшийся. Я думаю, Вам будет интересно взглянуть на старую версию «Бесконечного лета», тем более если Вы являетесь фанатом данной новеллы. В репозитории только 2 неполноценных игровых дня, поэтому версия будет неокончательная вовсе. Приятного просмотра! Ссылки на информацию про слив и историю создания БЛ будет ниже: