Давайте подробно рассмотрим логику и механики в классе GatherTaskHandler, особенно в контексте определения возможности найти лут и изменения параметров персонажа после успешного сбора ресурсов.
1. Формула и механика нахождения лута (ресурсов)
Как определяется возможность найти лут?
Возможность найти лут (ресурсы) зависит от нескольких факторов:
- Редкость ресурса (
rarity): Чем выше редкость ресурса, тем сложнее его найти. В коде редкость используется для расчета базового количества ресурсов, которое может быть найдено. - Уровень сложности задачи (
difficulty_level): Сложность задачи влияет на количество найденных ресурсов. Чем выше сложность, тем меньше ресурсов можно найти. - Характеристики персонажа: Сила, ловкость и интеллект персонажа, а также его уровень влияют на конечное количество найденных ресурсов. Чем выше эти характеристики, тем больше шансов на успешный поиск ресурсов.
Рандом и формула расчета:
Формула расчета количества найденных ресурсов учитывает все вышеупомянутые факторы. Ключевой момент — введение рандомизации через коэффициент, который меняется в диапазоне от 1.0 до 1.5 ($randomMultiplier). Это добавляет элемент случайности к результату поиска.
Количество найденных ресурсов = (Базовое количество * Коэффициент характеристик персонажа * Рандомный коэффициент).
Ниже метод, который отвечает за реализацию
protected function calculateFoundResources($resources, $task, $spentMinutes, $character)
{
$activeGatherTask = $this->getActiveGatherTask($character['id']);
$foundResources = [];
$interruptedTime = $activeGatherTask['max_duration'] - $spentMinutes;
$taskInterruptedRatio = $spentMinutes / $activeGatherTask['max_duration'];
foreach ($resources as $resource) {
// Предварительные проверки
if (!isset($resource['rarity']) || !isset($resource['level_required']) || $resource['level_required'] > $character['level']) {
continue; // Пропускаем ресурс, если нет данных о редкости или уровень персонажа недостаточен
}
// Базовое количество ресурса, исходя из редкости ресурса и уровня биома
$baseAmount = (10 - $resource['rarity']) * (11 - $activeGatherTask['difficulty_level']) * $taskInterruptedRatio;
// Коэффициент, основанный на характеристиках персонажа
$characterCoefficient = 1 + 0.1 * ($character['strength'] + $character['agility'] + $character['intellect'] + $character['level']);
// Рандомный коэффициент для добавления непредсказуемости
$randomMultiplier = rand(100, 150) / 100;
// Итоговое количество найденных ресурсов
$totalAmount = round($baseAmount * $characterCoefficient * $randomMultiplier);
// Добавляем информацию о найденных ресурсах в массив
$foundResources[] = [
'resource_id' => $resource['id'],
'amount' => max(1, $totalAmount) // Гарантируем, что минимальное количество будет 1
];
}
return $foundResources;
}
2. Изменение параметров персонажа после сбора лута
После успешного сбора ресурсов, параметры персонажа изменяются следующим образом:
🌟 Улучшение Параметров Персонажа: Подробный Гайд
Приветствуем, путешественники и искатели приключений в мирах Wild World! 🌍 Сегодня мы подробно рассмотрим, как улучшить ключевые параметры вашего героя: 🔹📈 Опыт, ❤️ Здоровье, 💪 Сила, 🤸 Ловкость, и 🧠 Интеллект.
Опыт (📈 Опыт)
Опыт вашего персонажа увеличивается с каждым найденным ресурсом и успешно выполненной задачей. Ваш опыт зависит от редкости найденных ресурсов и сложности задачи.
📝 Формула прироста опыта:
опыт = базовый опыт * сумма (количество ресурсов * редкость ресурса) * коэффициент сложности задачи
🔑 Базовый опыт — это минимальное значение, например, 0.0005. Коэффициент сложности задачи — это дополнительный множитель, который увеличивает опыт в зависимости от сложности задачи.
Здоровье (❤️ Здоровье)
Здоровье — это ваша жизненная сила. Восстановите его, используя найденные ресурсы или отдыхая.
📝 Формула прироста здоровья:
здоровье += сумма (значение здоровья за ресурс * количество таких ресурсов), но не больше максимума
💊 Различные ресурсы могут дать разное количество здоровья, например, еда увеличивает ваше здоровье на фиксированное значение.
Сила, Ловкость, Интеллект (💪 Сила, 🤸 Ловкость, 🧠 Интеллект)
Эти параметры увеличиваются в зависимости от типа и количества найденных ресурсов, а также от сложности задачи.
📝 Формула прироста параметров:
параметр += сумма (базовый прирост параметра * количество ресурсов * редкость ресурса) * коэффициент уровня
💡 Базовый прирост параметра — это значение, определенное для каждого типа ресурса и параметра. Коэффициент уровня — это дополнительный множитель, основанный на вашем текущем уровне.
🎓 Советы для Улучшения
- Исследуйте и Собирайте: Чем больше ресурсов вы найдете, тем быстрее улучшите свои параметры.
- Выбирайте Задачи Мудро: Сложные задачи дают больше опыта и улучшений параметров.
- Учитывайте Тип Ресурсов: Некоторые ресурсы особенно хорошо влияют на определенные параметры.
💬 Делитесь своими стратегиями и успехами в улучшении персонажа! Вместе мы можем открыть все секреты Wild World.
Помните: каждый шаг в Wild World приближает вас к новым вершинам. Вперед к приключениям, и пусть каждый найденный ресурс будет шагом к вашему совершенствованию!
🚀 Используйте каждую возможность для роста: Не упускайте шанс исследовать новые территории и принимать участие в различных задачах. Каждый успешно выполненный квест не только приносит ценные ресурсы, но и делает вашего персонажа сильнее, быстрее и мудрее.
🤝 Объединяйтесь с другими игроками: В Wild World сила в единстве. Совместные походы за ресурсами или выполнение задач в группе могут принести вам не только новых друзей, но и уникальные предметы, ускоряющие развитие персонажа.
🧐 Анализируйте и адаптируйтесь: Внимательно относитесь к выбору ресурсов и задач. Некоторые из них могут оказаться более выгодными для развития конкретных атрибутов вашего персонажа. Экспериментируйте и находите оптимальные стратегии развития.
📚 Изучайте мир Wild World: Чем больше вы узнаете о мире игры, тем легче вам будет найти редкие ресурсы и выполнить самые сложные задачи. Знания — это сила, и в Wild World это правило работает как нигде.
protected function updateCharacterStats($character, $foundResources, $task)
{
$enrichedFoundResources = $this->enrichFoundResourcesWithData($foundResources);
$infoAboutTask = $this->taskModel->where('id', $task['task_id'])->first();
// Пересмотренные базовые коэффициенты
$maxHealth = 100;
$baseExperienceGain = 0.0005; // Существенно снижаем базовый прирост опыта
$baseHealthGainPerFood = 0.2; // Уменьшаем прирост здоровья за единицу еды
$baseAttributeGainPerResource = 0.001; // Уменьшаем прирост атрибутов за каждый ресурс
// Инициализация переменных прироста
$experienceGain = 0;
$healthGain = 0;
$strengthGain = 0;
$agilityGain = 0;
$intellectGain = 0;
foreach ($enrichedFoundResources as $resource) {
$rarityFactor = (10 - $resource['rarity']) / 10; // Инвертируем редкость, чтобы редкие ресурсы давали больше опыта
$taskDifficultyFactor = 1 + ($infoAboutTask['difficulty_level'] / 100); // Снижаем влияние сложности задачи
// Расчет прироста опыта с учетом редкости и сложности задачи
$experienceGain += ($baseExperienceGain * $rarityFactor * $taskDifficultyFactor) * $resource['amount'];
// Расчет прироста здоровья (пример для 'food')
if ($resource['type'] === 'food') {
$healthGain += $baseHealthGainPerFood * $resource['amount'];
}
// Расчет прироста атрибутов с учетом редкости ресурса
$attributeGain = $baseAttributeGainPerResource * $rarityFactor * $resource['amount'];
$strengthGain += $attributeGain;
$agilityGain += $attributeGain;
$intellectGain += $attributeGain;
}
// Применение ограничений на максимальные значения
$newHealth = min($character['health'] + $healthGain, $maxHealth);
// Обновление данных персонажа с нормализацией прироста
$updatedCharacterData = [
'experience' => $character['experience'] + $experienceGain,
'health' => $newHealth,
'strength' => $character['strength'] + $strengthGain,
'agility' => $character['agility'] + $agilityGain,
'intellect' => $character['intellect'] + $intellectGain,
];
$this->characterModel->update($character['id'], $updatedCharacterData);
}
Заключение
Логика и механика нахождения лута и изменения параметров персонажа в игре WILDWORLD являются ключевыми элементами игрового процесса, добавляя глубину и интерес к механикам сбора ресурсов. Они не только влияют на мотивацию игроков к исследованию игрового мира и выполнению задач, но и способствуют развитию их персонажей, делая каждое приключение уникальным и вознаграждающим.
Рандомизированный элемент в поиске ресурсов гарантирует, что результаты сбора будут всегда непредсказуемыми, создавая ощущение риска и возможности. Это заставляет игроков взвешивать решения и стратегически подходить к выбору заданий в зависимости от своих текущих характеристик и нужд.
Изменение параметров персонажа после успешного сбора лута не только отражает его рост и развитие, но и напрямую влияет на игровой процесс. Улучшение характеристик позволяет браться за более сложные задачи и эффективно справляться с вызовами, открывая перед игроками новые горизонты и возможности в игре.
В целом, эти механики способствуют созданию более глубокого и захватывающего игрового опыта, мотивируя игроков продолжать исследовать, экспериментировать и прогрессировать в игре. Они служат важным инструментом для поддержания интереса и вовлеченности игроков, делая каждую игровую сессию уникальной и неповторимой.
