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

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

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

413subscribers

116posts

Showcase and bundles

16
A bundle is a collection, compilation, playlist, or catalog of posts that saves you from searching through the blog and lets you buy the entire content series in a single click.

About

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

64 Как добавить видео в Renpy

Перед тем как добавить видео в игру, необходимо конвертировать его в формат, который поддерживает движок. Renpy использует FFmpeg для воспроизведения видео. В актуальной документации перечислены следующие видеокодеки:
AV1
VP9
VP8
Theora
MPEG-4 Part 2
MPEG-2
MPEG-1
Среди контейнеров, с которыми работает встроенный видеодекодер, указаны форматы: WebM, Matroska (MKV), Ogg, AVI и различные варианты MPEG-потоков.
 
Для конвертации вашего видео в нужный формат можно воспользоваться любым видео-редактором или онлайн. Например здесь: video-converter.com
В Renpy существует два основных способа воспроизведения видео. С помощью функции renpy.movie_cutscene(). И с помощью специального объекта Movie().
Предварительно создайте отдельную папку videos в папке game, в которую поместите все ваши видео. Затем в функцию в качестве аргумента пропишите путь до нужного ролика.
В примере выше после перехода в данный лейбл будет воспроизведён видеоролик video1.webm, расположенный в папке game/videos/. После окончания ролика выполнение сценария продолжится со следующей строчки кода.
 
По умолчанию игрок может прервать воспроизведение нажатием мыши. Поэтому данный способ удобен для вступительных роликов и сюжетных вставок, которые пользователь при необходимости может пропустить.

63 Рандом и генерация случайных чисел

На движке Renpy, как и на языке Python, есть несколько вариантов рандомизации. С некоторыми из них мы встречались в предыдущих уроках. Сегодня разберёмся, как они работают, и в каких ситуациях их можно использовать.
По сути движок берёт соответствующие функции из модуля random и использует их также как в языке Python. Так как обращение происходит непосредственно к "питону", необходимо указать соответствующие символы $ или python:
На примере выше функция рандома выбирает случайное число от 0 до 1, которое сохраняется в переменной и далее используется для определённых целей.
Кроме того, можно установить свои два числа, в диапазоне которых будет выбрано случайное число:
Обратите внимание, для этого используется отдельная функция randint, которая выбирает случайное целое число (не дробное). Как видно из примера выше, данная функция часто используется для имитации броска кубика, или для выбивания случайного числа из нужного диапазона. Например, противник может нанести случайный урон от 40 до 555.
Следующий вариант рандома - randrange, позволяет задать диапазон с помощью одного числа. То есть, движок выберет число от 0 до указанного числа.

62 Пошаговая боевая система на Renpy

Пошаговая боевая система, как понятно из названия, строится на том, что участники боя делают свои ходы по очереди. Т.е. в коде это можно представить как несколько лейблов, в каждом из которых атакует один участник, а затем ход переходит к следующему.
В таком виде противники будут бить друг друга по очереди и передавать ход дальше. Аналогичным образом можно добавить несколько противников и союзников игрока, где каждый последовательно будет делать свой ход.

61 Титры после игры в Renpy (анимация текста)

Трансформации можно применять не только к картинкам и кнопкам, но и к тексту. Его также можно заставить летать по экрану, вращаться, уменьшаться или плавно исчезать. Часто это используется для создания финальных титров, в которых можно указать всех разработчиков игры и дать ссылки на свои соц.сети.
Для начала нам нужно написать трансформ с траекторией полёта текста. Например, от нижней части экрана к верхней.
Обратите внимание, что конечная координата и общее время анимации (linear) потребуется донастроить в конце. Так как это зависит от общего объёма текста, который нужно будет переместить.

60 Трансформации в Renpy (transform)

Система трансформаций (transform) позволяет манипулировать изображениями и спрайтами. С их помощью можно перемещать, вращать и масштабировать. В предыдущем уроке мы создали анимацию шагающего на одном месте персонажа. Теперь, с помощью трансформаций, он сможет перемещаться по экрану.
При записи экрана программа захватывает с низким ФПС. В игре анимация выглядит более плавной.
 
Для создания определённой трансформации необходимо указать ключевое слово transform и придумать подходящее название. Затем, внутри трансформации нужно описать порядок действий. Где начинается анимация, сколько по времени она должна длиться, и где заканчивается.

59 Покадровая анимация в Renpy

Как следует из названия, покадровая анимация состоит из последовательности кадров, которые при быстрой смене создают эффект движения. Самый простой способ создать такую анимацию - быстро менять кадры в коде игры.
В примере выше у нас 4 кадра, на которых персонаж находится на разных позициях. С помощью смены кадров появляется эффект его движения. Эффект можно сделать более плавным, если увеличить количество кадров и уменьшить паузу между ними.

58 Кнопки выбора в Renpy (экран Choice)

За отображение кнопок выбора отвечает экран choice. Его также можно найти в файле screen.rpy. Он выводит кнопки с доступными вариантами действий и определяет, как они будут выглядеть на экране.
Когда в сценарии используется конструкция menu, Renpy автоматически передаёт варианты в экран choice, который с помощью цикла создаёт соответствующие кнопки.
По умолчанию внешний вид menu определяется несколькими элементами:
1. Изображения кнопок в папке gui/button. Вы можете заменить их на свои картинки с таким же названием.

57 Экран быстрого меню (quick menu) в Renpy

Quick Menu (быстрое меню) - это набор кнопок, который отображается в нижней части экрана во время игры. С его помощью игрок может произвести некоторые действия без необходимости открывать основное меню. Данный экран находится в файле screen.rpy.
На скриншоте выше можно увидеть, что меню отображается в зависимости от состояния переменной if quick_menu. Эта запись аналогична if quick_menu == True (если переменная quick_menu равна значению True: отобразить горизонтальный бокс).
Саму переменную можно найти чуть ниже. По умолчанию она имеет значение True. Поэтому на старте игры менюшка доступна в интерфейсе.
В определённые моменты игры быстрое меню можно скрывать и открывать, просто переключая значение переменной в состояние False / True.

56 Изменяем экраны сохранения / загрузки в Renpy

Экраны screen save и screen load, как и прочие экраны интерфейса можно найти в файле screens.rpy. Если мы посмотрим на них, то увидим, что они состоят всего из двух строк.
Tag menu добавляет экран в группу экранов главного меню. При открытии одного из них, другой с таким же тегом автоматически закрывается.
use file_slots - использует внутри этого экрана другой экран, с названием file_slots. То есть, чтобы отредактировать экраны сохранения и загрузки нам предстоит работать с экраном file_slots, в нём прописана таблица, которая раскладывает слоты сохранения и загрузки.

55 Редактируем экран Настроек в Renpy

Экран настроек screen preferences также находится в файле screens.rpy. Как и другие экраны главного меню, он имеет привязку game_menu и состоит из нескольких вложенных контейнеров, которые мы можем изменять и удалять по необходимости.
Для понимания вложенности, на скрине каждый из боксов выделен своим цветом. Сначала располагается вертикальный контейнер (белый), который содержит внутри себя два горизонтальных контейнера (красные). Каждый из горизонтальных включает в себя несколько вертикальных (желтых).
В коде эти контейнеры выглядит так:
братан, просто лучший, крутейшие уроки  burn
Subscription levels3

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

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

Колонист

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

Штурман

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