Эффективная структура данных или метод взаимодействия в играх с миром произвольного размера - PullRequest
1 голос
/ 31 марта 2020

Я только начал создавать ограниченную версию Agar.io в WINAPI, чтобы я мог экспериментировать с различными стилями машинного обучения, чтобы обучать ботов играть на нем. Меня всегда интересовали боты для игр, и Agar.io достаточно прост для начала (так я думал). Тем не менее, я был озадачен довольно простой проблемой эффективности, которую я не знаю, как ее решить. В Agar.io есть большой мир, заполненный клетками, мультиклеточными проигрывателями, вирусами и едой. Каждая клетка, каждый игровой тик должен проверять, ест ли она пищу, заражена ли она вирусом, или есть или съедена другой клеткой. Как я мог бы эффективно сделать этот «хит-рег», чтобы игра всегда давала правильный результат без ненужного сканирования десятков других клеток / вирусов / сгустков пищи, недостаточно близко расположенных к игроку?

Я подумал о том, чтобы иметь глобальная сеточная структура, где каждый квадрат имеет данные о том, какие ячейки и т. д. c. находятся на нем, и ячейки могут проверять только квадраты рядом с ними, но поскольку все объекты в Agar.io больше, чем один пиксель, проблемы с перекрытием здесь выглядели слишком рискованно, поэтому я расстался с этой идеей. Я сейчас застрял в моей неопытности :). Кто-нибудь может предложить лучший дизайн?

...