creator cover Анатолий Адонин
Анатолий Адонин

Анатолий Адонин 

Разработка на Python / Renpy

372subscribers

84posts

Showcase

16

About

Разрабатываю приложения и игры;
Занимаюсь 2D-3D визуализацией и анимацией;
***
Обучающий курс - Разработка на Renpy
Самоучитель по движку Renpy

32 Renpy - Стилизация текста в экранах screen

При написании текста в экране его можно подогнать под общий стиль вашей игры. Для этого используются встроенные параметры, которые можно указать после текста.
Когда параметров очень много их для удобства можно записать в столбик после двоеточия и с отступом вправо. В таком виде это более наглядно.
Все свойства для текста делятся на несколько категорий: оформление шрифта, положение и специальные эффекты. Вот наиболее часто используемые:
size - размер шрифта в пикселях (например, size 24)
color - цвет текста в формате HEX (например, color "#ffffff")
font - путь к файлу шрифта (например, font "fonts/adigianaextreme.ttf")
bold True - включает жирный шрифт
italic True - наклонный шрифт
underline True - подчёркнутый текст
strikethrough True - зачёркнутый текст
outlines [] - обводка текста, задаётся списком [толщина, цвет, смещение_x, смещение_y]. Например, outlines [(2, "#ffffff90", 1, 1 )]

31 Синтаксис экранов в Renpy (Перевод, модальность, notify)

В предыдущем уроке мы узнали о базовых элементах экранов, с помощью которых можно выводить текст и изображения. Теперь познакомимся с другими часто используемыми элементами, которые могут превратить визуальную новеллу в полноценную игру.
Конструкция нижнего подчёркивания и скобочек _() используется для пометки текста, что он должен быть переведён. По умолчанию в движке есть инструмент генерации файлов для перевода игры на другие языки. Однако его проблема в том, что он автоматически берёт весь текст только из лейблов. Если текст у нас написан в screen движок его не добавит в файлы перевода.
Чтобы текст внутри экранов также попадал в файлы перевода его помещают в скобочки с нижним подчёркиванием _("Любой текст").
Обратите внимание, что ранее при создании персонажей мы также использовали эту конструкцию по той же причине - чтобы в последствии имена героев можно было перевести на другие языки.
Заведите себе привычку всегда при написании текста в экранах сразу обрамлять его скобками и подчёркиванием. Чтобы при переводе игры вам не приходилось заново проходиться по всем файлам и проставлять скобки во всех экранах.

30 Экраны screen в Renpy

Система экранов (screen) - это, по-моему, одна из самых интересных вещей в Renpy. Благодаря экранам можно создавать различные интерфейсы, инвентари, таблицы и много чего ещё. По сути, экраны screen отвечают за всю визуальную часть движка. Всё, что мы изучали ранее и будем изучать позже так или иначе связано с экранами. Например, вывод диалогового окна, режим NVL, речевые пузыри, кнопки выбора, фоны и спрайты - всё это реализовано с помощью экранов.
Экраны представляют собой слои интерфейса, которые отображаются поверх фона и спрайтов. Они работают независимо от основного потока сценария в label, что позволяет им обновляться и реагировать на действия игрока без остановки повествования.
Чтобы создать экран, используется ключевое слово screen, за которым пишется уникальное имя экрана и необязательные аргументы в скобках. 
screen interface():
Внутри экрана с отступом вправо размещаются различные элементы интерфейса, например, картинки, текст, кнопки и др.
Экраны также как и множество разных лейбов не отображаются в игре по умолчанию. Например, чтобы попасть в определённый лейбл нужно сделать к нему прыжок (jump part_1). Чтобы отобразить созданный экран его нужно показать (show) в нужном месте и лейбле.

29 Как сделать читы в Renpy

Часто во время разработки необходимо тестировать различные элементы и главы. Но прокликивать с самого начала игры до нужного места неудобно и долго. Самый простой способ быстро перейти к нужному месту - прописать в начале скрипта команду jump.
Таким образом при старте игры из главного меню мы сразу попадаем в нужное место.
Если есть необходимость параллельно тестировать несколько разных мест в игре - можно создать меню с выборами для быстрого перехода.
Главное при компиляции готового проекта не забудьте удалить все эти прыжки и меню из начала игры.

По сути такой "чит-панели" с несколькими кнопками достаточно для любой игры и быстрого теста. Однако одновременно на экране не получится разместить много кнопок, так как они банально не поместятся. Для более продвинутой панельки можно написать свой экран со множеством кнопок для тестирования абсолютно любого элемента в игре.

28 Как исправлять ошибки и баги в Renpy

Время от времени каждый из нас допускает ошибки, из-за которых игра либо крашится, либо работает не так как было задумано. Это может быть ошибка в логике, синтаксисе или отсутствие каких-либо файлов игре.
Синтаксические ошибки возникают, когда код написан с нарушением правил языка Renpy. Это может быть пропущенная кавычка, лишний символ, неправильный отступ или неверно написанная команда. Например, если забыть закрыть кавычки в реплике, игра не сможет правильно прочитать строку.
Такие ошибки обычно обнаруживаются сразу при запуске проекта. Движок выводит сообщение с указанием файла и строки, где обнаружена проблема. Чтобы исправить ошибку, нужно внимательно проверить указанное место и убедиться, что все команды написаны правильно.
Если найти ошибку не получается, или вы не понимаете её описание на английском, которое выводится здесь же, можете нажать кнопку "Скопировать ВВ код". Затем открыть гугл-переводчик и нажать Ctrl + V. Переведённую на русский ошибку легче понять.
Если это также не даёт понимание, в чём именно проблема, откройте любую нейросеть по типу GPT, вставьте текст ошибки туда, и попросите объяснить. Как правило на этом этапе решаются 90% всех багов.
***

27 NVL-режим в Renpy

NVL-режим в Renpy является альтернативным вариантом отображения текста. Он выводит текст на весь экран сплошным массивом.
В отличие от стандартного ADV-режима, здесь текст постепенно прокручивается вверх по мере добавления новых строк.
Текстбокс для режима NVL можно найти в папке gui и переделать под стилистику своей игры. Например, заменить на изображение пергамента или планшета.
Подскажите, как сдвинуть влево или вправо , чтобы не посередине отображался?
В гуи в разделе нвл эти настройки

26 Речевые пузыри в Renpy

Ранее, чтобы сделать речевые облачка, как в комиксах, нужно было переделывать стандартные текстбоксы персонажей. Нечто подобное мы разобрали в прошлом уроке. В восьмой версии Renpy опция облачков (речевых пузырей) появилась как отдельная функция с удобным визуальным редактором для настройки каждого отдельного пузыря.
В папке gui находятся шаблоны таких облачков, их можно изменить под стиль проекта. Например, поменять цвет, добавить прозрачность или полностью переработать дизайн.
Чтобы активировать отображение реплик в виде пузырей, в описании персонажа нужно указать параметр kind=bubble. Для удобства создайте отдельных персонажей под речевые пузыри.

25 Система Multiple в Renpy - одновременные реплики персонажей

Multiple - это специальная функция в Renpy, которая позволяет отображать реплики нескольких персонажей одновременно.
Чтобы вывести сразу две фразы, достаточно дописать соответствующую команду.
Однако в таком виде обе реплики будут наложены друг на друга. Чтобы приподнять один текстбокс над другим нужно прописать для него новый стиль. В частности, расположение по координате Y.
Туториал по стилям будет написан позже, а сейчас просто скопируем стандартный стиль и переименуем его.
В таком виде вторая реплика будет приподнята над первой, как на скриншоте выше. Но выглядит это не очень красиво, так как текстбосы занимают пол экрана. В

24 Как сделать ввод имени в Renpy

Во многих играх можно встретить механику ввода имени для главного героя. В Renpy также есть функция ввода, благодаря которой можно ввести любую информацию и сохранить её в переменной.
Для этого нужно отредактировать параметры персонажей. Откройте файл character.rpy и замените имена на переменные.
Обратите внимание, что на старте игры переменные пусты, и если вы напишите реплику от имени такого персонажа, движок выдаст ошибку. Поэтому запишем в эти переменные какие-нибудь имена по умолчанию, а потом дадим игроку возможность их изменить, или оставить как есть.
Теперь на старте игры или в любом другом месте можно дать игроку вписать в переменные другие имена с помощью функции input.

23 Скрытые варианты ответов в Renpy

В предыдущем уроке мы узнали как делать разветвления событий, используя условные операторы if / elif / else. С помощью оператора if мы также можем скрывать некоторые варианты ответов в блоке меню выборов.
Например, для создания вариативности прохождения.
На примере выше каждый из вариантов ответа будет отображаться на экране только в том случае, если у героя достаточно определённых параметров (деньги, сила, интеллект).
Кроме того, можно всегда отображать все возможные варианты, но делать не кликабельными те, для которых не хватает параметров. В таком виде игрок может понять, что есть альтернативные варианты прохождения, которые на текущий момент ему недоступны.
Subscription levels3

Личный состав

$0.99 per month
Участник экспедиции

Колонист

$2.64 per month
С комфортом до Бетельгейзе

Штурман

$5.3 per month
Штурмуем геймдев - Пошаговые уроки с нуля до профи
Учимся создавать игры на Renpy
Программируем на Python
Go up