2015-11-06 7 views
0

Я создаю 2D изометрическое моделирование городского строительства, и сегодня у меня есть вопрос «наилучшей практики», не запрашивая конкретный код. Как и во всех играх по строительству города, вы можете разместить здание, дороги и так далее. Игрок может разместить здание повсюду, независимо от того, подключен ли он к дороге или нет. В дополнение к этому есть одно здание (назовите его центральным зданием), все здания должны быть соединены (по дороге). Мне нужно справиться с этим, не выполняя слишком много вычислений, которые разбивают FPS.Обработка трафика в 2D строителе города

Сейчас у меня есть работа по таймеру для каждого здания, которая проверяет, является ли одна из окруженных плиток здания дорогой. Это отлично работает, также для многих зданий, так как проверка проста. Но теперь я хотел бы проверить подключение к зданию центра. Чтобы проверить, что необходимо (по-моему) использовать что-то вроде следопыта, которое проверяет, имеет ли одна из окруженных плиток дорожное соединение с одной из окруженных плиток центрального здания. Я не могу проверить это часто, потому что это полностью разрушает FPS до 30 или ниже. Моя идея состояла в том, чтобы запустить мероприятие, если дорога была построена или уничтожена, чтобы «перераспределить» дорожное соединение. Но возникает еще одна проблема ... игрок может разрушить дорогу в середине карты, а здания действительно находятся далеко друг от друга, поэтому мне нужно найти задействованные здания, которые также могут занять слишком много времени.

Моя последняя идея заключается в создании чего-то вроде очереди таймеров и работы через эти элементы постепенно, но прежде чем я продолжу использовать метод проб и ошибок, я хотел бы попросить вас идеи.

Действительно с нетерпением жду ваших идей! Yheeky

ответ

0

Возможно, у каждого здания есть список плиток (путь), который соединяет его с центральным зданием. Затем, когда плейер случайным образом уничтожается игроком, вы можете проверить каждое здание, чтобы увидеть, пробито ли оно через эту дорожную плитку или нет.

В качестве альтернативы вы можете иметь каждый магазин плитки, для которого требуются здания, поэтому, когда плитка разрушена, у вас есть здания сразу же бросают флаги. Однако это может стать довольно грязным, но придает себя прилично вызовам очистки фона.

Оба метода довольно грязные. Возможно, вы можете сделать правило, что игрок не может размещать дороги, кроме ближайших дорог или рядом с центральным зданием. Затем, когда игрок удаляет дорожную плитку, сделайте заливку краской, которая уничтожит все отключенные дороги. Вы также можете периодически проводить выборочную проверку на плитки, чтобы убедиться, что они незаконно размещены или нет, но это не обязательно, если вы будете осторожны.

 Смежные вопросы

  • Нет связанных вопросов^_^