Доброго времени суток всем. Всех с наступающим.
Хотелось бы порассуждать о существующих инструментариях создания визуальных новелл и представить свой вариант движка и сопутствующих программ.
Планируется некоторый цикл подобных материалов, я изначально планировал создать тему на форуме, но подумал, что с учётом очень широкого спектра подтем будет разумнее формат блога и обсуждений в комментариях.
В середине сентября этого года мы с товарищем приступили к разработки визуальной новеллы. Уже прошло несколько ревизий полного переписывания и додумывания нужного функционала и до сих пор ещё некоторые элементы доделываются. Пришлось решать множество неочевидных на первый взгляд проблем .
Почему было принято решение писать свой движок? Есть же RenPy, TyranoBuilder, Unity (со специальными плагинами), японские движки (аля Kirikiri) и гора других очень странных "визуальных" движков в Steam-е по 1k+ рублей и в Android маркете (даже там есть).
Зададимся вопросом, почему не RenPy?
- Я ненавистник Python как языка программирования, а именно его особенностей -пробельные отступы, сущая дикость в версиях. Да и меня просто он раздражает чисто визуально. А что касается его простоты - крайне спорный момент, но многие почему-то ставят его "субъективную" простоту в плюс. Но чем он проще других языков - не совсем ясно.
- Код на язык RenPy больше напоминает действительно код, а не текст сценария. Реплики и фразы персонажа оборачиваются в кавычки, тогда как метки и элементы внутреннего синтаксиса остаются без них. Основную часть же новелл всё же представляет собой текст и как-то крайне странно, что для этого здесь нет простого способа это сделать. Плюс к тому же на каждую реплику нужно указывать персонажа, который её произносит.
Почему не TyranoBuilder, Novelty и другие подобные конструкторы/движки?
- Работал и с первым и со вторым. Насколько мне помнится они чем-то похожи по своей сути. Передвигаешь блоки с действиями в общую ленту. Проблема такого визуального подхода, что он удобен на весьма ограниченных объёмах текста. Когда текста становится много и в случае если, сценарий изначально пишется в другом формате или в другой программе - нужно выполнять много рутиных действий мышкой по перегону оттуда туда. Плюс что там, что там нет нормальной возможности кастомизации интерфейса. Возможно сейчас с этим стало лучше, но когда я знакомился с ними - такого не было. Хорошо что хоть полноэкранный режим доделали в TyranoBuilder.
Почему не Unity?
- Слишком громоздкий движок, слишком большой рантайм. Большинство дополнений для создания визуальных новелл - платные. А в то, что мне удалось поиграть (пройти, прочесть) большими возможностями не отличались, я не говорю про перемотку назад (которая кстати в том же RenPy не всегда работает), а просто о меню, прокрутке, сохранении/загрузки и прочем.
Что касается самого текста визуальной новеллы (то бишь сценария) мы пока решили пойти по пути RenPy, но с более простым и понятным синтаксисом. На данный момент у нас есть два варианта синтаксиса (старый и новый):
Первый
Второй, так называемый Razor-like (из ASP.NET-а), где команды ничем не обрамляются
В обоих случаях все реплики и фразы начинаются со знака '-' (обычная реплика) или '*' (реплика про себя), а перед ними идёт имя персонажа, который эту реплику произносит, после идёт двоеточие, в таком довольно читаемом формате изначально писался сценарий, мы просто слегка добавили дополнительный функционал сверху в виде команд.
Если совсем коротко, то у нас получается весьма неплохой движок и редактор к нему, в которых мы пытаемся сделать нашу жизнь как разработчиков гораздо проще и легче, минимум ручной работы и рутины. Из языков программирования, которыми можно будет пользоваться и расширять базовые возможности, будут Lua, MoonScript и JavaScript (на выбор).
Собственно у нас уже есть написанная новелла 18+ в раннем доступе, распространяем через Patreon и трекеры. Планирую и публичный релиз инструментария, возможно уже в январе.
В следующих же материалах мы подробно рассмотрим почему у людей возникают проблемы с RenPy, TyranoBuilder и другими движками, конструкторами, возможно на примере существующих игр. На данный момент мы с товарищем параллельно занимаемся портированием одной новеллы 18+, написанной на RenPy, которую автор забросил. Конечно, большинство проблем там - сугубо методологические (т.е. можно сделать лучше, но автор не знает как и делает так, как может). Но мы не обойдём и эту тему стороной.
На сегодня всё. Хороших праздников!
Комментарии к записи: 16
Хотелось бы следить за ходом создания такого продукта.
А насчет некоторых "прелестей" TyranoBuilder я уже писал.
Терпения и энтузиазма разработчикам.
При этом сами отступы, похоже, не смущают. В кинетическом оформлении (без вариативов, без условий) в Ren'Py вообще возможно весь скрипт (текст) держать нетабулированным. На примере же видно, что табуляция и say/think (это "-" и "*") обязательны для каждого персонажа и для каждой строчки (чем не аналог скриптовых кавычек?).
>Плюс к тому же на каждую реплику нужно указывать персонажа, который её произносит.
"""Нет, не совсем.
Для нарратора можно использовать три кавычки, обозначающие начало текста.
А также конец текста.
Единственное но, пустые строчки такой метод пропускает, в отличие от \"\" кода.
И по стандарту такое для персонажей не работает."""
Из возможных нововведений:
1. Постоянное написание полного имени персонажей - это невозможно. В большинстве движков используются автозамены с уже обозначенными стилями и полными именами, тогда как в самом скрипте указывается только краткое.
2. Ёфикация. Запятая после "Помнится". Запятая между "уважение чтобы". "Вы" в русском языке без использования Pluralis Majestatis (оно не используется, ибо оно должно идти на все обращения) не пишется с большой буквы в середине предложения. Запятая перед "как". "Готов поспорить" обрамляется запятыми, нужна запятая в том же предложении с "потому что". Пропущенная запятая перед последним "мой принц". Запятая перед "если бы они", и перед "чтобы убрать".
Не рассматривали такой вариант?
Unity сейчас мастхев движок, простой до одури, с живым комьюнити и возможностями которые можно реализовать в своем проекте.
Как например взаимодействие с популярными программами по типу Spine.
_
Чет проорал с "Большинство дополнений для создания визуальных новелл - платные." - Если ты делаешь продукт то будь готовь вложиться в него, ну на крайняк, все эти дополнения можно найти на торрентах в бесплатном доступе..
Я уже молчу о возможности создания облачной базы данных и подгрузки даже мельчайших исправлений в гугл таблице без скачивания патча обновления.
Например пользователи нашли косяк в тексте, вмнесто пересборки билда и выпуска патча, ты просто правишь тот самый текст в гугл таблице ииии бабах, он исправился при первом подключении игры к интернету без скачивания всяких там патчей.
Это лишь парочка функций из тысяч возможных.
+работа на этом движке даст хороший пласт для дальнейшей работе в гейм-деве..ибо сейчас разрабы Unity как нарасхват..
Unity - хороший движок, но он хорош для профессиональной разработки, откуда вы пришли, и где бы вам, честно говоря следовало бы остаться, не отравляя жизнь обитателям анивиза своей ахинеей. Однако, подавляющее большинство его функционала не нужно и никогда не понадобится командам энтузиастов, вроде всех вот этих фишек с патчами и интеграцией со Spine.
Ну и вообще, вкладываться в свой проект или нет - личное дело автора.
Но круче всего--написать свой движок и создать к нему авторские типы файлов (привет студии Minori).
Наверное причина такому отношению--большое количество всяческого трешака на старом добром Ренпае. Но тут дело не в инструменте, а в кривых руках.
А в итоге написал свой ренпай.
То не умею, сё не хочу, это не важно, но чтоб всё работало... С таким подходом ничего толкового не выйдет.
Всё равно придётся корпеть над кодом, всё равно придётся таскать спрайты, всё равно придётся многому учиться.
Вот если бы вопрос был из серии "Собираюсь сделать новеллу с таким-то функционалом для такой-то платформы. Какой движок подходит лучше?", то можно было бы чего-то посоветовать.
Уж простите за грубость.