Comments 26
Класс! Вспомнил детство и бейсик, на котором арканойда пилил этак в шестом классе. Строк в 30 вроде бы уложился, но точно не скажу )))))
Код, конечно, хорош, но
позиции AI
всё ожидал про AI почитать, как статья и закончилась...
извините что не оправдал ожиданий, про AI можно почитать тут (https://habr.com/ru/articles/774506/) и тут (https://habr.com/ru/articles/769696/)
это я читал, спасибо
Сейчас делаю вот такие штуки для НПС: объединение в поселения, добыча руды, разведение растений, обжиг руды, постройка. Но код получается довольно узко-специальный, хотелось бы большей общности и изящности. Смотрю вот разные подходы, может что и мне подойдёт.
Осторожно, тяжелые гифки
![](https://habrastorage.org/getpro/habr/upload_files/f61/bf2/780/f61bf27805b473814214fc0d05d70f3d.gif)
![](https://habrastorage.org/getpro/habr/upload_files/418/2d0/421/4182d0421aa49a7ff21e84af06d4255c.gif)
Behavior Tree используете?
какая-то дикая смесь решающих деревьев, конченных автоматов и эвристик
Лучше сразу перейти на BT если есть возможность, это возможно займет некоторое время на имплементацию, но потом вернется сторицей в виде уменьшения времени разработки поведения и простоты разработки конечных блоков. Понятно, что серебряной пули нет, но BT самое близкое к ней решение пока что, опыт UE/Unity/Godot не даст соврать
Не уверен, что тут это будет оптимально как по эффективности, так и по читабельности.
Даже для простых ситуаций, когда в соседней клеточке враг - дерево поведения может быть очень длинным. Ну да, скорее всего его надо бить. А может убегать, если мало жизней? А стоит ли - пока будешь поворачиваться - добьют? А может на полу лежит дубина получше - сначала её взять и бить? Или вдруг пол под ногами загорелся или треск в потолке и возможно пещера обвалится - нужно бежать.
А уж если НПС болтается без дела и думает чем бы заняться, там вообще миллион вариантов и всё со всем связано. Крафтить то или другое, добыть ещё руды и обжигать? А если нету поблизости нужных минералов? отправится на поиски или заняться чем-то другим?
А если представить, что НПС - это существа коллективные, они могут обмениваться вещами, помогать друг другу или мешать, разделять роли и т.д....
Все это решается приоритетами, как минимум до 10-20 активных нпс на одном треде вам не о чем беспокоиться. Плюс можно посмотреть механизм мониторов https://vimeo.com/272377974
Правильно ли я понимаю, что BT — это такой многоуровневый pattern matching? Т.е. что-то вроде
case a of
A1 -> case b of
B1 ..
A2 -> case c of
C1 ...
Только уровень вложенности сумасшедший.
А над чем работать предлагают?
Мы и сейчас иногда общаемся на форуме по ремейкам старых игр.
А что это за форум такой, не подскажете?
Какое извращение
Чем я хуже потомственного британца? Свернуть можно все, разворачивать потом будет больно. Оставшиеся 10 минут я потратил на "художества", кодом получившийся результат назвать язык не поворачивается, но оно работает.
Но для чего. Так можно почти любое количество строк впихнуть. В чём смысл обфусцировать пробелы и табы?
Никто же в здравом уме не будет ревьюить и принимать в прод такой код.
Ваш код можно уместить в одну строку, но сами понимаете:)
Условия тестового такие, какие есть и формально это можно обернуть себе на пользу. Всё можно уместить в одну строку, любой тест можно сломать. Если у вас это вызвало улыбку, значит время на статью потрачено не зря.
Кстати, наверняка для html+css+js придумали такую софтину, которая сокращает код: удаляет избыточные пробелы, коментарии, переносы строк, заменяет все названия функций на что-нибудь вроде f1, f2, ... fa, fz..., стилей на s1, s2, ..., глобальных переменных на v1, v2 и т.д. Так что остается полностью нечитаемый, но быстро парсящийся браузером набор символов. Здесь это имеет какой-то смысл
Тестовое в Firefly Studios или игра за час