Коллеги, не могу понять, почему карта (см. приложение) после 10-15 итераций ломается и крестьяне стоят.
В кратце - я заставляю бегать крестьян к самому ближнему кусту звездолиста, но после нескольких кустов они наотрез отказываются продолжать движение дальше.
Следующим этапом будет добавление чуточку рандома и генерация случайных свойств дистабилизирующих или улучшающих выживание крестьян в этом тяжелом мире.

Naadir, мне почему-то кажется, что у тебя проблема в том, что есть цветок 1 и 10 работников. И у тебя получаются записи типа:
цветок 1 - работник 10.
цветок 1 - работник 8.
цветок 1 - работник 7.
В общем, массив не отчищается при удалении предмета с карты. А ещё может быть такое, что функция pick предметов на карте, каждый раз выдает разные id предметам.
Добавил БД-индификтор предметам в первую версию поиска.
Получить ID любого предмета можно стандартной гуи-фцией valueitem. Пока что в раздумьях, как сделать адекватную матрицу, адекватно расширяемую? Или возможно её чем-то заменить?
Можно ли как-то обыграть такую структуру в war3?
За неимением мысли о матрице, сделал пока что генерацию "родства" до 4х поколений. Теперь Вы вполне можете узнать, кто был отцом, дедом и прадедом отдельно взятого юнита. См. приложенный файл. по ссылке.
`
ОЖИДАНИЕ РЕКЛАМЫ...
19
Есть ещё небольшая проблема, которую я пока не знаю как решить. Эти дебилы бегают толпой, т.к самый ближний куст - самый ближний для всех. И в общем один охватывает добычу, другие дохнут.
13
Посмотрел карту, вспомнилась моя проблема с циклами. Возможно, по мере увеличения количества объектов на карте (звездолистов и самих крестьян) цикл убивает поток выполнения.
16
DemonoiD, протестировал. Есть такое.
По поводу бегания толпой... Не всегда. Если их много, то образуется несколько групп. А в принципе -- так и должно быть, это логичное поведение каких-нибудь, ну скажем, рыбок.
Если ты хочешь, чтобы каждый крестьянин таргетился на куст, до которого сможет убежать, тебе нужно знать скорость юнита, его текущее здоровье и его убыль.
Если [Расстояние/Скорость] меньше или равно [Текущее здоровье/Убыль здоровья], то можно таргетиться на куст. Это один из примеров реализации разбиения отрядов на группы или даже на одиночек.
19
Naadir, только тут не один крестьянин, и их снова затаргетится толпа.
16
При этом твоё кастом вэлью принимает довольно физическое значение: время жизни.
DemonoiD, сейчас проверю.
19
Naadir, главное это решить проблему с циклом. Я не могу продолжать исследование крестьян, когда они просто так встают как вкопанные..
16
Ну... у меня результат чуть лучше, чем у тебя. Прерывания цикла нет. Сейчас допилю норм и выложу сюда.
19
Naadir, отлично. Следующий шаг система приоритетов. Крестьянин делает бросок кубов д100 и в зависимости от генетических шансов либо стоит, либо атакует первого попавшегося, либо бежит за едой.
16
Вот. Здесь крестьяне не тормозят. У меня доходило до 5 минут и 19-28 стабильной популяции. Чтобы они не проходили мимо ближайших предметов, добавил один ретаргет с расстояния в 500.
Тут две версии:
  • В одной крестьяне бегут к ближайшему звездолисту, но могут менять приказ.
  • Во второй крестьяне фиксируют цель-звездолист, до которого они смогут дойти, но могут заретаргетиться на другой звездолист в радиусе 500 от них.
DemonoiD, молодец, круто задумал! Будет интересно посмотреть на реализацию.
Загруженные файлы
19
Naadir, первая у меня почему-то не пашет. Вторая лагает через 5 минут.
16
Ну там не особо эффективный поиск, на самом-то деле. Я сейчас попробую оставить на час одну из них с записью в файл времени и числа крестьян. Посмотрю.
Оставлю первую.
19
Naadir, эм, одна из них, которая прогоняет все через массив - не пашет. Не знаешь в чем дело? По коду так и не сказать. Во второй, двойной цикл поиска предметов, убивающий варкрафт :)
16
На вот такую версию. У меня не лагает. Чуть-чуть оптимизировал.
С массивом у меня всё работает. Редактор версии 1.29. Сейчас попробую на ранней открыть.
У меня всё работает. Проблема на твоей стороне.
1.26а, 1.27 и 1.29 версии варкрафта с моей последней версией работали дольше 5 минут.
Вот ещё более оптимизированный вариант.
Загруженные файлы
19
Naadir, вот эта версия хорошо пашет. Спасибо :)
Но стоило мне ввести табличку для рандомного генома, все поломалось. У Вас так же?
Загруженные файлы
16
DemonoiD, я не вводил табличку генома.
Я уходил на тренировку и оставлял ту прогу.
Вот лог. Численность держится на ~30 юнитах.
Загруженные файлы
19
Naadir, у меня не пашет. Юниты отказываются ходить :/ но это и правда именно моя проблема, и я не знаю, с чем она связана
16
DemonoiD, я ввёл новый геном "Агрессивный".
Агрессивный рождается при поднятии предмета Работником с шансом 10%
Агрессивный рождается при поднятии предмета Агрессивным с шансом 50%
Работник рождается при поднятии предмета Агрессивным с шансом 50%
Работник рождается при поднятии предмета Работником с шансом 90%
Агрессивный рождается при атаке Работником с шансом 20%
Работник не рождается при атаке Работником
Агрессивный рождается при атаке Агрессивным с шансом 40%
Работник рождается при атаке Агрессивным с шансом 60%
Агрессивные восстанавливают здоровье, когда атакуют других и когда поднимают предмет
Работники восстанавливают здоровье, когда поднимают предмет
Работник имеет 5% шанс атаковать кого-то и 95% шанс брать предмет
Агрессивный имеет 95% шанс атаковать кого-то и 5% шанс брать предмет
Новая версия:
Загруженные файлы
27
у меня похожее было, когда толпа бегала за одним итемом. система
чтобы такого не было, я короче ставил на итем метку, что за ним уже идут. Когда циклом будешь перебирать, надо смотреть если ли на итеме метка, если нет, то бегом за ним.
16
Steal nerves, да это-то понятно. Проблема в том, что здесь айтемов меньше, чем потребителей. Поэтому конкуренция -- норма.
16
В общем, вот конечная версия на данный момент:
Вводить ещё один класс будет сложнее, чем до этого: нужно будет придумать ему фишку, нужно будет обработать его атаки по другим классам, нужно будет обработать его сбор предметов.
Загруженные файлы
27
почему карта (см. приложение) после 10-15 итераций ломается и крестьяне стоят.
  1. потому что не удалена руна, так как указана другая переменная, вместо manipulated item удаляется picked item. Поэтому руна была не удалена (ее не видно, но она на карте есть), но она была самой ближайшей. Короче рабы стояли около нее. Очень долго из-за неудаленного итема мучался, просто не могло быть так. Когда мало, объектов мало, откуда в ней лимит кода. А то у меня после 5-6 сборов, больше не хотели идти, стояли.
  2. нужно проверять приказ Current Order of Unit вместо Issued Order (лучше проверять координаты, я координаты юзаю, сохраняю в хэш, и при смерти вычищаю). лучше каждый раз периодически каждую 1 секунду проверять группу, не стоят ли они. А то есть те, кто могут стоять без дела. завел группу, и в нее заносил всех созданных юнитов. Мне нет нужных пикать всех
  3. если создается предмет (прям в триггере), то нужно перепроверить всех. артефакт может находится рядом, короче юнит может развернуться и подбежать к тока что заспавненному итему, нет смысла бежать за дальним.
  4. не естественно смотрится, когда целое стадо голодное дурачье бежит за ближайшей едой. Если вижу, что спереди бежит два чела, я понимаю, что не успею съесть, и пойду в другую сторону. Понимаете, на карте например 4-5 айтемов, а все бегут за одним, потому что он ближе =), это неправильно..А то и подохнет раньше, или эволюционирует в хитрое и умное. Бывает отделяются несколько челиков от группы (в моей карте), но это чисто случайно. А так бегают группами, так как пищи не много спавнится.
Загруженные файлы
19
Naadir, надо снизить % укрепления новых генов, ибо, например 25% агрессии и 75% сбора может быть выгоднее. Надо делать +-% шанс с каждым поднятием, ибо агрессия будет выгодной моделью при большом числе работников, а при малом - нет. Давать хп не за атаку, а за убийство.
Дополнительные модели поведения - ожидание (ждать пока появится предмет рядом или работник которого можно убить),;
Поведение при защите - сражаться или убегать или звать на помощь?
Возможно, засунуть при появлении работника в яйцо на 3 секунды, чтоб снизить кучность.
Возможно, записывать в БД для каждого работника радиус смены цели в зависимости от гена. У тебя сейчас константа в 500. Что выгоднее, бежать напрямик или сворачивать с дороги с каким-то радиусом?
Модель поведения крафтера - выгоднее бегать с другими или потратить время на получение предмета +к атаке/защите/скорости?
Модель поведения запаса ресурсов - хавать итем только когда он нужен. (Нужно снизить отхил от итема до 50%)
А так же, можно ввести шанс на получение одного из используемых поисков пути :) коих тут уже штуки 3.
И это только первые мысли, кои я бы сделал, если варик бы не тупил :(
В общем пока что такой концепт
Загруженные файлы
1
К сожалению не могу посмотреть прикреплённый файл, но мне интересно: что ты разрабатываешь?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.