На чем сделано бесконечное лето
На чем сделано бесконечное лето
О, ты наверное новенький? Давай я расскажу, что у нас тут такое.
Сообщество посвящено отечественной визуальной новелле «Бесконечное лето»
Здесь будут выкладываться материалы по сей замечательной игре. К ним относятся как разнообразные арты, косплей, и прочее творчество, так и новости о разработке и выходе модов.
А перед тем, как приступить к отдыху, не забудьте ознакомиться с уставом нашего Лагеря!
Ну, удачной вам смены. пионеры.
1) Запрещен так называемый «вайфусрач» в комментариях. У всех нас есть свои любимицы, так давайте уважать вкусы друг друга.
2) Все, что запрещено общими правилами пикабу.
3) Политика. Оставьте обсуждения политики в специальных постах с проставленным тегом.
4) Теги. Обязательными являются теги «визуальная новелла» и «бесконечное лето». Если постите арт, то ставьте тег «арт». Если решили запостить с тегом «аниме», то ставится тег «не аниме» и «Anime art». И по поводу имен героев новеллы. Если неизвестна фамилия персонажа, то в теги ставится просто имя, ака Лена, Славя и т.д. Никаких фамилий, придуманных фанатами в модах. Так же НЕ нужно добавлять к именам героев всякие приставки по типу «Лена-БЛ» и иже с ними. Не возбраняется ставить в теги имена маскотов, с которых были взяты персонажи новеллы, ака СССР-тян, ЮВАО-тян и т.д. Отдельно по Мику хочется прояснить, что к сему персонажу надо ставить центральный тег «Hatsune Miku». Никаких Мику Маш, МашМику и прочего. Такие правила по именам обусловлены в первую очередь удобством при поиске контента внутри сообщества. Пожалуйста, не выдумывайте ненужные теги. Для всего спорного контента введен тег «Старый Лагерь» (подробности по ссылке).
5) Выкладываемый контент. ЗАПРЕЩЕНО выкладывать черновики и незаконченные работы. Давайте поддерживать в лагере достойный уровень контента. Исключениями являются работы, законченных версий которых нет долгое время, минимум месяц, или же если сам автор подтвердит, что работа закончена не будет и это финальный вариант. Так же позволено выкладывать незаконченные работы самим художникам, постящим с тегом [моё]. Не возбраняется, а даже поощряется приложить к готовой работе все этапы и черновики.
6) Правило об авторском контенте. Любой автор может заявить о своих эксклюзивных правах на генерируемый им контент. После подобного заявления все работы автора попадают под запрет постинга другими пионерами в срок до 3-х суток с момента появления работы в публичном доступе. Со списком можно ознакомиться тут.
На чем сделано бесконечное лето
Подожди, писать заклинания еще рано, сначала нужно понять, как правильно расставлять слова для эффекта
Структура файла выглядит примерно так:
Команды в блоке ВСЕГДА имеют отступ в 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
Раздел был написан Автором руководства, с использованием контента от Владя, с его личного разрешения.
Данное руководство еще не завершено, на данный момент в нем есть все необходимое для создания небольшого мода. Руководство будет дополняться.
Задавайте в комментариях свои вопросы, в процессе ответов на них, руководство будет дополняться
На чем сделано бесконечное лето
В этом руководстве ВЕСЬ СЮЖЕТ Бесконечного Лета
То есть информация обо всех Рутах и Концовках и в общем о сюжете игры.
Если после прохождения у вас остались вопросы, то прочитайте это руководство и они исчезнут, это вам я обещаю, ну а если нет, то задавайте свои вопросы в комментарии.
Желаю удачного чтение,можете заварить чай, ведь впереди долгий путь.
P.S. Также если вам не трудно поставьте положительную оценку и добавьте руководство в избранное это меня здорово мотивирует, и таким образом вы меня поддерживаете и воодушевляете сделать ещё, что-нибудь интересное.
Во-первых, настоятельно не рекомендую тем, кто ещё не прошёл все игровые руты и официальные моды, читать данный блог! Он только для элиты знающих людей! Тем более, спойлеры!
Во-вторых, прошу мододр*черов тех, кто угорел по модификациям и считает их каноничнее и важнее официальной версии, вслед за первыми покинуть сию страницу. Нет, правда, я вас предупредил, тут нет места фанфикам и пользовательским модам (ну почти), и вам не стоит меня ругать за то, что я их не принял в расчёт, «хотяследовалобы». Тем более, что я с ними не знаком.
И в-третьих, если вы ленивый, глупый, упрямый (нужное подчеркнуть), и считаете, что, не разобравшись в ситуации до конца, можно указывать автору на его ошибки и что ему делать, отправляйтесь за предыдущими. Не касается тех, кто хочет-таки разобраться, потому что ему интересно; те могут спрашивать интересующее, храня надежду на понятное объяснение. Объективная критика приветствуется.
Итак, я начинаю. Грядёт стена текста.
Вот теперь можно начинать.
Итак, что же, собственно, происходит? Сразу же, в лоб, вводим Постулат Первый [1], Состояния: Лагерь и всё, что с ним связано, квазиреально, то есть занимает промежуточную форму существования; как бы действительно есть, но не в нашей, реальной реальности. Здесь, скорее, вопрос не в том, является ли «Совёнок» сном, а чем именно является сон, что вообще можно называть сном, насколько реален он и можно ли или нет считать квазиреальным его? Я всё же считаю, что сон менее реален, чем даже квазиреальность, и, хотя со мной могут не соглашаться, такая позиция является наиболее выгодной. Действительно, несмотря на абсурдность происходящего и явные нестыковки («привезли лекарства», хотя «автобус только через неделю»), Семён всё чувствует и понимает будто наяву.
Далее, опираясь на [1], можно сформулировать состояние Семёна: раз уж действие происходит в квазиреальности, Семён в ней тоже квазиреален. Притом, Дополнение к Постулату Первому [1.1]: Семён во всех своих состояниях является самим собой, то есть независимо от происходивших с ним ситуаций, он является всё тем же Семёном. Следовательно, в лагере пребывает квазиматериальная сущность Семёна; душа, если хотите. Из этого так же следует, что остаётся действительно реальная часть Семёна, его материальное тело, на момент пребывания души в лагере находящееся в реальном мире в коматозном состоянии (кстати, ещё одно Дополнение [1.2]: Мир лагеря и мир реальный существуют как отдельные миры).
Для чего Семён перемещается в лагерь? А чёрт его знает. Да, это то, что мы не рискуем браться объяснять, ведь существует очень много предположений, зачем де всё это было нужно, многие из них имеют равные права на жизнь, и почти ни одно не объясняет должным образом, так всё-таки, зачем? Это связано с нехваткой информации о том, что же всё-таки сталось с Семёном после окончания игры. Поэтому Постулат Второй [2], Вынужденный: «Пути Господни неисповедимы». Он вводится нами затем, чтобы не ломать бесполезно головы над тем, что имеет множество равноправных решений. Впрочем, если у вас есть по-настоящему хорошая идея по данному вопросу, прошу в комментарии, но будьте готовы к несогласию.
Что же, с главным, вроде бы, разобрались, можно переходить к более детализированным частям.
Начинать я буду с рутов таких девочек, как Славя, Ульяна и Алиса, включая её альтернативную хорошую концовку, потому что они являются самыми простыми и, я бы даже сказал, заурядными рутами.
Тут, в общем, и думать особенно не нужно, во всех этих рутах, как Гуд-, так и Бэд- версиях, всё совершенно нормально, без непоняток и разрывов шаблона, единственный вопрос возникает, пожалуй, в том, как связано с происходящем в лагере будущее Семёна. Но ответ банален: руты отличаются между собой, потому что избранницы Семёна влияли на него каждая по-своему, а между Гуд- и Бэд- версиями, сделал ли Семён достаточно для того, чтоб избранница сознательно пошла ему навстречу после пробуждения (достаточно ли Семён, в свою очередь, влиял по-своему на них).
Теперь на очереди другая мысль. А чем так принципиально с точки зрения механизма переноса сущности Семёна с место на место отличается этот мир от того, в который Семён попадает обычно? Если мы подумаем, то только тем, в какое время мы туда возвращаемся. Ибо «подгрузка локации», осуществляющаяся во время сна в автобусе, есть и там, и там. Значит, состояние таких миров, как миры концовок других девочек, точно так же квазиматериально, как и мир в Гуд-Лена-рут. Говоря просто, Семён после них живёт в вымышленных мирах. Это не противоречит [3.3], так как выдуманный Семёном мир вполне мог соответствовать этому Дополнению просто по логике вещей, которой Сёма, к счастью, не пренебрегает пользоваться. Кстати, его самоубийство в плохой концовки Лены тоже происходит в вымышленном мире, поэтому можно сказать, что оно ненастоящее, так сказать, понарошку 🙂
Но по сравнению со следующим рутом Лена-рут прост как детская улыбка.
Сомневаюсь, что кто-либо из читающих это сумел представить Мику-рут, являющийся, пожалуй, самым сумасшедшим рутом из всех, как нечто, вписывающееся в Гл[/previewimg]обалСтори БЛ. Действительно, выглядит он вообще не имеющим отношения к оригинальному Совёнку, и нам пришлось сильно попотеть, выискивая его версию, не содержащую ошибок и недоговорок.
Чтобы ответить на этот вопрос, давайте обратимся к трём источникам: самому Мику-руту, Гаремной концовке и ОД-руту, который будет подробнее упомянут в нижней части данного поста.
Теперь плохое. Пойдя за голосом, мы вдруг видим оборванное повествование и обидную ачивку: «Epic Fail». Лично у меня это была первая концовка, и, честно скажу, она мне показалась ещё обиднее, чем бэд-энд Лены. Но мы не об этом. Несмотря на оборванное повествование, мы можем понять несколько вещей: Семён не смог уехать со всеми из лагеря и с ним явно не случилось ничего хорошего. Мрачный сепийный вид ворот лагеря на заставке даёт понять, что именно Совёнок или что-то, связанное с ним, виновато в случившемся. Перебирая возможные варианты случившегося с Семёном, находим только один, подходящий по всем параметрам.
Итак, впереди остаётся только один игровой рут, по сути, финальный. В нём, подготовив ситуацию, то есть осознамо, пока ещё неявно, остальные руты и скушав «запретный плод», Сёма встречается в шахтах с нэко, позже нарекая её Юлей. Понимая, что он близок к разгадке, он проводит с ней много времени, пытаясь узнать от неё, что к чему; впрочем, не особо эффективно. И позже, со всем этим трэшем с городом, нам предоставляется выбор между гаремной и каноничной (по мнению большинства фанатов и разработчиков) концовками.
В общем, гаремная концовка отвечает на некоторые вопросы, но на очереди ещё и каноничная, где всё немного по-другому.
Семён с Юлей возвращаются в лагерь, внезапно опустевший (как мы знаем, все уехали на автобусе) и вновь потерявший связь с городом. Что сталось с его обитателями, совершенно неизвестно: добрались они до исчезнувшего города и исчезли вместе с ним или же бесследно пропали где-нибудь меж двумя мирами? Впрочем, никто из них не был настоящим, иначе бы мы знали это из гаремной концовки. Теперь в этом лагере на этом витке могут существовать лишь Юля, Семён и его двойники (а на самом деле бесконечники, но не важно). От Юли за время всего рута мы узнаём только то же, что узнавали от Пионера в руте Семёна, правда, в чуть иной интерпретации, хоть смысл тот же. А вот этот как раз самый Пионер, похоже, располагает чуть более полной информацией. Он ясно говорит Семёну, что то, что он сделал, нарушило целостность этого мира, создало какой-то резонанс, выведший из строя некий лагерный механизм. Похоже, близость с реальным миром не прошла бесследно для Совёнка; возможно, гром со вспышками молний имеют прямое к этому отношение. И когда Семён попытался с Юлей уехать оттуда, много семёновских двойников «во главе» с тем Пионером последовали их примеру; между прочим, именно здесь мы находим подтверждение мысли о бесконечном самокопировании, обусловленном Постулатом [3], ибо другого объяснения их существованию нет. Впрочем, подробнее о них будет позже.
Многие считают, что на деле реальной является именно эта концовка, типа, герой же столько пережил, бла-бла-бла, ему всё объясняет его многомогущая сущность, и вообще, там в последнем самом параграфе не «почти у каждой», а «чтобы взять новую». Так вот, я говорю таким людям, что во-первых, такие аргументы не так чтобы уж и взаправду обуславливают всё это. Они могут значить совсем не то, что данное развитие событий обязательно приведёт к реальности; а например, к тому, что эту концовку авторы считают каноничной (кста