Как стать автором
Обновить

Краткий гайд по созданию визуальной новеллы. Часть 1: подготовка

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров8.6K
Всего голосов 21: ↑19 и ↓2+20
Комментарии23

Комментарии 23

Жанр визуальных новелл перенасыщен низкокачественными поделками максимально, хуже только у (гипер)казуалок. Чем ваша новелла будет выделяться?

Моё преимущество в том, что моей новелле не нужно сильно выделяться =)

Как я писал выше, моя цель - протестировать как сейчас работает инди маркетинг, выход в Steam и юридическое сопровождение бизнеса в условии санкций. Поэтому у меня нет цели заработать, я могу просто делать игру для души: то, что вдохновляет меня.

Конечно, раз есть цель проверить маркетинг, то нужно продумывать и позиционирование продукта. Сейчас я отвечаю на этот вопрос так:

  • Попробуй себя в роли древнего бога - создателя всего живого

  • Азраил - бог для смертных и офисный клерк для своих собратьев

  • Множество мини-игр сделают игровой процесс увлекательней

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

Делаю любительскую визуальную новеллу в команде из двух человек (художник и сценарист/программист). Несложно догадаться, что техническая часть именно на мне. В общем, по поводу выбора движка и редактора кода могу полностью согласиться с автором. Ren’Py запускается на любом батоне напоминающем ноутбук, что для такого бедного студента как я просто подарок судьбы, ну VS Code в представлении не нуждается, отличный редактор.

И вообще аффтор молодец пиши исчо, интересно следить за разработкой. Спасибо за статью.

Спасибо! На следующей неделе будет следующий материал - про разработку, сюжет и геймдизайн =)

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

Спасибо! Скоро будет продолжение =)

Вот бы посмотреть бы исходники реального большого проекта на renpy.

Выглядит это как-то так =)

# Работа с инвентарём

init python:
    class Item:
        def __init__(self, name, image = "", cost = 1):
            self.name = name
            self.cost = cost
            self.image = image
            self.stackable = True

        def get_image(self):
            return self.image

    class Inventory:
        def __init__(self, money=0):
            self.money = money
            self.items = {}

        def buy(self, item, amount=1):
            if self.money >= item.cost * amount:
                self.money -= item.cost * amount
                self.add(item, amount)
                return True
            else:
                return False
        
        def add (self, item, amount=1):
            if self.items.get(item) == None:
                self.items.update({item: amount})
            else:
                self.items[item] += amount

        def earn(self, amount):
            self.money += amount

        def has_item(self, item):
            if item in self.items:
                return True
            else:
                return False
        
        def give_away(self, item, amount=1):
            if not self.has_item(item):
                return False
            elif self.items[item] == amount:
                del self.items[item]
            else:
                self.items[item] -= amount


    inventory = Inventory()
    # Глава 2
    ch2_strange_relic = Item("Необычная реликвия")
    # Глава 3
    ch3_shadow_shard_contract = Item("Контракт на поставку осколков тьмы")
    ch3_gravity_control = Item("Усмиритель гравитации")
    # Глава 4
    ch4_1_broken_relic = Item("Дефектная реликвия")
    ch4_2_dust_vial = Item("Фиал с пылью времён")

    # Планета 2 - Саффар
    pl2_magnetism_potion = Item("Зелье защиты от магнетизма")
    # Планета 3 - Смертриос
    pl3_fish_bucket = Item("Ведро задохликов")

И вот таких файликов несколько десятков )

Справедливости ради, это не Ren'Py, а вставки в Ren'Py на настоящем Python.

Да, конечно. Сам код на Ren'Py в моей игре на +-80% состоит из диалогов.

тут больше интересна структура проекта.
Как её делают взрослые разработчики.

"Бесконечное лето" недостаточно большое? Там, даже, всякие хитрые менюшки и мини-игры выписаны.

Достаточно большое, спасибо.
Не знала просто, что исходники есть в доступе.

А подскажите, как вы настроили интеграцию spine - renpy?

Вы пишите, что выбрали Ренпи и что с вами работают spine аниматоры. Не совсем поняла этот момент?

Вот прям как в Unity подключить Spine нельзя, но можно выгрузить анимашки из спайна в виде мувиков. Лучше всего работает, когда есть webm файл с сайд маской. Чуть хуже, когда просто прозрачный мувик и совсем плохо, когда выгружаешь анимацию в виде сиквенции. Тогда большие анимашки начинают тормозить. В коде при создании персонажа пишем:

image ... = Movie(play="...", side_mask=True)

Пример:

define az = Character('Азраил', color="#94d4ff")
image az idle = Movie(play="images/characters/Azrail_idle_SideMask.webm", side_mask=True)
image az bow = Movie(play="images/characters/Azrail_bow_SideMask.webm", side_mask=True)
image az anger = Movie(play="images/characters/Azrail_anger_SideMask.webm", side_mask=True)

Есть ещё отечественный проект INSTEAD, заточенный в основном под текстовые квесты, но всё же достаточно гибкий, чтобы на него можно было портировать даже игры с ZX Spectrum. Вы пробовали с ним познакомиться?

Не слышал раньше, спасибо за наводку! Поизучаю. На вид напомнило создание текстовых квестов для Космических рейнджеров)

Немного не в тему, а есть ли такая же доступная новичку платформа по типу RenPy, чтобы сделать игру в жанре beat'em up?

К сожалению, не встречал. Сам бы хотел такой) Все знакомые, кто делает beat'em up, обычно выбирают Unity. Если не хочется программировать и есть готовность закрыть глаза на ограничения, то можно попробовать Buildbox. Но он не очень гибкий.

Будет всем проще, если не называть визуальные новеллы играми. Разветвленность сюжета реализованная через интерактив с читателем ещё не делает произведение игрой. Всё это сильно на грани.

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

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

Так как же не нужного? =)

Мне нужно сделать эту новеллу, потому что мне это нравится. Я просто получаю удовольствие от работы над ней.

Это другое дело! Вопрос снят )))

Кстати, ещё интересное наблюдение. Игре полезно сделать сайт. Мы его нигде не продвигали, не закупали рекламу, но туда регулярно приходит трафик из поисковика, когда кто-то где-то слышал про игру и начинает гуглить её. Оказалось полезно.

https://vengeance-games.ru/azrael

Зарегистрируйтесь на Хабре, чтобы оставить комментарий