О новеллах, ритм-играх и моде
Думаю, стоит начать с того, что однажды я познакомился с такой визуальной новеллой, как «Бесконечное лето». Если коротко - игра мне очень понравилась, прочёл я как всю оригинальную историю, так и многие популярные моды (7ДЛ, БКРР) настолько полностью, насколько это возможно.
После я иногда возвращался к этой игре, со временем у меня начали копиться свои идеи того, как всё могло быть. В один момент я понял, что нужно хотя бы попробовать написать свою модификацию для игры. Пусть даже очень простую. Привлечь к этому делу мне было некого и некогда - я решил делать всё сам. О самом моде тут я рассказывать не буду, этому можно удостоить отдельную мини-статью.
Уже спустя какое-то время я сел за создание обновления для модификации. Я решил релизить мод частями, под обновлением подразумевается продолжение истории, если проще, то «новая серия». Работа протекала как-то монотонно, делал я в целом одни и те же вещи, поэтому решил разнообразить игру и занять себя созданием чего-то нового. Во время создания мода я то и дело играл во всякие ритм-игры, поэтому выбор для меня тут был очевиден.
Да-да, я решил добавить ритм-игру в модификацию, мы пришли к тому, о чём эта статья!
Поиск решений
И чтобы не изобретать велосипед, я сразу же пошёл искать готовые решения по этому вопросу. Я ткнул в первую же ссылку и нашёл то, что мне и нужно было. Она была до нельзя простой – нужно упорядоченно нажимать на 4 стрелки под музыку. Реализация, или же исходный код был тоже очень простым для моего понимания.
Немного о программировании. Сам движок визуальных новелл `RenPy` написан на ЯП Python, поэтому мини-игры в ней должны быть тоже на этом языке, а точнее на `pygame`. `RenPy` на момент создания мода я знал наизусть, да и знать там особо нечего, но вот с библиотекой `pygame` мне пришлось работать впервые. По итогу ничего сложного не было - библиотека то популярная. На все вопросы я легко находил ответы в интернете, редко когда интересовался документацией.
Всё круто, но переделываем!
Если запустить мини-игру прям в том виде, в котором ты её скачиваешь, то выглядит это вот так.
Меня это никак не устраивало - я решил многое поменять. В технической части тоже были некоторые косяки, но об этом, пожалуй, не будем. Во-первых, я убрал задний фон (просто чёрный цвет), чтобы можно было вызывать игру поверх изначальной сцены. После я сдвинул саму игру немного вправо, то есть в ту сторону, с которой на обычных клавиатурах расположены стрелки. После немного поигрался с цветами, добавил возможность выводить результаты игры, чтобы после они могли повлиять на ход событий.
И всё, всего за один день я сделал ритм-игру для модификации, режим для 1-го игрока. И да, после я задумался, что это было как-то просто, поэтому я решил добавить режим для 2-х игроков.
Остальные режимы
Два игрока. Для начала вместо привычных 4-х линий я сделал 6, дал каждому из игроков по 3. Суть заключалась не в соревновании, а в командной работе, оба игрока играли на общий результат. Я раскрасил обе группы в синий и розовый и переназначил управление со стрелок на буквы, три с левой стороны `SDF` и три с правой `JKL`. Получилось то, что получилось.
Мобильная версия. Уже после обновления я решил добавить возможность сыграть в ритм-игру на телефоне.
Бесконечное лето есть на телефоне, а чтобы добавить модификацию достаточно кинуть папку с модом в любое место, в котором есть файлы игры, это может быть даже папка с сохранениями. По крайней мере так я делал на своём айфоне и у меня всё работало.
Переделав весь интерфейс, нарисовав самостоятельно его элементы (рисовать я не умею, позже вы в этом убедитесь) и самое главное – отследив нажатия по экрану на устройстве я реализовал возможность поиграть в ритм-игру даже на телефоне!
О создании сценариев
Хотелось бы ещё рассказать о создании сценариев для ритм-игры. Во время игры играет музыка, и под ритм музыки нужно нажимать кнопки. Но вот когда именно кнопки должны появляться программе объяснить очень трудно и в целом смысла это тогда не имело. Поэтому нужно было заранее прослушать песню, после с помощью простой программы набить ритм под песню, чтобы получить тайминги.
Если интересно, то программа включала песню и создавала пустой массив. По нажатию кнопки в массив отправлялось время проигрывания песни в секундах. После проигрывания песни в консоль выводился этот массив в виде длинного столбца из таймингов, который уже можно использовать в ритм-игре.
Для каждой песни, которую я предлагал сыграть игроку, мне нужно было провернуть эту операцию. В самой игре предлагалось выбрать лёгкую или сложную вариацию. При сложной нужно попасть по всем таймингам, а в лёгкой отображается каждый второй и попасть нужно только в половину. Из меню мода можно было сыграть в любую из подготовленных песен, каждую в 2-х сложностях и в 2-х режимах на выбор.
Что же получилось?
Получилась хоть и кривая, но ритм-игра, которая очень даже хорошо вписалась в модификацию. В мини-игру же играть не обязательно - она не влияла на сюжет, а лишь давала возможность впечатлить персонажа и получить некоторые достижения.
«Произошло то, чего я боялся больше всего – она попросила сыграть меня на гитаре. Когда мы разговаривали с ней на чердаке я всеми силами хотел, чтобы она мне доверяла.»
««Умею ли я играть на гитаре?» Я просто не мог ответить «Нет», тогда бы она просто встала и ушла… С другой стороны, я должен был понять сразу, что рано или поздно её настигнет идея проверить мои навыки.»
«Меня же сейчас настигнет крах. Надеяться на то, что тело молодого пионера умеет играть на гитаре, а ноты мне подскажут силы свыше? Другого выбора у меня уже нет – придётся играть.»
Надеюсь, Вам было хоть чуточку интересно. Ссылки на саму модификацию и прочие штуки я оставлю чуть ниже. Спасибо за внимание!