Добрый день. Сегодня хотел бы рассказать об игре, которая в последнее время меня сильно зацепила и в которую я наиграл уже несколько сотен часов. Речь пойдет об Against the Storm. Что же это такое? Разработчики использовали довольно необычное сочетание жанров — это градостроительный симулятор с элементами рогалика. В зависимости от выбранного уровня сложности на одну карту может уйти как 20 минут, так и 120. В чем же секрет? Игра идеально балансирует на грани: в нее приятно зайти, чтобы расслабиться...
Скрытые переменные
Даю агентам «мозг», случайный шум и защиту от «везунчиков» (AI-Evolution #5)
Добро пожаловать на следующую страницу разработки моей песочницы. В прошлый раз я оставил статью с вопросом: «Писать ли нейросети или реализовать цепочку хищник-травоядное-трава?». И все-таки решил заняться тем, ради чего проект и затевался. Поэтому начал писать «мозг» агентам. Максимально простой, который на входе принимает информацию о том, что у агента есть перед собой в зоне видимости. И хотя теорию вычисления нейросетей я примерно знаю, с построением возникли некоторые вопросы. Написал первый мозг: 3 входа, скрытый слой на 4 нейрона, 2 выхода...
Порядок под капотом и дилемма инди-разработчика (AI-Evolution #4.5)
Доброе утро! С прошлого раза я немного покопался в проекте. По логике симуляции особо ничего нового не делал — вместо этого, по аналогии с бэкендом, решил основательно «причесать» код фронтенда. В первую очередь я разгрузил функцию отрисовки игрового поля и разбил массивные, перегруженные функции на более мелкие и локальные. Пришла в голову отличная аналогия со строительством здания: сначала ты определяешь блоки и стройматериалы, рисуешь общую схему и строишь первые несколько корпусов. И только когда...
Внедряю пространственное хэширование и делю логику с физикой (AI-Evolution #4)
Добро пожаловать в на следующую страницу дневника разработки. Проект развивается, растет и сложность поведения агентов. Потихоньку навожу порядок "под капотом" проекта. В прошлый раз остановились на том, что я хотел поделить поле на ячейки. Наконец сделал пространственное хэширование, теперь поле красиво поделено на клетки. Но дело тут не только в красоте. Это значительно уменьшит нагрузку на процессор при увеличении количества объектов на поле. До этого, чтобы вычислить расстояние агенту до куста, ему нужно было считать расстояние до каждого куста...
