Пишу изометрический движок на с ++. Я решил использовать более реалистичный подход и сделать так, чтобы стены занимали пространство между двумя плитками, а не одной плиткой целиком, как показано на рисунке ниже (как в The Sims).
Моя проблема в том, что я понятия не имею, как хранить данные, относящиеся к карте тайлов, в виде, который не является сеткой. В этой ситуации, я думаю, мне нужно будет сделать его дружественным к A *, чтобы между плитками были узлы и ребра, не разделенные стенами. Вот еще одна картина, показывающая, чего я хочу достичь:
Итак, вот вопрос (ы):
Как я должен:
- хранить всю карту, как плитки, так и стены
- оптимизировать его для рендеринга
- использовать его для A * и других алгоритмов довольно просто для реализации на простой сетке, но теперь использовать стены (ребра) для определения видимости, столкновения и т. д.?