Невероятные ощущения от переселения муравьёв из аквариума (муравьиная ферма) в генерируемый практически живой мир)
- Тайловая сетка (SoA): поверхности, ресурсы, стены – плоские массивы. Добавлены 12 типов тайлов (трава, вода, болото, камень, горы и др.) с параметрами проходимости, скорости, плодородия.
- Новая система заданий (
global.jobs_new): единый список для сбора ресурсов.max_antsвычисляется динамически:ceil(amount / carry_capacity)– к ресурсу идёт ровно столько муравьёв, сколько нужно для полного выноса. - Flowfield: переписан с учётом стоимости тайлов, строится лениво (при первом использовании), перестраивается при изменении карты. Отладка: клавиши F (поле к гнезду), R (векторная карта к выбранному ресурсу), C (карта стоимости).
Сначала генерируется тепловая карта, которая определяет расстояние между целью и каждым участком/узлом на карте.
Во-вторых, генерируется векторное поле, определяющее направление движения для достижения цели.
В-третьих, каждая частица, стремящаяся к общей цели, использует векторное поле для навигации к этой цели.
- Поведение рабочих (
scr_worker_behavior_new): возвращена проверенная логика из 0.3.7. Исправлены проблемы с преждевременным удалением заданий, «тряской» и застреванием. Сбор ресурса происходит при достижении центра клетки. - Исправлены критические ошибки: выход индексов за границы (добавлен
clamp), передача пиксельных координат вjob_build_flowfield_new, периодическое перестроение flowfield гнезда, синхронизация заданий после ручного спавна ресурсов. - UI: обновлён для одного гнезда (без привязки к цветам). Добавлены кнопки: регенерация мира (R), ручной спавн ресурсов (H), отладочные панели (L – список заданий, F/R/C – отладка).
- Оптимизация: тиковая система (обновление муравьёв раз в 4 кадра), ленивое построение flowfield, кэширование координат клетки и скорости.
Статус: система стабильна, муравьи собирают ресурсы, задания корректно обновляются/удаляются. Вдохновлён – процесс идёт. Дальше 0.3.9 (устранение недостатков, подключение всех типов муравьёв на новую карту тайлов, роение) и 0.4.0 (играбельный билд).
🐜
🧠 Краткая справка по потенциальным полям и Гауссу
В старом flowfield цель — одна точка (гнездо). Потенциальное поле (гармоническое) позволяет задать область притяжения (например, контур гнезда). Принцип:
- В каждой клетке вычисляется потенциал (решение уравнения Лапласа) с граничными условиями: на границе гнезда потенциал = 0, на препятствиях = высокий.
- Муравей двигается в сторону наименьшего потенциала (градиент).
Плюсы:
- Естественное огибание препятствий.
- Можно задать несколько «точек входа» (края гнезда).
- Поле гладкое, без дискретных направлений.
Минусы:
- Требует итерационных методов (релаксация) — дороже, чем BFS, но можно пересчитывать нечасто.
- Сложнее в реализации, чем flowfield.





Добавить комментарий