Найти тему
ΩTrueMagic

Мой мини-проект "Конструктор геймплеев".

Оглавление

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

В этом конструкторе я собрал игру "Hamster Chainsaw", которая является некоторой пародией на настольную игру "Манчкин".

Об этом я и хочу рассказать.

Зачем все это?

У меня есть мечта :).

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

В РПГ играх у персонажа обычно имеется параметр "интеллект", который отвечает за способности персонажа к магии. Мне бы хотелось, чтобы способность игрока к магии определялась его реальным интеллектом, а не фейковым параметром персонажа.

Мне нравится, как различные математические структуры (группы, кольца) комбинируются друг с другом, создавая более сложные структуры. Мне хочется, чтобы игрок мог оперировать математическими объектами, как предметами, создавая сложные "заклинания".

Для этого я создал движок, в котором предметы могут комбинироваться друг с другом.

Об игре "Hamster Chainsaw"

Сразу успокою, "Hamster Chainsaw" не про математику.

Игра создана на Unity, поэтому её можно затестить прямо в браузере по ссылке.

Игра текстовая и выглядит вот так

старое доброе Unity Gui
старое доброе Unity Gui

Жанр игры можно определить, как текстовый логический кликер.

Коротко, суть игры состоит в том, что нужно ходить в рейды на монстров. Убивая монстров, игрок получает сундуки, из которых он добывает разные ништяки. Оружие и предметы можно комбинировать друг с другом, чтобы создавать более мощное оружие. Цель игры - убить босса игры Диабло.

Идея конструктора

Весь геймплей в моем конструкторе описывается несколькими текстовыми файлами.

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

Вторая часть геймплея - это описание предметов в инвентори. Их параметры и способы их комбинирования.

Первая часть геймплея. Граф. Стейт-машина.

Итак, у нас есть граф, вершины которого - это основные игровые состояния. А ребра описывают перемещения между состояниями.

Игрок начинает с некоторой отправной точки. Далее, он идет в магазин. Из магазина он возвращается домой. Из дома он отправляется в бой с монстром. В бою ход игрока чередуется с ходом противника. И так далее.

Все вышеперечисленное и есть состояния игры, которые описаны графом.

Помимо основного состояния имеется набор глобальных переменных.

глобальные переменные
глобальные переменные

Так же у игрока имеется инвентори. Это набор вложенных друг у друга предметов. Мы вернемся к нему позже.

инвентори
инвентори

Есть два типа вершин графа:

  • вершины, в которых игрок сам выбирает действие (по какому ребру графа ему двигаться)
выбор игрока
выбор игрока
  • вершины, в которых выбор происходит случайно.
случайны исход
случайны исход

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

информация о действии "подлечиться"
информация о действии "подлечиться"

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

Вторая часть геймплея. Инвентори.

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

А именно:

1. У каждого предмета есть свой Тип.

Всего в игре присутствуют три типа:

  • Оружие
  • Обоймы
  • Генераторы

2. Каждый предмет имеет набор параметров, соответствующий данному Типу.

Например, любое Оружие имеет параметры:

  • урон
  • расход маны
  • расход патронов
  • расход топлива

3. Некоторые предметы имеют "слоты" под другие предметы.

В каждый слот можно вставить только предметы определенного типа.

Например, для огнестрельного Оружия требуется указать, чем оно стреляет. Т.е. нужно вставить соответствующую Обойму.

Так же некоторые виды Оружия требуют указания источника энергии. Для этого в него нужно вставить соответствующий Генератор.

4. Параметры предмета зависят от параметров вставленных в него предметов. Эти зависимости описываются в виде формул.

Например, урон Шокера равен электрической энергии Генератора помноженной на 6.

информация о Шокере
информация о Шокере

Громоотвод вырабатывает 2 единицы электрической энергии.

информация о Громоотводе
информация о Громоотводе

Поэтому, вставив Громоотвод в Шокер

Громоотвод, вставленный в Шокер
Громоотвод, вставленный в Шокер

мы получим урон, равный 12.

информация о Шокере
информация о Шокере

5. Предметы могут иметь произвольную глубину вложенности.

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

Это создает широкий простор для фантазии и экспериментов.

Планы на будущее

  1. Хочется сделать нормальный интерфейс.

Например, сделать что-то вроде карточной игры.

-13

2. Хочется сделать еще несколько "нематематических" игр.

3. Хочется поэкспериментировать с разными "системами типов".

Я не просто так разделил геймплей на две части. Смысл в том, чтобы менять инвентори, не сильно меняя графовую составляющую.

У меня есть идеи, как модифицировать систему типов так, чтобы сделать её более пригодной под математические объекты. А именно, сделать какое-то подобие зависимых типов.

Заключение

Как я сказал, игра доступна по ссылке.

Я планирую и дальше писать о развитии проекта. Параллельно я планирую писать статьи на математические темы и пытаться интегрировать рассмотренные математические штуки в игру.

Спасибо за внимание.