Хочу поделиться своим личным опытом как я смог быстро с помощью ИИ создать 2923 уникальных equipment предмета для своей пошаговой MMORPG Телеграм-игры по мотивам World of Warcraft:
Вот основные характеристики персонажей и мобов:
hp - запас здоровья (health points)
stamina - запас выносливости (stamina points)
physics.dmg - физический урон (physical damage)
mage.dmg - магический урон (magic damage)
physics.def - физическая защита (physical defense)
mage.def - магическая защита (magic defense)
heal - увеличивает эффект лечения от навыков и скиллов
crit.physics.dmg - шанс физического критического урона (от 1.0 до 100.0%)
crit.mage.dmg - шанс магического критического урона (от 1.0 до 100.0%)
crit.heal - шанс критического лечение (от 1 до 100%)
Как видите я все сильно упростил и у меня игровая система построена без вторичных характеристик(те без тех что могут влиять на первичные),
Для создания всех предметов я написал скрипт на питоне (не без помощи ИИ разумеется):
Логика создания всех предметов в скрипте `mmorpg_calc_stats.py` заключается в следующем:
1. **Определение слотов и характеристик**:
- Каждый слот (например, голова, шея, оружие и т.д.) имеет свои первичные характеристики (например, физический урон, магическая защита и т.д.).
- Все возможные характеристики разделены на обычные (`hp`, `physics.dmg`, `mage.dmg`, `physics.def`, `mage.def`, `heal`) и критические (`crit.physics.dmg`, `crit.mage.dmg`, `crit.heal`).
2. **Редкость предметов**:
- Предметы могут быть разных редкостей: обычный, необычный, редкий, эпический, легендарный.
- Каждая редкость определяет количество характеристик, которые могут быть на предмете (от 1 до 5).
3. **Генерация комбинаций**:
- Для каждого слота и каждой редкости генерируются все возможные комбинации характеристик.
- Для оружия учитываются дополнительные параметры: тип (одноручное, двуручное) и дистанция (ближний бой, дальний бой).
- Для колец и реликвий применяются специальные множители для увеличения значений характеристик.
4. **Расчет значений характеристик**:
- Значения характеристик рассчитываются на основе базовых значений, множителей редкости и специальных множителей для определенных слотов.
- Критические характеристики добавляются в комбинации, если это позволяет редкость предмета.
5. **Сохранение данных**:
- Все сгенерированные комбинации предметов сохраняются в JSON файл `equipment_combinations.json`.
Таким образом, скрипт создает все возможные комбинации предметов для каждого слота, учитывая редкость, тип оружия и специальные множители для определенных слотов.
А теперь представьте, сколько работы пришлось бы проделать, если бы геймдиз делал это вручную!
И еще я у себя использовать решил модель уровней предметов, те эти все пердметы могут быть любого уровня в игре, уровень автоматически пересчитывает все характеристики.
Те у меня теперь есть 292,300 предмета на 100 уровней!
Ну и по поводу баланса, это все создается через заданные первичные коэффициенты которые я могу править по необходимости, они определяют сколько характеристик есть, их первоначальные значения и как они растут.
PS: Еще генерация нейминга в зависимости от типа предмета и его характеристик я тоже сделал через скрипт, который еще учитывает род предмета и все склонения и падежи:
"Железный Шлем": "голова_обычный_1",
"Тканевая Шапка": "голова_обычный_2",
"Закаленный Капюшон": "голова_необычный_3",
"Титановая Шапка": "голова_необычный_4",
"Закаленная Шапка": "голова_необычный_5",
"Рунический Шлем": "голова_необычный_6",
"Магическая Диадема": "голова_необычный_7",
"Зачарованная Маска": "голова_необычный_8",
"Драконий Шлем Стойкости": "голова_редкий_9",
"Адамантовая Корона Защиты": "голова_редкий_10",
"Адамантовая Шапка Стража": "голова_редкий_11",
"Адамантовая Маска Неуязвимости": "голова_редкий_12",
"Драконяя Шапка Стража": "голова_редкий_13",
"Драконий Венец Стража": "голова_редкий_14",
"Мифриловый Капюшон Защиты": "голова_редкий_15",
"Превосходная Корона Стойкости": "голова_редкий_16",
и тд.
А почему просто не взять предметы из вова?
Хороший вопрос..
Механика игры у меня попроще, основная идея сделать текстовую мморпг по мотивам WoW, а не его клон.