Antropolis 0.3.8 — тайловая карта

Невероятные ощущения от переселения муравьёв из аквариума (муравьиная ферма) в генерируемый практически живой мир)

  • Тайловая сетка (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.

Опубликовано

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *