Привет Может есть кто из геймдизов тут, таккова задача. В игре процедурно генерированные подземелья, нужно в конце начислять очки и учитывать время за которое игрок прошел данж. Вопрос нужна формула зависимости очков от времени прохождения уровня, чем меньше затрачено времени на прохождения , тем больше начисляется очков. единственное, что мне пришло в голову - это для каждого уровня добавить среднее время необходимое на его прохождение и от этого времени уже отталкиваться Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
Можно запустить таймер в самом начале уровня. И при финишном событии ставим следующие условия: скажем если натикало 60 сек или больше - дать 2 очка, 50 - 40 сек - 5 очков, и т.д. Если не определенное количество очков нужно, а прямая зависимость от времени, то так же оперируешь с значением таймера, запущенного вначале.
Сообщение отредактировал Kzunec - Воскресенье, 27 Августа 2017, 17:25
Можно запустить таймер в самом начале уровня. И при финишном событии ставим следующие условия: скажем если натикало 60 сек или больше - дать 2 очка, 50 - 40 сек - 5 очков, и т.д. Если не определенное количество очков нужно, а прямая зависимость от времени, то так же оперируешь с значением таймера, запущенного вначале.
Я так и делаю ) У меня так для каждого уровня я в ручную устанавливаю некое среднее значение скорости прохождения уровня, а потом когда получаю значения игроков, перевожу уже в очки. Я думал может есть какая то формула, что бы все одной строкой сделать Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
А если сделать что-то такое? Для уровня устанавливаешь максимальное кол-во очков. Так же для уровня устанавливаешь сложность: легко, средне, сложно. %max_score% - максимальное кол-во очков. %time% - время прохождения в секундах. %difficult% - сложность (лёгко 1, средне 2, сложно 3)
Формула: %max_score% - (%time% / %difficult%)
Возьмём уровень, средней сложности, максимум 1000 очков. Игрок прошёл за 120 сек.
beril, Привет. Конечно, можно было бы по-больше информации о уровнях, но я исходил из того, что уровни генерируются клетками и с противниками, плюс присутствует сложность игры. Конечно, не идеально, но все же Все переменные берутся при создании уровня, так что вводить отдельно ничего не нужно.
Код
x - количество противников (шт.) xk - убито противников (шт.) y - кол-во клеток, где можно ходить (шт.) yk - пройдено клеток (шт.) d - сложность уровня (я брал 1, 2, 3) t - время прохождения, в секундах
А если сделать что-то такое? Для уровня устанавливаешь максимальное кол-во очков. Так же для уровня устанавливаешь сложность: легко, средне, сложно. %max_score% - максимальное кол-во очков. %time% - время прохождения в секундах. %difficult% - сложность (лёгко 1, средне 2, сложно 3)
Формула: %max_score% - (%time% / %difficult%)
Возьмём уровень, средней сложности, максимум 1000 очков. Игрок прошёл за 120 сек.
Да, у меня как раз нечто подобное сейчас. Видать это лучший вариант) Всем спс за внимание, походу оставлю все как есть Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
Можно взять переменную за сутки, то есть 24 часа. Посчитать сколько очков выходит за 1сек до 24ч. И уже в зависимости от прохождения, вычислять из количества очков за сутки, очки за пройденное время. 24 часа = 86400с. 10000 очков = 86400с. 86400 / 10000 = 8 очков за секунду. Уровень был пройден за 35 секунд. 35 секунд = 35*8 = 280 очков. 10000 - 280 = 9720 очков игрок получит за 35 секунд прохождения. Опираться отсюда уже следует не на среднее время прохождения за уровень, а относительно всей дневной ставки. Тут еще можно пару вычислений добавить, но это уже зависит от конкретной задачи Кубариум Rise of the dark lords
Сообщение отредактировал Эргалон - Понедельник, 28 Августа 2017, 15:16