XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
NETRAT

offline
Опыт: 83,712
Активность:
Распределения опыта между юнитами
Господа, мне бы хотелось поговорить о системе распределения опыта на поле боя. В качестве события получения опыта выбрано убийство юнита. Так вот, пускай за убийство юнита дается определенное количество опыта, теперь вопрос - каким образом распределять этот опыт?
На данный момент я вижу два варианта:
  1. Убийца получает фиксированную ставку от опыта, скажем 50%, независимо от того где он находился и сколько рядом с ним было юнитов. Оставшийся опыт, в данном случае это оставшиеся 50% распределяется между присутствовавшими на поле боя юнитами в зависимости от их удаленности от места убийства - то есть чем ближе к месту убийства, тем больше получает юнит.
  2. Полный опыт делится между всеми присутствующими на поле боя юнитами - то есть опыт так же распределяется между юнитами в зависимости от их близости к месту убийства. Сам убийца получает, скажем, в 5 раз больше опыта чем любой другой юнит находящийся на том же расстоянии от места убийства. То есть, в отличии от первого варианта, ставка опыта для убийцы нефиксированная и зависит от количества юнитов на поле боя - чем их больше, тем меньше его ставка.
В обоих вариантах если убийца - единственный кто присутствовал на поле боя, то он получает весь опыт.
*** Особенность 1: ВСЕ находящиеся на поле боя юниты получают опыт - то есть противники убийцы тоже получают опыт, правда, значительно меньше (скажем, раза в 2-3 чем союзники убийцы)
*** Особенность 2: Суммарный опыт, который был распределен никогда не превышает начальный опыт за юнита (это регулируется спец коэффициентами)
Так вот, господа, какой вариант вам больше нравится, что нравится и что не нравится. Или, возможно, у вас есть более интересный вариант - мне бы очень хотелось его услышать.
Старый 24.01.2006, 22:44
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
ммм интересный вопрос, мне лично по душе 1й
Старый 24.01.2006, 22:51
NETRAT

offline
Опыт: 83,712
Активность:
Да, я тоже сразу реализовал первый. Тут меня еще смущает первая особенность - то что опыт идет действительно ВСЕМ - то есть даже противнику, не знаю насколько правильно с точки зрения геймплея, зато реалистично
Старый 24.01.2006, 22:57
J
expert
offline
Опыт: 48,447
Активность:
Хмм, ну а мне все-таки больше понравился 3 вариант.
  1. Опыт получает тот, кто более активнее учувствовал в драке, я не знаю, как это сделать, но принципе надо так, если юнита атакуют, создается ячейка массива переменной "юнит", на протяжение всей игры к этому юниту, пока он не подохнет. При атаке, атакующий юнит вносится в туже под номером ячейку в другом по номеру массиве (unit), и будет регистрироваться, сколько он нанес повреждений в другую ячейку в в другой массив (real) того же номера, а потом юзать формулы для распределения опыта. Все это конечно трудно объяснить на словах, но я думаю что всетаки возможно зделать.

Отредактировано Jon, 24.01.2006 в 23:26.
Старый 24.01.2006, 23:07
bugmaker
invulnerable
offline
Опыт: 2,282
Активность:
лучше с SCV

bugmaker добавил:
а мне уже больше 4й нравица =), но думаю он тебе не подайдет (я его у ся в рпгэше использую):
юнит наносит урон, юнит который его наносил получает опыт (раза в 10 меньше дамага), юнит которому наносился урон получает в 3 раза меньше первого.
Старый 24.01.2006, 23:28
Iron
Листовой
offline
Опыт: 24,427
Активность:
Цитата:
юнит наносит урон, юнит который его наносил получает опыт (раза в 10 меньше дамага), юнит которому наносился урон получает в 3 раза меньше первого.

А я прндлогаю круче. Юнит наносит урон, опыт получаемый им равен ((константа опыта для типа атакуемого юнита)/const)*(урон). Так гораздо реалистичнее чем у bugmaker-а.
Т.е. если константа опыта за пехотинца равна 100, const=50, а урон героя равен 20, то герой атакующий пехотинца за одну атаку получит (100/50)*20=40 опыта.
Но чтобы было еще реальнее, можно заносить получаемый результат в массив, и давать герою суммарный опыт только после смерти юнита. Спросите:"Зачем массив?"- а затем, что герой может атаковать попеременно несколько юнитов, и каждому юниту необходимо отводить отдельную ячейку.

PS: Не с массивом геморно, даешь кэш.
Старый 25.01.2006, 00:01
NETRAT

offline
Опыт: 83,712
Активность:
Jon Да, я думал об этом - подсчитывать нанесенное количество дамака, но тут, по моему система неактуальна для нормальных карт, ибо будет лагать дико =( ну и потом, все равно юнит, который нанес решающий удар, должен (имхо) получать некий бонус за убийство.

bugmaker по-моему это более продвинутая версия третьего варианта =)

вот я и опасаюсь, что для нормальной милии карты такая вещь не подойдет



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

NETRAT добавил:
Iron разумеется кеш и только кеш, так вот я говорю про юнитов и их может быть много - неизбежны лаги при событии атаки и подсчете урона, и вообще каким образом считаем урон? (при условии, что юнитов не менее 10)
Старый 25.01.2006, 00:31
Iron
Листовой
offline
Опыт: 24,427
Активность:
NETRAT Ща уже поздно, влом делать пример, может завтра зделаю.
Старый 25.01.2006, 00:39
NETRAT

offline
Опыт: 83,712
Активность:
Iron какой пример?

NETRAT добавил:
Мне не нужен пример, мне нужны мнения и предложения
Старый 25.01.2006, 00:43
Lawliet

offline
Опыт: 6,322
Активность:
Просче давать опыт тому кто убил...
Старый 25.01.2006, 00:50
NETRAT

offline
Опыт: 83,712
Активность:
Слишком просто, поэтому неинтересно
Старый 25.01.2006, 01:06
J
expert
offline
Опыт: 48,447
Активность:
Давить опыта тому, кто убил не реалистично, так как этим способом можно воспользоваться - дерутся 2 юнита, ты ждешь из далека, когда у кого-нибудь остается мало жизней подходишь и ждешь того момента в количествах жизней, рассчитывая чтобы твой удар был фатальным, убиваешь и опыт тебе начисляется, Где реалистичность?
Давать опыта тому, кому ближе не реалистично, так как этим способом можно воспользоваться - дерутся 2 юнита, ты ждешь из далека, когда у кого-нибудь остается мало жизней подходишь в плотную, и опыт тебе начисляется, Где реалистичность?
Надо искать другой вариант.
Старый 25.01.2006, 09:14
Iron
Листовой
offline
Опыт: 24,427
Активность:
Цитата:
Iron какой пример?

Пример системы. Без лагов с >10 юнитами.
Старый 25.01.2006, 12:21
TiM
Старичок
offline
Опыт: 8,594
Активность:
5. Предлагаю давать герою опыт за удары. Пусть скажем 33% шанс будет у всех героев, что ему дадут опыта скажем 10%от его(аттакуемого) хп , или какой-нибудь спец. константы юнита.
6. Или же давать герою опыт за каждый удар, но давать мало(скажем уровень героя*1.4).
Если герой кастует спелл, то давать ему + экспу.
Если герой добивает спеллом юнита, то ему дается ++ экспа, или какой-нибудь спелл красивый типа повышение силы аттаки на некоторое время(типа летит душа на героя и когда долетает на нем bloodlust оказывается).
Это я в основном для РПГшек написал.
Старый 25.01.2006, 14:00
NETRAT

offline
Опыт: 83,712
Активность:
Еще раз напомню - я говорю не про героев а про юнитов
В-общем я реализовал вариант с подсчетом нанесенного дамака - юнит получает дамак соответственно повреждениям, которые нанес, разделенные на максимум ХП вражеского юнита и умноженное на полную экспу за этого юнита. Финальный удар дает 25% полного опыта за юнита. Система не лагает если грамотно удалять из нее триггеры.
Всем спасибо, я у знал то что хотел, действительно предыдущий вариант [cлегка] криво.
Старый 25.01.2006, 14:24
TiM
Старичок
offline
Опыт: 8,594
Активность:
тоесть юниты будут как герои но без иконки героев в углу?
Старый 25.01.2006, 14:40
NETRAT

offline
Опыт: 83,712
Активность:
нет, юниты как юниты, только апгрейдятся после набранного опыта
Старый 25.01.2006, 19:05
Toadcop

offline
Опыт: 54,313
Активность:
NETRAT коороче так кто убил давать 100% а потом вычислять от зависимости какое растояние между убицей и другом (да противникам опыт не добовлять это очень тупо !) например юнит замочил одного и на 600 от него стоит его друг а макс раст. получения опыта 1200 то ему дадут 50% опыта ну короче ты понел :)

Toadcop добавил:
NETRAT а я понял :) ты хочешь сделать систему которую я уже пол года тому назад сделал :) я назвал её UnitUpgradeSystem прикольная но публике не понравилась так как я не раскрученая персона как на пример даже ты. да если интересно работает полностью уневерсально но !
есть одна пробле с которой ты тоже столкнёшься при тестировании пример паук (ундеда) набрал уровень и потом закопалса когда он закапываетьса то его бонусы не передаюьюса ! я для етого спец функ писал а после этого работает нормально ! а про лучницу и гепогрифа можешь забыть ! вроде там каждый раз новые юниты создаютьса !!! т.е. давай делай надеюсь она понравитьса юзерам !
Старый 28.01.2006, 18:38
NETRAT

offline
Опыт: 83,712
Активность:
Toadcop гм, забавно, моя система называется точно так же - "uus" =) я не собираюсь пускать ее в свободное плавание - система для проекта, так что "непонравилось" не будет
Не очень понял что за дела с пауком - не мог бы подробнее? И что с лучницой гиппогрифа? Успокаивает то, что вряд ли юниты этого типа будут использоваться в системе... Для меня на данный момент актуальны две другие проблемы:
1. Превращение (по сути грейд) может быть прервано отдачей приказа. Вероятность попадания приказа в интервал 0-0.01 сек очень мала, тем не менее, это случается
2. На данный момент юнит удаляется из системы после смерти, однако, будучи воскрешен (пока трупик не разложился) он оказывается уже удаленным и неактивным. Видимо, придется на мертвых юнитов таймеры добавлять и считать время разложения трупа, после того только удалять
Старый 02.02.2006, 10:20
Toadcop

offline
Опыт: 54,313
Активность:
NETRAT ага... ну прикольно :) а с трупами евента нету ? (как я помню и знаю нету :( ) а жаль... а с пауками т.е. они меняютьса с помощю абилы на другого юнита т.е. там абилы (бонусы твоей системы не будут передаватьса если конечно в абиле нет флага "Типа передавать абилы" :) )
а с гипо-грифонами и лучницами ТЁМНЫЙ ЛЕС т.е. тупо можно назвать "утечкой" хотя я не уверен... еще подробней при оседлание гипо-грифа создаётьса новый юнит и наоборот т.е. всегда новые юниты !
Старый 03.02.2006, 16:37
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:29.