Wataru, Вопрос интересный. В каждой ячейке массива одна ссылка на список игроков. В каждом узле дерева четыре ссылки на узлы следующего уровня. Если на предпоследнем уровне хранить сразу четыре ссылки на списки игроков, то, в худшем случае (кто-то есть в каждой ячейке), дерево займёт на 33% больше памяти, чем массив.
Остаётся вопрос скорости. Если в квадранте (1,1) сейчас два игрока и один из них переходит в пустой квадрант (-1,-1), то надо будет создать всю цепочку узлов от корня до нового квадранта. Аналогично, если после перехода квадрант будет пуст, то может понадобится удалить всю цепочку узлов.
В общем, получается задача выбора исходя из количества квадрантов, общего количества игроков, количества движущихся игроков и частоты перехода между квадрантами. Может оказаться, что выгоднее для движущегося игрока просто пересчитывать все пары.
Wataru, Согласен. Вопрос в соотношении количества игроков и размера пространства. При заполненности каждой ячейки дерево квадрантов займёт гораздо больше места, чем простой двумерный массив, а скорость перемещения элемента в дереве будет в любом случае ниже, чем в массиве, особенно когда придётся постоянно удалять опустевшие узлы и добавлять заполняющиеся.
Тут и дерева не надо. Достаточно разбиения пространства квадратной сеткой с размером ячейки равным дальности связи. При этом для каждого игрока достаточно будет проверить игроков в его квадрате и 8 соседних.
MaxxDamage, Ну вот, у вас маршрут по умолчанию через leased81.121.33 (eth0). Если хотите, чтобы пакеты шли через 82.33.118.99 (eth2), то он должен быть маршрутом по умолчанию. Или надо добавлять отдельные маршруты для адресов, на которые надо ходить через 82.33.118.99.