Суббота, 21 Декабря 2024, 17:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: Gnomov  
Начисление очков в зависимости от скорости прохождения уровн
berilДата: Воскресенье, 27 Августа 2017, 12:24 | Сообщение # 1
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Привет
Может есть кто из геймдизов тут, таккова задача.
В игре процедурно генерированные подземелья, нужно в конце начислять очки и учитывать время за которое игрок прошел данж. Вопрос нужна формула зависимости очков от времени прохождения уровня, чем меньше затрачено времени на прохождения , тем больше начисляется очков. единственное, что мне пришло в голову - это для каждого уровня добавить среднее время необходимое на его прохождение и от этого времени уже отталкиваться %)




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
AlexRabbitДата: Воскресенье, 27 Августа 2017, 12:31 | Сообщение # 2
старожил
Сейчас нет на сайте
А поподробнее?
KzunecДата: Воскресенье, 27 Августа 2017, 16:58 | Сообщение # 3
Indie Developer
Сейчас нет на сайте
Можно запустить таймер в самом начале уровня. И при финишном событии ставим следующие условия: скажем если натикало 60 сек или больше - дать 2 очка, 50 - 40 сек - 5 очков, и т.д.
Если не определенное количество очков нужно, а прямая зависимость от времени, то так же оперируешь с значением таймера, запущенного вначале.


Сообщение отредактировал Kzunec - Воскресенье, 27 Августа 2017, 17:25
berilДата: Понедельник, 28 Августа 2017, 10:52 | Сообщение # 4
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата Kzunec ()
Можно запустить таймер в самом начале уровня. И при финишном событии ставим следующие условия: скажем если натикало 60 сек или больше - дать 2 очка, 50 - 40 сек - 5 очков, и т.д.
Если не определенное количество очков нужно, а прямая зависимость от времени, то так же оперируешь с значением таймера, запущенного вначале.

Я так и делаю ) У меня так для каждого уровня я в ручную устанавливаю некое среднее значение скорости прохождения уровня, а потом когда получаю значения игроков, перевожу уже в очки. Я думал может есть какая то формула, что бы все одной строкой сделать :'(




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
VostruginДата: Понедельник, 28 Августа 2017, 11:19 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
А если сделать что-то такое?
Для уровня устанавливаешь максимальное кол-во очков. Так же для уровня устанавливаешь сложность: легко, средне, сложно.
%max_score% - максимальное кол-во очков.
%time% - время прохождения в секундах.
%difficult% - сложность (лёгко 1, средне 2, сложно 3)

Формула: %max_score% - (%time% / %difficult%)

Возьмём уровень, средней сложности, максимум 1000 очков. Игрок прошёл за 120 сек.
Код

1000 - (120 / 2) = 940 очков.


Тот же уровень, но высокой сложности.
Код

1000 - (120 / 3) = 960 очков.




black_houseДата: Понедельник, 28 Августа 2017, 13:14 | Сообщение # 6
участник
Сейчас нет на сайте
beril, Привет. Конечно, можно было бы по-больше информации о уровнях, но я исходил из того, что уровни генерируются клетками и с противниками, плюс присутствует сложность игры.
Конечно, не идеально, но все же :)
Все переменные берутся при создании уровня, так что вводить отдельно ничего не нужно.


Snow Dream [2d, Android] (v1.3)


Сообщение отредактировал black_house - Понедельник, 28 Августа 2017, 13:16
berilДата: Понедельник, 28 Августа 2017, 13:57 | Сообщение # 7
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата Vostrugin ()
А если сделать что-то такое?
Для уровня устанавливаешь максимальное кол-во очков. Так же для уровня устанавливаешь сложность: легко, средне, сложно.
%max_score% - максимальное кол-во очков.
%time% - время прохождения в секундах.
%difficult% - сложность (лёгко 1, средне 2, сложно 3)

Формула: %max_score% - (%time% / %difficult%)

Возьмём уровень, средней сложности, максимум 1000 очков. Игрок прошёл за 120 сек.

Да, у меня как раз нечто подобное сейчас. Видать это лучший вариант)
Всем спс за внимание, походу оставлю все как есть :D




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
ЭргалонДата: Понедельник, 28 Августа 2017, 15:07 | Сообщение # 8
Вездесущий
Сейчас нет на сайте
Можно взять переменную за сутки, то есть 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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг